發表文章

目前顯示的是 9月, 2017的文章

使用C#開發LineBot(13) – 使用Date Time Picker讓用戶輸入日期資訊

圖片
這個月(還是上個月?忘了),Line Bot增加了DateTimePicker功能,可以在Template Message當中加入了DateTimePicker Action,當用戶點選之後,即可用手機預設的UI選擇時間日期,並讓開發人員以postback參數的方式取得用戶選擇的日期。 這功能非常有價值,因為自然語言對談的過程中,如果要讓用戶輸入日期,用戶難免自行發揮,格式千奇百怪,對於開發人員來說會是一個困擾。有了這個功能,當Line bot需要用戶輸入日期時,不僅格式統一,且使用者輸入時也可以少按一些,更為方便。 使用此功能不難,您只需要建立一個Template Message,並指定Action的類型為DateTimePicker即可: 上面程式碼當中(A)的位置,就是建立所需要的DateTimePickerAction,而(B)所指定的參數mode,則是跳出時間日期選擇器的類型,可以是date/time/datetime其中之一。 範例中其他的程式碼都跟一般的TemplateMessage建立沒兩樣,完成後發送出訊息,就會看到類似底下這樣的畫面: 一旦用戶選定值並按下『傳送』之後,我們就可以透過WebAPI(WebHook)取得的postback參數來收到這個值,程式碼如下: 請留意上圖中(A)的部分,您可以在收取到的訊息的postback物件中,取得Params底下的datetime/date/time屬性,這個屬性會依照先前你在Action中指定的類型,被填入相對應的值。 例如,剛才我們建立Action時,第一個action是mode=time這個類型,因此,當用戶點選該action,Line會跳出時間選擇框讓用戶選擇時間,用戶選定後,Line bot就會產生一個postback,因此我們的後端WebAPI被觸發,同時間ReceivedMessage.events[0].postback.Params.time會被賦予用戶選擇的值: 整個操作的順序大致如上圖所示。 透過這個功能,當Line bot需要用戶輸入日期時,就更加的方便了,可以預期的,未來不管是GPS座標位置、或是更複雜的選擇項目,都可以透過類似的機制來完成,非常讓人期待。 別忘了 LineBotSDK請升級到 0.6.0-beta 完整程式碼請參考: https://github.com/is