摘要:所以我們需要先將建立完成,因為上面給了的網址因此建立同名路由一旦設定了若要完全移除就是要讓死掉。上敘動作完成之後,我們就完成前置作業了。
流程
準備環境
使用 ngrok 取得 https 網址
建立與設定 Facebook App 與粉絲團
建立 webhook GET API
設定 Facebook App webhook
實作 webhook POST API 產生對話
準備由於 Facebook bot 在執行 API 溝通的時候需要使用 SSL 協定即網址要是 https,為了在本地端開發方便。
因此我們需要使用 ngrok 來協助我們產生一個 https 的網址並傳回我們的機器。當然很多文章會介紹您使用 cloudflare 但這邊為了方便開發於是使用另外一種 ssh tunnel 的方式來解決
註冊並登入 ngrok
下載並安裝 ngrok
完成安裝 ngrok 憑證的流程
# 安裝方式:可以下載檔案並放置到 /usr/lcoal/bin 或者使用 brew $ brew cask install ngrok # 登入後會看到 ngrok 提供的驗證指令 $ ngrok authtoken [your_token] # 開始使用 $ ngrok http [port]
啟動之後畫面如下:
建立 Facebook App 與粉絲專頁官方教學
建立好 App 與粉絲團之後接下來為了設定 webhook,網址的部分請給定 ngrok 的網址,例如
https://[hash_code].ngrok.io/webhook。而 token 則是您自訂任意的字串,稍後需要在 API 中使用驗證。
因為設定 webhook 網址時,facebook 會發一個 request 給測試該網址是否正常運作,如果不正確的話,那就沒辦法進入下一階段了。
所以我們需要先將 GET API 建立完成,因為上面給了 webhook 的網址因此建立同名路由
app.get("/webhook/", function (req, res) { if (req.query["hub.verify_token"] === "") { res.send(req.query["hub.challenge"]); } res.send("Error, wrong validation token"); })
一旦設定了若要完全移除就是要讓 API 死掉 8H。
上敘動作完成之後,我們就完成前置作業了。接著下來就是實作與機器人對談的部分
var express = require("express") var bodyParser = require("body-parser") var request = require("request") var app = express() var token = "" var facebookApi = "https://graph.facebook.com/v2.6/me/messages" app.use(bodyParser.urlencoded({ extended: true })) app.use(bodyParser.json()) app.get("/", function (req, res) { res.send("Hi, server") }) app.get("/webhook/", function (req, res) { if (req.query["hub.verify_token"] === "abcd") { res.send(req.query["hub.challenge"]); } res.send("Error, wrong validation token"); }) app.post("/webhook/", function (req, res) { console.log(req.body.entry[0]) var messages = req.body.entry[0].messaging for (var i = 0; i < messages.length; i++) { var event = messages[i] var sender = event.sender.id if (event.message && event.message.text) { var text = event.message.text sendTextMessage(sender, text) } } res.sendStatus(200) }) app.listen(8080, function () { console.log("Listen on port 8080") }) /** * Functions */ function sendTextMessage (sender, text) { messageData = { text: text } request({ url: facebookApi, qs: { access_token: token }, method: "POST", json: { recipient: { id: sender }, message: messageData } }, function (err, res, body) { if (err) console.log("Error sending message: ", err) else if (res.body.error) console.log("Error: ", res.body.error) }) }
到此我們就完成了一個簡單的 Facebook BOT 應用。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/80209.html
摘要:為了了解被這種木馬感染的地區分布情況,我們分析了相關檢測部分的運行狀況。受到感染影響最嚴重的區域為中南美的哥倫比亞委內瑞拉秘魯墨西哥阿根廷以及亞洲的菲利賓越南和歐洲的波蘭。通信協議目前發現的服務器有。響應結構采用以分割的字符串數組的形式。 在最近幾個星期里的AVAST惡意樣本分析名單中,Win32/64:Napolar擁有極高的文件和網絡屏蔽率。另外,我們發現了被冠以Solarbot名...
摘要:月,谷歌宣布要開發驅動的,即谷歌助理。由于最近機器學習和有了巨大進展,人工智能現在已經成為可能。人工智能會采用迭代和反饋回路來自我發展,并趨于完美。這種的獎勵函數用于深度強化學習算法先簡單稱之為情感智能不可能被輕而易舉地量化。 今年三月,微軟CEO Satya Nadella談到現在的行業趨勢是更普遍地使用人類語言與計算設備交互,他將這一趨勢稱為對話即平臺(conversationas a ...
摘要:接下來我們將會更具體的說明是什麼東西和這傢伙會怎麼解決這些問題,並且列出目前開發中一些令人興奮的功能。這個功能甚至還沒有一個瀏覽器支援。完整的清單請查閱目前還未被寫入規範,意思是這邊提到任何內容極有可能會改變。 譯者:其實...我想說這可能是最令我感到興奮..但又害怕頭痛的功能... 附上原文連結 你曾經想要使用某個 CSS 的新功能,但是最後卻因為這個功能瀏覽器還未全面支援而放棄了嗎...
摘要:本文經授權轉自社區推薦一份很棒的。前往觀看跟著一起成為更好的開發者 本文經授權轉自 PHPHub 社區 推薦一份很棒的 PPT。 前往觀看:跟著 Laravel5.1 一起 成為更好的 PHP 開發者.pdf showImg(https://segmentfault.com/img/remote/1460000006781396);
摘要:原文出處持續整合持續交付這篇文章將一步一步介紹如何使用與來完成持續整合與持續交付的開發流程。前言什麼是持續整合持續交付持續整合持續交付,簡稱,具體介紹可以參考山姆鍋對持續整合持續部署持續交付的定義這篇文章。 原文出處:DevOps:持續整合&持續交付(Docker、CircleCI、AWS) showImg(https://segmentfault.com/img/bVlxh...
閱讀 955·2019-08-30 14:24
閱讀 987·2019-08-30 14:13
閱讀 1799·2019-08-29 17:21
閱讀 2661·2019-08-29 13:44
閱讀 1654·2019-08-29 11:04
閱讀 438·2019-08-26 10:44
閱讀 2564·2019-08-23 14:04
閱讀 908·2019-08-23 12:08