進度條

聊天機器人 Chatbot 只能聊天?可以訂單的客服機器人是怎麼做的?讓我們先給你點概念吧!(Line, Facebook)

Q&A早已不是Chatbot的主要應用了,客製化來增加與客戶黏著度,才是開發上主要的課題。

作者: 進度條編輯群 更新日期:

聊天機器人Chatbot,是透過對話或文字,進行即時交談的一種開發應用程式,目前廣泛運用在即時通訊平台如Line, Facebook等,主要的目的是透過關鍵對話中的關鍵字擷取,來達到自動回覆的目的,比如說客服諮詢、商品資訊與庫存回覆等等。所以bot可以說是一種新型態的智慧客服。

 

 

adult-artificial-intelligence-bot-1020325.jpg

 

 

但事實上,Chatbot可以實踐的應用場景,並不只局限在關鍵字擷取與資料庫搜索,而是在訂閱服務場景的衍生,舉凡Facebook bot可以使用訂閱訊息的方式,來分享各種如新聞、時事等資訊,而電商也可以透過bot的開發,來傳遞重要訊息,如訂單配送狀態、重要消息、以及會員提示訊息等。


 

故Q&A早就已不再是Chatbot的主要應用場景,如何透過客製化的bot,來增加產品與客戶的黏著度,才是bot開發上最主要的課題。像是最常見的氣象機器人,或是飲食熱量紀錄等,都是bot的新型態應用。

 

 

而國內外也有許多電商,透過bot的建置結合自然語言分析,完成許多更高階的服務應用,像荷蘭皇家航空透過與FB Message合作,打造利用bot完成航班資訊查詢、訂票,甚至是登機的自動化體驗,並進一步的提供景點、餐廳推薦等。也有零售商透過bot的打造,推廣產品的促銷資訊並完成訂單,這些多元的應用場景,都在敘說著Chatbot未來的可能性。

 

artificial-intelligence-automation-bookcase-1329068.jpg

 

然而聊天機器人是用怎樣的技術來實現的呢?

 

我們可以用Line 開發者 Message API 的這張圖來介紹

 

 

 

先消毒一下,因為此篇沒有要很完整的探討Line chat bot可以做到怎樣的功能,或是如何做到前面所提出的流行的趨勢。所以後面不會有「照著做你也會」的程式教學。但是會提到些技術上面的關聯性,以及可能的延伸方向。接下來的討論也不是針對單一 Line 的Chat bot,所以如果跟真實串接步驟有出入還請見諒。

 

 

以結論來說,你只要會基本的Web API Server 操作與建制,你就可以建立Chat bot。這個Server你可以用各種不同的程式語言框架完成,甚至WordPress也可以利用 WP REST API 來完成。
 

(當然Ruby on Rails 絕對是可以做到的,也很多人在這樣使用,純前端就沒辦法了)
 

上圖的文字翻譯成程式步驟的話,大概會是下面的意思。



1. 首先你要有一台伺服器主機,它至少需要有IP可以被訪問,或是已經有網域Domain name指向它。Line 或是 Facebook 等公司只是在你設定完以後把客戶訊息轉發給你,並不提供處理的訊息方式。 意思就是他的伺服器會利用你給的API Endpoint URL 發訊息給你的Server,內容包含客戶的訊息。當然,這個Endpoint URL ”不見得“可以隨便定名稱,要看服務商的規定。
 

 

2. 你必須要在 Line 或是 facebook 上有一個帳戶或是特殊帳戶,例如Line你必須要是 Line 官方帳號,Facebook 必須要是粉絲團。不然它沒辦法將你的API Server的URL 綁定,也不知道該發誰的訊息給你。

 


3. 客戶發訊息後就會轉送到你的Server,並且等待你的回應。但是他不會等待你一輩子,所以雖然你有時間處理客戶的文字,不過時間可能不是很充裕,所以沒辦法做個很複雜的資料分析,基本上都是一開始就設定好了。例如你可以設定當碰到「Hi」的時候,你就說「你好」或是回他一張貼圖之類的。像Line, Facebook等包含表情貼圖的服務其實圖片都是儲存在客戶端,所以你只要發送特定字元串就可以驅動了,不需要真的把整張圖發過去。

 

 

4. 回應的時候就要照著每家特定的格式包裝訊息後再送出去。

 

所以最簡單的做法就是API Server 串好以後,做String split 之類的動作,然後拿裡面的詞去預設的Key-Value 表查,查到後就回應特定的 "Value"。不過這樣通常會比較呆板或是碰上雞同鴨講的情況。


所以還有一種常見的方式就是要求使用者使用自訂的格式來詢問問題或執行動作。例如下訂單。如果沒有規範的話,很容易出現 「紅茶 +1」,「紅茶半糖少冰」, 「紅茶、我要半糖少冰」這樣不受限的格式。真的要暸解語意並不是真的那麼簡單。所以強迫使用者使用固定格式是最簡單的方法。

 


不過經驗上,太過於強迫其實使用者體驗不是很好,使用者最討厭看的就是說明書。因此常見的手法是設定超過一種以上的格式,然後只公布"一種"。其他的雖然也會反應,而且容錯率高,但是不公布。不公佈的原因有很多,例如規矩太多種其實就是讓人無所適從,另外常寫程式的就會知道容錯率高後面代表的就是會耗費多餘的硬體資源來運算。如果大家都驅動到最消耗效能的格式,那可能就會需要額外的預算投入硬體資源。


當然這些規矩也可以是動態的,也就是經由一段時間統計結果改變判斷規定得排序等級或是甚至改變格式。例如一開始的時候你可能以為大家都習慣用「紅茶半糖少冰 +1」,結果最多人使用的格式是「紅茶 x1 半糖 少冰」。你就可以改第二種為主要判斷,第一種為次要判斷。這樣的動態調整有時候就可以省下很多運算的資源。不過如果格式是有公佈的話,那就還要考慮使用者願不願意重新記憶。

 

此外,Key-Value的結構非常適合NoSQL,例如常見用來當作Cache的Redis就是很適合做這樣的角色。但是如果要做數據分析的話就要真的將資料儲存起來,因此關聯性資料庫還是必要的。所以較複雜的運用上除了「接收訊息」「切分訊息」「取得回應」「回覆訊息」的程式外,還可能會有常駐程式在動態更新Redis的內容。


因此可能會變成以下的情況


1.  Server 接收到訊息
2. 將訊息傳遞給另外的內部程式儲存,避免儲存造成的時間延遲
    (分散式架構下會有多台主機,可以開一台主要處理這些行為)
3. 切分資訊後判讀內容。
4. 從Cache 中讀取對應
5. 如果是執行命令形式可能就會一樣發出去給平行程式去處理避免超時,所以對應可能會是「訂單處理中」而非直接「訂單完成」,因為回覆訊息的時間點可能程式還沒執行完成。所以有可能在這個位置你做的就是用Worker等外部程式再發「非同步」的HTTP Request到真正執行訂單的Server。
6. 回覆訊息


然後會有另外一個程式常態性的跑資料分析,然後更新Cache內容,同時也永久儲存備份避免Cache被清除。



因此Chatbot 其實可以很簡單也可以很麻煩的去實作,主要還是要看你的運用與使用者體驗要到哪種程度。
 


 

blur-bot-boxes-678308.jpg

 

來個結論。導入bot,除了是降低客服成本的解決方案外,結合數據分析與人工智慧,更可以打造多元行銷的應用場景,而像Line與FB也都提供了開源資源,來降低開發時程與成本。對中小企業而言,Chatbot的即時性與便利性,絕對是提升產品競爭力上,不可或缺的重要要素。


 

接下來就是廣告時間了


上面提到的這些應用手法其實不是Chatbot才會用到,非同步概念、分散式架構、讀寫分離、資料快取是一般網站優化就非常常用的手法。我們的課程目前雖然沒有直接以Chatbot作為直接範例,但是「手法概念」課程裡面都有包含。


有興趣的話可以參考看看。

Linux雲端伺服器,用AWS暸解Apache與Nginx (基本分散式架構)
https://progressbar.tw/courses/13
 

快速開發,從頭教起的Ruby on Rails後端之旅 (包含API Server 建置與 購物網站)
https://progressbar.tw/courses/3


WordPress - 從頭教起的網站架設 (包含API Server 建置與 WooCommerce 購物網站)
https://progressbar.tw/courses/10


 

最後再推一下我們的服務:

如果你覺得要考慮的地方很多太麻煩,想要雇用專家來幫你

我們有邀請了一些網頁設計專家,有需要可以聯絡他們喔!

(進度條因為業務繁忙的關係,所以目前是沒有在接案架設網站。)

點我進專家列表


 


最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!

Small logo

進度條編輯群

進度條編輯團隊