Facebook Messenger 機器人

這邊算是當初自己在弄FB機器人的時候找的所有資料跟經驗的彙整

當然,當初在找資料的時候有很多資料都是當初FB機器人才剛出來的時候的文章

到今年API版本已經更新到v2.9了,也加上很多安全設置,比如說 webhook 一定要 https 加密協定

那就開始一步步來搞定FB機器人吧~

一開始先到 Facebook for developers 開發者專區新增一個應用程式

依照FB的步驟就可以新增一個應用程式,這應該很簡單沒有問題,新增完成後可以在”我的應用程式“中看到剛剛新增的應用程式,點進去就會看到下方的畫面,然後要開始新增”產品“,說實在我真的不懂為什麼FB要稱之為產品,說功能不是更清楚嗎ˊ_>ˋ?

Messenger 機器人要的功能有兩個,一個就是 Messenger 另一個是 Webhooks,兩個都要新增,就點後方的”開始使用“就會新增功能了!

接下來就可以先到 FB 的 Github 上面抓專案下來用,FB 的專案是用nodejs寫的,如果是自架主機要記得安裝nodejs~而這邊我是自己自架主機的方式運作

接著開啟 node/config/default.json 如下圖

這邊要把必要的資料貼上去

1.appSecret    ==>在主控板頁面中的應用程式密鑰
2.pageAccessToken  ==>在Messenger頁面裡面的權杖產生標籤,選擇你要運作的粉絲專頁並取得權杖
3.validationToken ==>這個就隨便設定囉,這類似帳號的密碼,FB跟你的伺服器溝通的暗號(?)
4.serverURL     ==>這邊是你的程式的網址位置,依照自己的設定!

接下來到你的主機上面的 node 資料夾中先執行指令 “npm install“,執行完成後會看到類似樹狀圖的文字,接下來設定完成後就執行指令 “npm start“,如果正常執行就會看到回應 “Node app is running on port 5000“(PS:這邊建議使用screen套件執行,避免因為ssh關閉後程式也會跟著終止,screen可以將程序移至後台背景執行)

確定有運作之後呢~要有 Apache 跟 SSL 加密,畢竟 FB 已經強制規定 Webhook 一定要 SSL 加密才能

Apache 就自行安裝吧~SSL證書的話就使用 Certbot (Let’s Encrypt) 的免費加密服務~

然後呢~先到網址上查看 FB 的機器人有沒有運作

在上面設定的 serverURL (這邊我使用 fb-bot.kttsite.com/)

如果有運作就開啟到這個網址 http://fb-bot.kttsite.com:5000/webhook

看看是不是網頁有回應 ” Forbidden ” ,有的話表示有正常運作!

沒有的話記得…防火牆有沒有開啟 5000 port !可以先開啟之後會關閉!

然後到 Apache 中設定以下,記得要使用 SSL 加密哦!

SSLProxyEngine on
ProxyPass /fb_api http://fb-bot.kttsite.com:5000/webhook
ProxyPassReverse /fb_api http://fb-bot.kttsite.com:5000/webhook
SetEnv force-proxy-request-1.0 “1”
SetEnv proxy-nokeepalive “1”

ProxyPass 跟 ProxyPassReverse 這兩個請各位自行設定!

所以設定完成後直接瀏覽 https://fb-bot.kttsite.com/fb_api

就可以看到同樣效果,然後記得要把防火牆的 5000 port 關掉,只讓自己主機可以訪問!

回到 Facebook for developers 新增 Webhook

主要就只要設定 網址跟驗證權杖,驗證權杖是啥?就是在 node/config/default.json中設定的validationToken 這邊一定要一樣哦!不一樣的話就無法驗證通過哦!

如果驗證通過就會變成下圖這樣,顯示是完成!如果不對的話網址後面會有 紅色X 可以看為什麼會錯誤!然後在下方選擇你的粉絲專頁並訂閱

接下來就是到粉絲專頁傳送訊息拉!

 

正常運作的話你打什麼字他就會回復什麼

後續的判斷、讀取等等就自行修改app.js中的內容囉

發表迴響