首頁 >web前端 >js教程 >使用Node和Heroku構建Facebook聊天機器人

使用Node和Heroku構建Facebook聊天機器人

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌原創
2025-02-17 10:52:14811瀏覽

構建一個使用 Node.js 和 Heroku 的 Facebook 聊天機器人,由 Joan Yin 和 Camilo Reyes 進行了同行評審。感謝所有 SitePoint 的同行評審員,使 SitePoint 的內容達到最佳狀態!

Building a Facebook Chat Bot with Node and Heroku

在去年的 f8 大會上,Facebook 推出了 Messenger 平台,使開發者能夠創建能夠與 Messenger 上或 Facebook 頁面上的人進行對話的機器人。借助機器人,應用程序所有者可以通過提供個性化和交互式通信來更好地與用戶互動,這種通信可以擴展到大眾。自推出以來,企業和應用程序所有者對聊天機器人表現出了極大的興趣。在公告發布三個月後,據估計該平台上已經構建了 11,000 個機器人。

聊天機器人不僅使企業和應用程序所有者受益。這些機器人的用戶可以享受眾多服務,例如:

  • 獲取即時客戶支持
  • 預訂航班
  • 購買電影票
  • 獲取 Netflix 電影推薦
  • 獲取天氣預報
  • 關注新聞
  • 獲取穿衣建議
  • 根據手頭的食材獲得晚餐創意
  • 娛樂

目前對聊天機器人的興趣和吸引力是顯而易見的,隨著人工智能技術的改進,機器人將越來越擅長與用戶互動。

在本文中,我們將探討如何創建一個 Facebook 聊天機器人,該機器人可以代表 Facebook 頁面通過 Messenger 與用戶互動。我們將構建一個機器人,它可以向用戶提供有關他們指定的電影的不同詳細信息。

關鍵要點

  • 使用 Node.js 和 Heroku 部署 Facebook 聊天機器人涉及設置一個服務器來與 Facebook Graph API 交互,並配置 webhook 端點來處理消息。
  • 構建簡單的基於規則的聊天機器人不需要基本的 AI 或機器學習知識,儘管集成 NLP 可以增強機器人自然地與用戶交互的能力。
  • Heroku 平台用於部署,因為它開箱即用地支持 HTTPS,這是 Facebook webhook 驗證所必需的。
  • Heroku 中的環境變量對於保護 API 令牌和敏感數據至關重要,確保這些詳細信息不會硬編碼到應用程序的源代碼中。
  • Facebook Messenger 平台允許創建豐富的用戶體驗,其功能包括歡迎屏幕和“開始”按鈕,可以配置這些功能來啟動交互。
  • 託管在 mLab 上的 MongoDB 用於管理用戶數據和會話狀態,確保聊天機器人可以有效地跟踪和響應正在進行的用戶交互。
  • 為了讓聊天機器人上線並與公眾互動,它必須經過並通過 Facebook 的審查流程,以確保符合平台政策和安全標準。

我需要了解 AI 才能構建機器人嗎?

熟練掌握 AI 當然會有所幫助,尤其是在構建複雜的機器人方面,但並非必需。您當然可以在不了解機器學習的情況下構建機器人。

您可以構建兩種類型的機器人。一種是基於一組規則,另一種是使用機器學習。前者在其可以提供的交互方面受到限制。它只能響應特定命令。這就是我們將要構建的機器人類型。

使用機器學習的機器人,您可以獲得更好的用戶交互。用戶可以像在人與人互動中那樣更自然地與機器人互動,而不是僅僅使用命令。機器人也會隨著它從與人們的對話中學習而變得更聰明。我們將把構建這種類型的機器人留到以後的文章中。不過,不需要機器學習知識。幸運的是,有一些服務,例如 wit.ai 和 Api.ai,使開發人員能夠將機器學習(特別是自然語言處理 - NLP)集成到他們的應用程序中。

開始

您可以從此處下載已完成的演示應用程序的代碼。

為了讓您的聊天機器人與 Facebook 用戶進行通信,我們需要設置一個服務器來接收、處理和發送回消息。服務器將為此使用 Facebook Graph API。 Graph API 是進出 Facebook 平台數據的首要方式。服務器必須具有 Facebook 服務器可以訪問的端點 URL,因此在本地機器上部署 Web 應用程序不起作用,您必須將其上線。此外,從 Graph API 的 2.5 版開始,對該服務的新訂閱必須使用安全的 HTTPS 回調 URL。在本教程中,我們將應用程序部署到 Heroku,因為所有默認的 appname.herokuapp.com 域都已啟用 SSL。我們將使用 Node.js 來構建 Web 應用程序。

首先,請確保已在您的計算機上安裝 Node。您可以通過在終端中鍵入 node -v 來檢查這一點。如果已安裝,它將輸出版本號。然後安裝 Heroku 命令行界面 (CLI)。稍後我們將使用它來將應用程序推送到 Heroku。使用 heroku --version 驗證 CLI 是否已安裝。

使用以下命令創建項目目錄並初始化 package.json 文件。

<code>$ mkdir spbot
$ cd spbot
$ npm init</code>

按照提示設置您的項目首選項。

生成 package.json 文件後,將其打開並將 start 屬性添加到 scripts 對象。這可以讓 Heroku 知道要執行哪個命令來啟動應用程序。在項目設置期間,我將 app.js 定義為應用程序的入口點,因此我使用 node app.js 作為 start 的值。根據您的項目設置更改此設置。

<code>{
  "name": "spbot",
  "version": "1.0.0",
  "description": "SPBot Server",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node app.js"
  },
  "author": "Joyce Echessa",
  "license": "ISC"
}</code>

安裝以下 Node 包。

<code>$ npm install express request body-parser mongoose --save</code>

在項目的根目錄中創建一個 .gitignore 文件,並包含 node_modules 文件夾,以防止將其提交。

<code>node_modules</code>

在項目的根目錄中,創建一個名為 app.js(如果使用默認名稱,則為 index.js)的文件。將其修改如下所示:

<code class="language-javascript">var express = require("express");
var request = require("request");
var bodyParser = require("body-parser");

var app = express();
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.listen((process.env.PORT || 5000));

// 服务器索引页面
app.get("/", function (req, res) {
  res.send("已部署!");
});

// Facebook Webhook
// 用于验证
app.get("/webhook", function (req, res) {
  if (req.query["hub.verify_token"] === "this_is_my_token") {
    console.log("已验证 webhook");
    res.status(200).send(req.query["hub.challenge"]);
  } else {
    console.error("验证失败。令牌不匹配。");
    res.sendStatus(403);
  }
});</code>

第一個 GET 處理程序將用於我們自己的測試——了解應用程序是否已成功部署。第二個 GET 處理程序是 Facebook 將用於驗證應用程序的端點。代碼應查找 verify_token 並使用驗證請求中發送的 challenge 進行響應。

您可以將您自己的令牌粘貼到代碼中。此類數據最好保存在環境變量中,我們將在 Heroku 上創建項目後立即這樣做。

部署到 Heroku

為了讓 Facebook 平台連接到我們的後端應用程序,我們首先需要將其上線。

使用以下命令創建一個 Git 存儲庫並提交項目的文:

<code>$ git init
$ git add .
$ git commit -m "Initial commit"</code>

如果您還沒有,請註冊一個免費的 Heroku 帳戶。

從您的終端登錄到 Heroku 並創建一個應用程序。

<code>$ heroku login
$ heroku create
$ git push heroku master
$ heroku open</code>

運行 heroku open 命令後,運行應用程序的鏈接將在您的默認瀏覽器中打開。如果一切順利,您將看到一個頁面,其中包含文本“已部署!”。

創建環境變量

在繼續之前,讓我們在 Heroku 上創建一個環境變量來保存應用程序的驗證令牌。

打開您的 Heroku 儀表板並選擇您剛剛部署的應用程序。轉到應用程序的 設置 並單擊 顯示配置變量 按鈕。輸入 VERIFICATION_TOKEN 作為 ,輸入您的令牌作為 ,然後單擊 添加

Building a Facebook Chat Bot with Node and Heroku

在您的代碼中,將您的令牌字符串 ("this_is_my_token") 修改為 process.env.VERIFICATION_TOKEN。提交您的更改並將其推送到 Heroku。

創建 Facebook 頁面和應用程序

服務器啟動並運行後,我們現在將創建一個 Facebook 應用程序及其關聯的頁面。您可以創建一個新頁面或使用現有頁面。

要創建 Facebook 頁面,請登錄 Facebook 並前往創建頁面。從給定的選項中選擇頁麵類型。我選擇了 娛樂

Building a Facebook Chat Bot with Node and Heroku

然後選擇頁面的類別和名稱。

Building a Facebook Chat Bot with Node and Heroku

單擊 開始 後,將創建頁面,並會要求您提供有關您的應用程序的更多詳細信息(描述、網站、個人資料圖片、目標受眾等)。您現在可以跳過這些設置步驟。

Building a Facebook Chat Bot with Node and Heroku

要創建 Facebook 應用程序,請轉到添加新應用程序頁面,然後單擊其他平台選擇下方的 基本設置 鏈接。

Building a Facebook Chat Bot with Node and Heroku

填寫必要的詳細信息。選擇 面向頁面的應用程序 作為類別。

Building a Facebook Chat Bot with Node and Heroku

單擊 創建 App ID 後,將打開應用程序的儀表板。

Building a Facebook Chat Bot with Node and Heroku

在右側的 產品設置 中,單擊 Messenger 部分中的 開始。然後您將被帶到如下所示的 Messenger 設置頁面。

Building a Facebook Chat Bot with Node and Heroku

要接收 Messenger 用戶發送的消息和其他事件,應用程序應啟用 webhook 集成。我們接下來將執行此操作。 Webhook(以前稱為 實時更新)允許您訂閱您想要跟踪的更改並實時接收更新,而無需調用 API。

在 Webhook 部分中,單擊 設置 Webhook

輸入將發送更新的回調URL(後端應用程序中定義的端點URL,即/webhook),輸入驗證令牌(在後端應用程序中使用的令牌,即存儲在process. env.VERIFICATION_TOKEN 中的值)並選中所有復選框。這些指定應用程序將訂閱哪些事件。我們稍後將了解這些事件的作用。

Building a Facebook Chat Bot with Node and Heroku

成功啟用 webhook 後,您應該在 Webhook 部分看到 已完成,以及已訂閱事件的列表。如果您收到錯誤,請確保您已輸入 webhook 端點的正確 URL(以 /webhook 結尾),並確保此處使用的令牌與您在 Node 應用程序中使用的令牌相同。

Building a Facebook Chat Bot with Node and Heroku

令牌生成 部分,從下拉菜單中選擇您的頁面。身份驗證後,將為您生成一個頁面訪問令牌。

Building a Facebook Chat Bot with Node and Heroku

在 Heroku 上創建另一個環境變量,並將其 設置為 PAGE_ACCESS_TOKEN,並將生成的令牌作為 。請注意,生成的令牌不會保存在 Facebook 上顯示它的當前頁面中。每次訪問該網頁時,頁面訪問令牌字段都將為空白,並且當您從頁面下拉菜單中選擇您的 Facebook 頁面時,將生成一個新令牌。但是,任何先前創建的令牌都將繼續發揮作用。因此,請確保在關閉網頁之前複製令牌。

為了讓您的 webhook 接收特定頁面的事件,您必須將您的應用程序訂閱到該頁面。在 Webhook 部分,選擇要訂閱的頁面。

Building a Facebook Chat Bot with Node and Heroku

歡迎屏幕

當用戶與您的機器人開始新的對話時,他們首先看到的是歡迎屏幕。此屏幕將顯示您頁面的名稱、描述、個人資料圖片和封面照片。您可以通過設置問候文本來自定義屏幕,該文本將代替頁面描述使用。您可以使用它來設置介紹性消息,讓用戶知道可以從您的機器人那裡獲得什麼。

默認情況下,要開始對話,用戶會向您的機器人發送第一條消息。但是,您可以啟用“開始”按鈕,使您的機器人能夠發送初始消息。該按鈕將向您的服務器發送一個事件,然後您可以對其進行響應。

要設置問候文本,請打開您的頁面並轉到其 設置

Building a Facebook Chat Bot with Node and Heroku

從左側面板中選擇 消息,然後在右側面板上打開 顯示 Messenger 問候。根據您的喜好設置消息。

Building a Facebook Chat Bot with Node and Heroku

要啟用“開始”按鈕,請將以下語句中的 PAGE_ACCESS_TOKEN 字符串替換為您的令牌,並將該命令粘貼到終端中。

<code>$ mkdir spbot
$ cd spbot
$ npm init</code>

上述操作向 Facebook Graph API 發出請求。如果請求成功,則“開始”按鈕將出現在新對話的歡迎屏幕上。用戶點擊該按鈕將觸發 postback received 回調。然後您的機器人可以響應此 postback。

Postback 可以由不同類型的組件觸發——Postback 按鈕、“開始”按鈕、持久菜單或結構化消息。您可以將任何字符串設置為有效負載。在後端,我們將使用此字符串來識別由於點擊“開始”按鈕而發送的 postback。要接收 postback 消息,您的應用程序必須訂閱您 webhook 上的 postback。我們之前在設置 webhook 時通過選中 messaging_postbacks 複選框來執行此操作。

如果成功設置“開始”按鈕,您將看到以下響應。

<code>{
  "name": "spbot",
  "version": "1.0.0",
  "description": "SPBot Server",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node app.js"
  },
  "author": "Joyce Echessa",
  "license": "ISC"
}</code>

請記住,“歡迎屏幕”和“開始”按鈕僅在新對話中顯示。在對機器人進行編碼和測試時,您可以通過刪除當前對話來開始新的對話。

要處理 postback 消息,請將以下內容粘貼到您的 Node 應用程序中。

<code>$ npm install express request body-parser mongoose --save</code>

每當有人與您的機器人互動或向您的頁面發送消息時,都會通過您的 Webhook 集成發送更新。要獲取消息,您必須偵聽 webhook 上的 POST 調用。所有回調都將發送到此 webhook。

在上面的 POST 處理程序中,我們迭代發送到應用程序的消息條目。有時消息會批量發送在一起,因此一個條目可能包含多個對象。然後,我們遍歷每個條目的消息事件並檢查其類型。以下是可以發送到應用程序的不同回調消息。

  • 已接收消息回調 – 當一個人向您的機器人發送消息時,將發送已接收消息回調。在設置 webhook 時,您必須已訂閱消息事件。
  • 已接收 Postback 回調 – 當一個人點擊已配置為向您發送 postback 的按鈕時,將發送已接收 Postback 回調。為了從 postback 獲取回調,您必須在設置 webhook 時已訂閱 messaging_postbacks 事件。
  • 已送達消息回調 – 當頁面發送的消息已送達時,將發生此回調。在設置 webhook 時,您必須已訂閱 message_deliveries 事件。
  • 身份驗證回調 – 當點擊 Send-to-Messenger 插件時,將發生此回調。在設置 webhook 時,您必須已訂閱 messaging_optins 事件。
  • 已閱讀消息回調 – 當頁面發送的消息已被用戶閱讀時,將發生此回調。在設置 webhook 時,您必須已訂閱 message_reads 事件。
  • 消息回顯回調 – 當您的頁面發送消息時,將發生此回調。您可能會收到文本消息或帶有附件(圖像、視頻、音頻、模板或備用)的消息。在設置 webhook 時,您必須已訂閱 message_echoes 事件。
  • 結賬更新回調 (BETA) – 當使用帶有靈活金額交易的購買按鈕時,將發生此回調。這允許您根據一個人的送貨地址更新價格。在設置 webhook 時,您必須已訂閱 messaging_checkout_updates 事件。目前,此功能在美國境外不可用。
  • 付款回調 (BETA) – 當一個人點擊購買按鈕呈現的結賬對話框中的付款按鈕時,將發生此回調。在設置 webhook 時,您必須已訂閱 messaging_payments 事件。目前,此功能在美國境外不可用。

如果事件是 Postback,我們將調用 processPostback() 函數,在該函數中我們將檢查有效負載值。請記住,我們將 Greeting 設置為“開始”按鈕的有效負載,因此在這裡我們首先檢查消息事件是否是由於點擊該按鈕而發送的。如果是,我們將使用用戶個人資料 API 獲取用戶的姓名,並使用它來個性化將發送回他們的消息。從 API 中,您可以獲取他們的姓名、姓氏、個人資料圖片、語言環境、時區和性別。

然後將消息發送到 sendMessage() 函數,該函數將其發佈到 Messenger 平台。在 Webhook POST 處理程序中,我們返回 200 OK HTTP 響應。

盡快返回 200 響應非常重要。 Facebook 將在發送下一條消息之前等待 200。在大容量機器人中,返回 200 的延遲會導致 Facebook 將消息傳遞到您的 webhook 的重大延遲。

如果您的 webhook 返回錯誤(即不是 2XX 狀態)或超時(即響應時間超過 20 秒)並且持續這樣做超過 15 分鐘,您將收到警告警報。

如果 webhook 繼續失敗 8 個小時,則 Facebook 將向您發送警報,通知您 webhook 正在被禁用,然後您的應用程序將取消訂閱。修復問題後,您必須重新添加 webhook 並將應用程序重新訂閱到該頁面。

提交更改並將其推送到 Heroku。

要測試機器人,您可以從 facebook.com、Facebook 移動應用程序或使用您的 Messenger 短鏈接 https://www.php.cn/link/1fd37ce80d495bebcb35e0054d7384fe

在 Facebook 和 Messenger 上,您可以通過搜索頁面名稱來查找該頁面。

Building a Facebook Chat Bot with Node and Heroku

從上面可以看出,您無法始終保證頁面的名稱是唯一的。您的用戶可能會選擇錯誤的頁面。為避免這種情況,您可以為頁面設置唯一的用戶名。為此,請轉到您頁面的主頁,然後從 更多 下拉菜單中選擇 編輯頁面信息

Building a Facebook Chat Bot with Node and Heroku

然後設置用戶名。

Building a Facebook Chat Bot with Node and Heroku

現在,如果您搜索 @page_username,您將獲得正確的頁面。您還可以訪問 https://www.php.cn/link/13f3d8f0b1d534d2ce312263653c5594 來開始互動。

如下所示,您可以看到我們為歡迎屏幕設置的問候文本以及 開始 按鈕。

Building a Facebook Chat Bot with Node and Heroku

點擊該按鈕後,您應該會看到從服務器發送的消息。

Building a Facebook Chat Bot with Node and Heroku

如果您輸入任何文本,您將不會收到任何回复。我們接下來將解決這個問題。

設置數據庫

當用戶輸入電影名稱時,機器人將使用 Open Movie Database API 獲取電影的詳細信息。我們將使用的 API 請求只會獲取第一個匹配的結果,因此返回的電影可能並不總是用戶想要的。因此,機器人將首先與用戶確認它是否獲得了正確的電影,之後,用戶可以獲取電影的情節、演員陣容、IMDB 評分等詳細信息。他們也可以輸入另一個電影名稱並獲取其詳細信息。

由於這種來回互動,機器人需要記住用戶的當前電影條目。 Facebook 不會與您的 webhook 保持會話打開,因此您在會話對像中存儲的任何數據都將在下一個請求中丟失。我們將改為將此數據保存在數據庫中——具體來說是 MongoDB。我們將使用 Heroku 上的 mLab 附加組件。

mLab 是 MongoDB 的數據庫即服務。在 Heroku 上,雖然您可以使用免費的沙盒 mlab 計劃,但您需要在 Heroku 上保存信用卡以進行驗證。如果您不想提供您的卡詳細信息,那麼您可以在 mLab 網站上註冊一個帳戶,在那裡創建一個免費層的沙盒數據庫,並從您的代碼中鏈接到該數據庫(稍後將詳細介紹)。

要在 Heroku 上使用附加組件,請轉到應用程序的儀表板並選擇 資源 選項卡。搜索 mlab 並選擇結果。在彈出的對話框窗口中,從下拉菜單中選擇沙盒 - 免費計劃,然後單擊 預配。您應該會看到所選附加組件的確認。

Building a Facebook Chat Bot with Node and Heroku

如果您檢查 Heroku 上的環境變量,您將看到一個已設置 MongoDB URI 的變量。

Building a Facebook Chat Bot with Node and Heroku

通過 mLab 網站設置數據庫

如果您更喜歡在 mLab 網站上設置 MongoDB 數據庫,請在那裡註冊一個帳戶,然後轉到創建新的部署頁面。將 計劃 設置更改為 單節點,然後從 標準行 部分中選擇 沙盒

Building a Facebook Chat Bot with Node and Heroku

為您的數據庫設置一個名稱,然後單擊 創建新的 MongoDB 部署 按鈕完成該過程。

Building a Facebook Chat Bot with Node and Heroku

在接下來的頁面上,從顯示的表格中選擇您剛剛創建的數據庫。將打開一個頁面,其中顯示有關如何訪問數據庫的說明。

選擇 用戶 選項卡,然後單擊按鈕 添加數據庫用戶。填寫用戶名和密碼,然後單擊 創建。這將創建一個新的憑據集,您可以使用它來允許您的應用程序訪問數據庫。

在頁面的上半部分,查找並複制數據庫 URI——它看起來像 mongodb://:@dsxxxxxx.mlab.com:55087/spbot。插入您剛剛創建的 dbuser 名稱和密碼。在 Heroku 上,創建一個名為 MONGODB_URI 的環境變量,並將數據庫的 URI 粘貼為其值。

定義模型類

回到 Node 應用程序中,創建一個名為 movie.js 的文件並將其保存在名為 models 的文件夾中。將以下內容粘貼到文件中:

<code>$ mkdir spbot
$ cd spbot
$ npm init</code>

上面創建了電影數據庫模型。 user_id 將是從 Messenger 平台獲得的用戶 ID,而其他字段將從電影 API 中獲取。我們只會存儲用戶的最後搜索的電影,因此數據庫每個用戶只有一個記錄。

我們可以省略 user_id 字段,而只使用用戶的 ID 作為每個創建記錄的 _id。這將有效,因為用戶 ID 對 Facebook 頁面是唯一的。如果您要這樣做,您應該知道用戶 ID 是頁面範圍的。這意味著用戶的 ID 對給定的頁面是唯一的,但用戶對不同的頁面可能有不同的 ID。

只有當您的機器人為不同的頁面提供服務時(是的,一個機器人可以為多個頁面提供服務),您才需要知道這一點。因此,如果您的機器人為多個頁面提供服務,那麼僅通過其用戶ID 來識別用戶可能會出現故障,並且使用用戶ID 作為記錄的_id 字段也會出現故障,因為這必須是唯一的,並且您將無法保證跨頁面的唯一性。

將所有內容整合在一起

數據庫和模型設置好後,我們現在可以完成聊天機器人了。代碼將分部分呈現,但如果您想將整個代碼粘貼到您的項目中,這裡提供了 app.js 文件的鏈接。

首先設置數據庫連接。 Mongoose 應該之前已經與其他模塊一起安裝了。

<code>{
  "name": "spbot",
  "version": "1.0.0",
  "description": "SPBot Server",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node app.js"
  },
  "author": "Joyce Echessa",
  "license": "ISC"
}</code>

修改 webhook 的 POST 處理程序如下所示。

<code>$ npm install express request body-parser mongoose --save</code>

我們添加了對類型為消息的事件的檢查,並將它們傳遞給 processMessage() 函數。

<code>node_modules</code>

在這裡,我們首先檢查消息是否通過消息回顯回調發送。當您的頁面發送消息時,將發生此回調。例如,我們發送給用戶的第一個消息(問候語)將發送回我們的 Webhook。我們不想處理我們自己的任何消息,因此我們對此進行了檢查。

然後我們檢查消息是文本還是附件(圖像、視頻、音頻)。對於後者,我們向用戶發送錯誤消息。對於文本消息,我們檢查輸入是否與某些關鍵字匹配,這些關鍵字將指示用戶想要電影的哪個細節。此時,用戶已經查詢了一部電影,並且該電影將保存在數據庫中。 getMovieDetail() 函數查詢數據庫並返回特定記錄。

<code class="language-javascript">var express = require("express");
var request = require("request");
var bodyParser = require("body-parser");

var app = express();
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());
app.listen((process.env.PORT || 5000));

// 服务器索引页面
app.get("/", function (req, res) {
  res.send("已部署!");
});

// Facebook Webhook
// 用于验证
app.get("/webhook", function (req, res) {
  if (req.query["hub.verify_token"] === "this_is_my_token") {
    console.log("已验证 webhook");
    res.status(200).send(req.query["hub.challenge"]);
  } else {
    console.error("验证失败。令牌不匹配。");
    res.sendStatus(403);
  }
});</code>

如果用戶的查詢與任何已設置的關鍵字都不匹配,則機器人會假設輸入用於電影查詢,因此將其傳遞給 findMovie() 函數,該函數使用輸入調用 Open Movie Database API。

<code>$ git init
$ git add .
$ git commit -m "Initial commit"</code>

如果找到電影,則將其詳細信息與用戶的 ID 一起保存。如果之前已創建具有該用戶 ID 的記錄,則將對其進行更新。然後我們創建一個結構化消息並將其發送給用戶。

除了文本之外,Messenger 平台還允許您發送回圖像、視頻、音頻、文件和結構化消息。結構化消息是支持不同用例的模板。按鈕模板允許您發送文本和按鈕。通用模板允許您定義圖像、標題、副標題和按鈕。在我們的應用程序中,我們使用通用模板。

修改 processPostback() 函數如下所示。

<code>$ mkdir spbot
$ cd spbot
$ npm init</code>

以上是使用Node和Heroku構建Facebook聊天機器人的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn