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

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


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

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


在開始之前,您需要先建立一個 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應用了。估計大約一天內,就會收到通知告知是否有通過審查。


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






文章轉載或引用,請保留原文出處,並添加原文連結 !!3Q