在上一篇 如何添加facebook messenger聊天外掛到自己的網站 我們知道了如何將聊天外掛加入到自己的網站,這篇則會實作自動回覆訊息的功能。

網路上有不少關於facebook messenger 自動回覆的第三方應用,可以透過它們的服務實現自動回覆的功能(例如:AutoChat 的 Andter Bot)。使用這些服務的好處是即使不會寫程式的使用者也能使用。


不過,今天的文章不會提到如何使用這些第三方應用服務,而是會告訴大家如何實作一個facebook messenger 自動回覆功能。

當然,要實做這個功能您可能需要一點點PHP程式的知識。(真的只要會一點點就行~)


如果不想太麻煩,可以參考這篇

免寫程式建立 facebook messenger 自動回覆機器人


在開始之前,您需要先建立一個 facebook app應用程式。(如果不會建立的話,請先參閱上一篇 點這裡)


事前準備

(1).有提供PHP伺服器的虛擬主機VPS

(2).有https的網域

facebook messenger 自動回覆實作

(一).在facebook app 添加一個Messenger產品

(二).設定Webhooks

(三).在您的伺服器添加自動回覆的程式代碼


設定 Messenger 產品

設定facebook app Messenger產品

添加一個Messenger產品後,我們找到權杖產生的部分,並選擇粉絲專頁,讓應用服務產生出存取權杖。

產生粉絲專頁權杖

應該會跳出一個授權的頁面,點選以您的身分繼續

1519707236292324.jpg

然後,會再出現一個是否授權粉絲頁管理權限給此應用服務的確認通知

授權應用程式APP管理粉絲專頁

點下確認授權後,就會看到產生如下圖的存取權杖。

產生授權權杖

接著下來,我們要設定Webhooks的部分。在Messenger產品找到Webhooks並點選設定WebHooks

設定webhooks


會看到如下圖的彈掉視窗,設定方式可以參考圖中的設定。

1519705197000.jpg

回呼網址必須為有效頁面

1.在提交前要先在您的伺服器建立對應的處理頁面(參考腳本)。

2.該頁面網址必須為https


處理頁面的參考腳本

1519709033770.jpg


驗證成功後,便可在左方產品的部分看到多了一個Webhooks(下圖1位置)(先別理它),接下來我們一樣在Messenger的Webhooks找到選擇粉絲專頁(下圖2位置)讓webhooks訂閱您的粉絲專頁。

webhooks訂閱粉絲專頁

選擇粉絲專頁並訂閱

1519709279751.JPG

訂閱成功

webhooks訂閱成功

建立自動回覆的程式腳本(PHP實作)

開始進入重頭戲,在這邊只會簡單的演示自動回覆如何實作。您可以直接下載下方的範例去做二次開發,例如導入深度學習的程式,或建立視覺介面或搭配資料庫應用...。

PHP自動回覆腳本下載

下載範例後,程式大約可拆解成五個部分。

(一).webhooks驗證

這個部分等同於上一個範例檔,這階段基本上只會用到粉絲專頁存取權杖的部分(請替換成您自己的存取權杖)。不過,保險起見還是保留此部分的代碼。

d01.jpg

(二).解析messenger獲取的訊息

如果有訊息傳遞的話,我們會收到 json 格式的資料,在這邊只擷取出等下會用到的兩個主要參數。(訊息發送者收到的訊息)

解析messenger訊息

(三).判斷是否有收到訊息

此部分會特地解說,是因為之前Aidec在寫代碼時,未判斷資料串內是否有訊息欄位的參數,導致收到一筆訊息後會造成無窮迴圈。總共收到一萬多封回覆,手機響個不停,最終必須得重啟服務器與刪掉應用。

研判應該是每次回傳訊息後,fb又會自動發送feedback。導致回傳訊息,fb發送feedback又觸發系統回覆訊息,又發送feedback又回覆訊息...。

d03.jpg

(四).判斷回覆的內容

此部分應該可視為整個代碼的核心吧~這邊只是用簡單的判斷是回覆內容。如果有需求可自行改寫此部分,例如導入AI自然語言、深度學習之類的...

讓回覆更加精準、更有意思...

d04.jpg

(五).將回覆訊息回傳給facebook

這邊使用curl,將我們要回覆的訊息回傳給facebook。回傳的格式一樣是json。

d05.jpg


基本上到這邊就完工啦~ 才怪!!

Messenger 的應用程式審查

我們的大魔王出現了,這邊我一定要先抱怨一下,Aidec在這個階段大概審查了6、7次才審查通過。(原因在於它們的審查人員覺得我的bot回覆不像是bot回覆)

也許你會問,為什麼一定要做審查呢? 因為沒有通過審查的話,就只有管理員能收到自動回覆。其他的用戶輸入訊息的話,根本不會觸發程式。

Messenger應用審查


先點選上圖1將pages_messaging項目提交到審查,接著確認是否有添加應用程式圖示。再來點上圖3 Add Details 填寫審查資訊

pages_messaging審查

在上圖1的位置選擇您的粉絲專頁,接著選擇上圖2位置的那個選項。

為什麼要選上圖二呢? 在Aidec多次審查後,發現到使用第二個選項比較容易審查通過。之前想說我明明就有提供Bot所以要選擇第一個選項,但是偏偏就是會審不過。

所以,還是用第二個選項吧~別折騰自己了。


填寫完畢後,儲存提交進行審查。大概等一下就會有審查系統測試您的Bot應用了。估計大約一天內,就會收到通知告知是否有通過審查。


那.......就祝各位審查順利通過啦~ 






文章轉載或引用,請先告知並保留原文出處與連結!!(單純分享或非營利的只需保留原文出處,不用告知)

原文連結:
https://blog.aidec.tw/post/facebook-messenger-auto-reply-chatbot-use-php