.NET6 C#, LineBot, Line Messaging API, C#, dotnet core
Hello 各位好,今天要在訊息介紹的中間插播 Line Action Objects,會在這邊插播的原因是因為剩下的 Template、Flex Message 也都是互動式的訊息,必須先將 Action Objects 介紹完後才能製作這些訊息呢~不過這一篇的實作不會進行測試,這些 actions 的測試留到下一篇一起進行,那就開始吧!
今天要介紹的 Action Object 有 :
Postback action 觸發後,Line 會將 action 內的 data 內容透過 postback webhook event 送至伺服器,則可以根據 Data 內容作出回應。
namespace LineBotMessage.Dtos
{
public class ActionDto
{
public string Type { get; set; }
public string? Label { get; set; }
//Postback action.
public string? Data { get; set; }
public string? DisplayText { get; set; }
public string? InputOption { get; set; }
public string? FillInText { get; set; }
}
}
Message action 跟上一篇的 Imagemap message action 一樣是讓使用者傳送設定好的文字訊息到 line bot 聊天室,這樣就可以透過 Webhook 接收事件用收到的關鍵字對使用者作出回應。
在 ActionDto 中新增屬性
//Message action.
public string? Text { get; set; }
Uri Action 顧名思義就是開啟設定好的連結,跟上一篇 Imagemap 一樣可以使用 Line 提供的一系列 url schema。
在 ActionDto 中新增屬性
//Uri action.
public string? Uri { get; set; }
public UriActionAltUriDto? AltUri { get; set; }
在 ActionDto.cs 下方新增 Class
public class UriActionAltUriDto
{
public string Desktop { get; set; }
}
Datetime picker 動作執行後會開啟一個時間選擇器,使用者選好時間送出後 Line 會透過 Postback webhook event 將使用者選擇的時間傳送到我們伺服器。
在設定 Initial、Max、Min 值時有格式需要遵守
在 ActionDto 中新增屬性
// datetime picker action
public string? Mode { get; set; }
public string? Initial { get; set; }
public string? Max { get; set; }
public string? Min { get; set; }
此動作執行後能夠開器使用者的 Line 相機,使用者拍照後即可將照片直接傳進 Line bot 聊天室。
** 因沒有多餘屬性則不需宣告。 **
此動作執行後能夠開啟使用者的 Line 相簿,使用者可直接選擇照片傳送至 Line bot 聊天室。
** 因沒有多餘屬性則不需宣告。 **
動作執行後使用者會開啟位置視窗,使用者能夠傳送位置訊息至 Line bot 聊天室。
** 因沒有多餘屬性則不需宣告。 **
public static class ActionTypeEnum
{
public const string Postback = "postback";
public const string Message = "message";
public const string Uri = "uri";
public const string DatetimePicker = "datetimepicker";
public const string Camera = "camera";
public const string CameraRoll = "cameraRoll";
public const string Location = "location";
public const string RichMenuSwitch = "richmenuswitch";
}
public static class PostbackInputOptionEnum
{
public const string CloseRichMenu = "closeRichMenu";
public const string OpenRichMenu = "openRichMenu";
public const string OpenKeyboard = "openKeyboard";
public const string OpenVoice = "openVoice";
}
public static class DatetimePickerModeEnum
{
public const string Date = "date";
public const string Time = "time";
public const string Datetime = "datetime";
}
Label 屬性的用途是在某些訊息中會將 Label 的文字內容作為按鈕文字顯示出來,不過如各位所見,每個訊息格式都有不同要求與效果,所以這部分就留到介紹訊息時再一起測試。
Line Action Objects 的介紹就到這邊了,本系列 Line Bot 接下來會介紹的Template Message、Flex Message、Rich Menu 等類型,也都會搭配這篇介紹的 action objects 來處理事件及回應的動作。另外,action objects 還有一個 rich menu switch action,不過 rich menu switch action 只能在 rich menu 裡面觸發執行,放在訊息內沒有作用,所以就等到介紹 rich menu 時再說明囉!
接著,要介紹的內容就是之前在說明 messages 型態時沒有完整宣告的 BaseMessage,
其中缺少了 LINE Messages 常見的 common property,所以下一篇就來回頭補充說明什麼是 Message common Property以及該如何的運用 !!
如果想要參考今天範例程式碼的部份,下面是 Git Repo 連結,方便大家參考。
好開心好開心 照著做就有一個完整且區分好class的line機器人~
另外Datetime Picker Action 可以補上
// datetime picker action
public string? Mode { get; set; }
public string? Initial { get; set; }
public string? Max { get; set; }
public string? Min { get; set; }
收到~我也將內容補充進文章中!