.NET6 C#, LineBot, Line Messaging API, C#, dotnet core
Hello 各位好,接下來要介紹的是 Template Message,Template 共有 4 種類型,分別為 Buttons、Confirm、Carousel、Image Carousel,我預計會將這些內容拆成兩篇來寫,所以呢,今天就先介紹 Buttons & Confirm Template 吧。
** Template Message 都無法在電腦版上顯示,只會顯示 AltText 屬性的內容 **
Buttons Template 顧名思義就是提供按鈕的模板訊。
按鈕模板的組成由上到下分為 4 個部分,分別是 縮圖、標題、內文、按鈕,其中只有 內文與按鈕是必填項,縮圖與標題可有可無。
這張圖展示了不同設定時縮圖的樣子,當然如果圖片長寬比與 Line 文件說明的相同就會剛好地放進縮圖區中 (訊息截圖比例沒有調整過)
首先在 MessageEnum.cs 中宣告新的 Enum
public static class TemplateTypeEnum
{
public const string Buttons = "buttons";
public const string Confirm = "confirm";
public const string Carousel = "carousel";
public const string ImageCarousel = "image_carousel";
}
public static class TemplateImageAspectRatioEnum
{
public const string Rectangle = "rectangle";
public const string Square = "square";
}
public static class TemplateImageSizeEnum
{
public const string Cover = "cover";
public const string Contain = "contain";
}
在 Dtos/Messages 資料夾中新增 TemplateMessageDto.cs
using LineBotMessage.Enum;
namespace LineBotMessage.Dtos
{
// 使用泛型,方便使用不同的 Template
public class TemplateMessageDto<T> : BaseMessageDto
{
public TemplateMessageDto()
{
Type = MessageTypeEnum.Template;
}
public string AltText { get; set; }
public T Template { get; set; }
}
public class ButtonsTemplateDto
{
public string Type { get; set; } = TemplateTypeEnum.Buttons;
public string Text { get; set; }
public List<ActionDto>? Actions { get; set; }
public string? ThumbnailImageUrl { get; set; }
public string? ImageAspectRatio { get; set; }
public string? ImageBackgroundColor { get; set; }
public string? Title { get; set; }
public string? DefaultAction { get; set; }
}
}
在 LineBotService -> ReceiveMessageWebhookEvent function 添加新的關鍵字回覆內容
// 關鍵字 : "Buttons"
if (eventDto.Message.Text == "Buttons")
{
replyMessage = new ReplyMessageRequestDto<TemplateMessageDto<ButtonsTemplateDto>>
{
ReplyToken = eventDto.ReplyToken,
Messages = new List<TemplateMessageDto<ButtonsTemplateDto>>
{
new TemplateMessageDto<ButtonsTemplateDto>
{
AltText = "這是按鈕模板訊息",
Template = new ButtonsTemplateDto
{
// 此處使用的是 Imgur 上圖片的絕對路徑
ThumbnailImageUrl = "https://i.imgur.com/CP6ywwc.jpg",
ImageAspectRatio = TemplateImageAspectRatioEnum.Rectangle,
ImageSize = TemplateImageSizeEnum.Cover,
Title = "親愛的用戶您好,歡迎您使用本美食推薦系統",
Text = "請選擇今天想吃的主食,系統會推薦附近的餐廳給您。",
Actions = new List<ActionDto>
{
new ActionDto
{
Type = ActionTypeEnum.Postback,
Data = "foodType=sushi",
Label = "壽司",
DisplayText = "壽司"
},
new ActionDto
{
Type = ActionTypeEnum.Postback,
Data = "foodType=hot-pot",
Label = "火鍋",
DisplayText = "火鍋"
},
new ActionDto
{
Type = ActionTypeEnum.Postback,
Data = "foodType=steak",
Label = "牛排",
DisplayText = "牛排"
},
new ActionDto
{
Type = ActionTypeEnum.Postback,
Data = "foodType=next",
Label = "下一個",
DisplayText = "下一個"
}
}
}
}
}
};
}
傳送關鍵字 "Buttons" 後收到回覆訊息。
Confirm Template 非常單純,組成只有一個 text 內文與兩顆按扭,用途大多是給使用者回答 Yes or No 或是二選一的問題。
由一個 Text 和 2 個 action 組成,action array 中第一個 action 會是左邊的按鈕,第二個 action 會是右邊的按鈕
在 TemplateMessageDto.cs 中新增 class
public class ConfirmTemplateDto
{
public string Type { get; set; } = TemplateTypeEnum.Confirm;
public string Text { get; set; }
public List<ActionDto>? Actions { get; set; }
}
在 LineBotService -> ReceiveMessageWebhookEvent function 添加新的關鍵字回覆內容
if (eventDto.Message.Text == "Confirm")
{
replyMessage = new ReplyMessageRequestDto<TemplateMessageDto<ConfirmTemplateDto>>
{
ReplyToken = eventDto.ReplyToken,
Messages = new List<TemplateMessageDto<ConfirmTemplateDto>>
{
new TemplateMessageDto<ConfirmTemplateDto>
{
AltText = "這是確認模組訊息",
Template = new ConfirmTemplateDto
{
Text = "請問您是否喜歡本產品?\n(產品編號123)",
Actions = new List<ActionDto>
{
new ActionDto
{
Type = ActionTypeEnum.Postback,
Data = "id=123&like=yes",
Label = "喜歡",
DisplayText = "喜歡",
},
new ActionDto
{
Type = ActionTypeEnum.Postback,
Data = "id=123&like=no",
Label = "不喜歡",
DisplayText = "不喜歡",
}
}
}
}
}
};
}
傳送關鍵字 "Confirm" 後收到的回覆訊息。
雖然當初就是覺得會有點多才把 template 的部分切成兩篇來介紹,但怎麼覺得切開來之後的篇幅跟前幾篇也沒差多少啊哈哈,又寫完一篇了還是得撒花慶祝一下,不知道各位有沒有什麼問題都歡迎留言~
下一篇要介紹的就是剩下的兩個 Carousel 和 Image Carousle,是 4 種 template 中比較重要也比較實用的存在,敬請期待!
如果想要參考今天範例程式碼的部份,下面是 Git Repo 連結,方便大家參考。
Day13_Buttons&Confirm Template Message