2017年9月28日 星期四

關於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/isdaviddong/LineBot_DateTimePicker

------------------
相關課程: http://www.studyhost.tw/NewCourses/LineBot
LineBotSDK : https://www.nuget.org/packages/LineBotSDK
如果需要即時取得更多相關訊息,可按這裡加入FB專頁。若這篇文章對您有所幫助,請幫我們分享出去,謝謝您的支持。

1 則留言:

匿名 提到...

請問您發佈的LinebotSDK License屬於那種類型?在Nuget和Readme文書上沒有想過說明。