搜尋餐廳 Facebook Messenger bot 改善互動體驗

使用messenger bot提供的快速回覆等等功能,改善使用者體驗

7/25參加了在五倍紅寶石舉辦的Ruby默默會,這次分享的主題是Chatbot,剛好自己也有稍微摸索過,所以蠻有興趣,聽到不少有趣的經驗,及實際作法如Machine Learning建置等,獲益良多

參考臨時講者larry82大大的分享 (KerKer|幹話瘦身機器人作者,忘記本名只好寫ptt帳號XD),發現Facebook Messenger Bot實在提供了不少方便與互動的模式及訊息模組:

  1. 快速回覆
  2. 快速回覆的傳送地點按鈕
  3. Webview (前陣子試用過)

我之前寫過搜尋餐廳的Messenger bot,剛好可以結合這些互動模式,來提升使用者體驗

餐廳搜尋的Facebook Bot


開始改善Bot

Bot問候語

為了增進使用者體驗,使用者剛進入對話視窗的時候,可以提供預設的問候語句及開始使用按鈕,可參考Facebook文件,加入歡迎文字到Bot的方式如下

curl -X POST -H “Content-Type: application/json” -d ‘{“setting_type”:”greeting”,”greeting”:{“text”:”你的歡迎文字”}}’ “https://graph.facebook.com/v2.6/me/thread_settings?access_token=PAGE_ACCESS_TOKEN"

開始使用按鈕

curl -X POST -H "Content-Type: application/json" -d '{ 
"get_started":{
"payload":"你自訂的payload"
}
}' "https://graph.facebook.com/v2.6/me/messenger_profile?access_token=PAGE_ACCESS_TOKEN"

成功訊息

{“result”:”success”}%

快速回覆

這個模式實在是太方便了,透過快速回覆,系統提供預先設定好的選項,幾乎不用打字,就可以引導使用者完成整個流程

quick reply

傳送地點按鈕

由於我需要經緯度來查詢附近的餐廳,這個按鈕也是非常的方便,我不必再提醒使用者,需要從左下角的+號點進去裡面,再選擇地點…

location button

Webview

終究還是會有比較複雜的部分,透過網頁一次完成會比較方便&直觀,Messenger Bot提供不跳轉的方式來呈現網頁,大大加強使用者體驗

messenger bot webview

Bot審查提交成功

終於通過審查

之前提交了好幾次還錄了影片,就是無法通過審核,我想應該是因為缺少互動的關係吧,這次加入快速回覆等等互動模式後,當天早上送出,下午就審核完了!效率真不錯,終於讓所有人都可以使用,不用再把facebook帳號加入測試人員

ToDo

目前剩下想改進的部分就是效能問題了,雖然使用AWS free tier也沒什麼好強求的,但是在能力範圍內還是有可以提升的東西

Redis (完成)

即使是free tier,從2013以後AWS就也有提供ElastiCache的服務,將部分功能放到redis,就可以減少db的讀取寫入並且提升效能

Puma Server

當初為了快速&方便架設,暫且使用了Passenger,若換成Puma並善加利用Multi-Threaded,應該可以進一步提升server反應速度

回應時間

目前搜尋的整體時間花費還是要到3~4秒左右,透過refactoring可以再降低一點時間。不過這還算小事,據我測試,電腦版Messenger與行動裝置的Messenger,收到訊息的時間並不完全同步,電腦版最快,行動裝置可以慢2~5秒左右,實在是非常奇妙的事,目前還找不出原因

總結

目前這個project,在使用上還是偏向功能型的Bot,目前對Ruby默默會當天講者之一:蒼時弦也大大提到的Machine Learning相關技術,也頗感興趣,自己主觀的認為,能夠”聊天”的Bot,才算是真正的Bot,未來會再找時間往這個領域鑽研

A single golf clap? Or a long standing ovation?

By clapping more or less, you can signal to us which stories really stand out.