用純Python構建AI WhatsApp機器人
本指南將帶您完成使用純Python的Meta(以前是Facebook)雲API創建WhatsApp機器人的過程,並特別。我們還將集成Webhook事件,以實時接收消息,並使用OpenAI生成AI響應。有關燒瓶應用程序結構的更多信息,您可以參考此文檔。
先決條件
- 元開發人員帳戶 - 如果您沒有一個帳戶,則可以在此處創建一個Meta開發人員帳戶。
- 商業應用程序 - 如果您沒有一個應用程序,則可以在此處學習創建業務應用程序。如果您看不到創建業務應用程序的選項,請選擇其他> Next > Business 。
- 熟悉Python以遵循教程。
目錄
- 用純Python構建AI WhatsApp機器人
- 先決條件
- 目錄
- 開始
- 步驟1:選擇電話號碼
- 步驟2:使用API發送消息
- 步驟3:配置Webhooks以接收消息
- 啟動您的應用
- 啟動Ngrok
- 集成WhatsApp
- 測試集成
- 步驟4:了解Webhook安全
- 步驟5:了解API並構建您的應用程序
- 步驟6:將AI集成到應用程序中
- 步驟7:添加電話號碼
- datalumina
- 教程
開始
- 概述和設置:在這裡開始您的旅程。
- 找到機器人:可以在此處找到機器人。
- WhatsApp API文檔:熟悉官方文檔。
- 有用的指南:這是用於發送消息的基於Python的指南。
- 用於發送消息的API文檔:查看此文檔。
步驟1:選擇電話號碼
- 確保將WhatsApp添加到您的應用中。
- 您首先要使用一個測試號,您可以將消息發送到最多5個數字。
- 轉到API設置,並找到您將發送消息的測試號。
- 在這裡,您還可以添加數字以將消息發送到。輸入您自己的WhatsApp號碼。
- 您將通過WhatsApp在手機上收到代碼以驗證您的電話號碼。
步驟2:使用API發送消息
- 從API訪問部分獲取24小時訪問令牌。
- 它將展示一個示例,說明如何使用
curl命令發送消息,該命令可以從終端發送或使用Postman之類的工具發送。 - 讓我們使用請求庫將其轉換為Python函數。
- 基於
example.env創建.env文件並更新所需的變量。視頻示例在這裡。 - 您將收到“ Hello World”消息(期望該消息的60-120秒延遲)。
創建一個訪問時間更長的訪問時間超過24小時
- 在Meta業務帳戶級別創建系統用戶。
- 在“系統用戶”頁面上,為系統用戶配置資產,通過完整控制分配WhatsApp應用程序。不要忘記單擊“保存更改”按鈕。
- 現在,單擊
Generate new token並選擇該應用程序,然後選擇訪問令牌有效多長時間。您可以選擇60天或永不過期。 - 選擇所有權限,因為我只選擇WhatsApp時遇到錯誤。
- 確認並複制訪問令牌。
現在,我們必須在應用儀表板上找到以下信息:
- app_id :“ <your-whatsapp-business-app_id>”(在app儀表板上找到)
- app_secret :“ <your-whatsapp-business-app_secret>”(在app儀表板上找到)
- conferient_waid :“”(這是您的WhatsApp ID,即,電話號碼。請確保將其添加到帳戶中,如示例測試消息所示。)
- 版本:“ V18.0”(Meta Graph API的最新版本)
- Access_Token :“”(在上一步中創建)
您只能向用戶發送模板類型消息作為第一條消息。這就是為什麼您必須先在我們繼續之前先發送答复。我花了2個小時才能解決這個問題。
步驟3:配置Webhooks以接收消息
請注意,這是本教程中最難的部分。
啟動您的應用
- 使您擁有Python安裝或環境,並安裝要求:
pip install -r requirements.txt - 通過執行run.py在本地運行燒瓶應用程序
啟動Ngrok
以下步驟取自NGrok文檔。
您需要一個靜態的NGrok域,因為Meta驗證了您的Ngrok域和證書!
一旦您的應用程序成功地在Localhost上運行,我們就可以使用Ngrok安全地將其在Internet上獲取!
- 如果您還不是NGROK用戶,請免費註冊Ngrok。
- 下載Ngrok代理。
- 轉到Ngrok儀表板,單擊您的身份驗證,然後復制您的authtoken。
- 請按照說明進行身份驗證您的Ngrok代理。您只需要一次。
- 在左側菜單上,展開雲邊緣,然後單擊域。
- 在域頁面上,單擊 +創建域或 +新域。 (這裡每個人都可以從一個自由域開始)
- 通過在本地桌面上的終端中運行以下命令來啟動NGrok:
ngrok http 8000 --domain your-domain.ngrok-free.app
- Ngrok將顯示您的Localhost應用程序接觸Internet的URL(複製此URL以供元使用)。
集成WhatsApp
在Meta App儀表板中,轉到WhatsApp>配置,然後單擊“編輯”按鈕。
- 在編輯Webhook的回調URL彈出窗口中,輸入Ngrok Agent提供的URL,以將您的應用程序公佈到回調URL字段中的Internet,並使用/webhook(ie https://myexample.ngrok.ngrok-free. app/webhook) )。
- 輸入驗證令牌。當您創建WebHook端點時,您將設置此字符串。您可以選擇自己喜歡的任何字符串。確保在您的
VERIFY_TOKEN環境變量中更新此信息。 - 將Webhook添加到WhatsApp之後,WhatsApp將通過Ngrok向您的應用程序提交驗證帖子請求。確認您的Localhost應用程序收到驗證請求並記錄終端中的
WEBHOOK_VERIFIED 。 - 返回到配置頁面,單擊管理。
- 在Webhook字段彈出窗口上,單擊“消息”字段。提示:您可以訂閱多個字段。
- 如果您的燒瓶應用程序和NGrok正在運行,則可以單擊消息旁邊的“測試”以測試訂閱。您在上案中收到一條測試消息。如果是這種情況,您的Webhook可以正確設置。
測試集成
使用與您的WhatsApp產品關聯的電話號碼或使用您之前複製的測試號。
- 將此號碼添加到您的WhatsApp應用程序聯繫人中,然後將消息發送到此號碼。
- 確認您的本地主機應用程序會收到一條消息,並在終端中記錄標題和車身。
- 測試機器人在上案中是否回复您。
- 您現在已成功整合了機器人! ?
- 現在是時候為此而徹底地建造很酷的東西了。
步驟4:了解Webhook安全
以下是來自Meta Webhooks API文檔的一些信息。它已經在代碼中實現,但是您可以參考它以更好地了解Security.py中發生的情況。
驗證請求
來源
每當您在應用儀表板中配置Webhooks產品時,我們都會向您的端點URL發送get請求。驗證請求包括以下查詢字符串參數,附加到端點URL的末尾。他們看起來像這樣:
GET https://www.your-clever-domain-name.com/webhook?
hub.mode=subscribe&
hub.challenge=1158201444&
hub.verify_token=meatyhamhock
在此示例的情況下,verify_token, meatyhamhock是您可以選擇的字符串。只要您存儲在VERIFY_TOKEN環境變量中,它就無關緊要。
驗證驗證請求
來源
每當您的端點收到驗證請求時,都必須:
- 當您在應用程序儀表板中配置Webhooks產品時(您尚未設置此令牌字符串)時,驗證HUB.VERIFY_TOKEN值是否匹配您在驗證令牌字段中設置的字符串。
- 以樞紐響應。挑戰價值。
驗證有效載荷
來源
WhatsApp通過SHA256簽名簽名所有事件通知有效載荷,並在請求的X-Hub-Signature-256標頭中包含簽名,並在SHA256 =之前。您不必驗證有效載荷,但是應該。
驗證有效載荷:
- 使用有效載荷和您的應用程序的秘密生成SHA256簽名。
- 將您的簽名與X-Hub-Signature-256標頭中的簽名進行比較(SHA256 =之後的所有內容)。如果簽名匹配,有效載荷是真實的。
步驟5:了解API並構建您的應用程序
查看開發人員文檔,以了解如何構建應用程序並開始發送消息。請參閱文檔。
步驟6:將AI集成到應用程序中
現在,我們有了端到端的連接,我們可以使機器人更加聰明,然後在大型情況下向我們大喊。您要做的就是在whatsapp_utils.py中提出自己的generate_response()函數。
如果您想要一個Cookie Cutter示例將OpenAi Assistans API與檢索工具集成在一起,請按照以下步驟操作。
- 觀看此視頻:OpenAI助手教程
- 使用OpenAI創建自己的助手,並在環境變量中更新您的
OPENAI_API_KEY和OPENAI_ASSISTANT_ID 。 - 向您的助手提供數據和說明
- 將OpenAi_service.py更新到您的用例。
- 導入
generate_reponse到whatsapp_utils.py - 使用新的
generate_reponse()函數更新process_whatsapp_message() 。
步驟7:添加電話號碼
當您準備將應用程序用於生產用例時,您需要使用自己的電話號碼向用戶發送消息。
要開始向任何WhatsApp號碼發送消息,請添加電話號碼。要管理您的帳戶信息和電話號碼,請參見概述頁面。和WhatsApp文檔。
如果您想使用WhatsApp客戶或業務應用程序中已經使用的數字,則必須將該數字完全遷移到業務平台。數字遷移後,您將無法訪問WhatsApp客戶或業務應用程序。有關信息,請參見將現有的WhatsApp號碼遷移到企業帳戶。
選擇電話號碼後,您必須將其添加到您的WhatsApp業務帳戶中。請參閱添加電話號碼。
在處理WhatsApp Business API並想嘗試不影響您的個人電話時,您有一些選擇:
- 購買新的SIM卡
- 虛擬電話號碼
- 雙模擬手機
- 使用其他設備
- 臨時號碼服務
- 專用設備開發設備
建議:如果這是出於延長或專業的目的,請使用虛擬電話號碼服務或為專用設備購買新的SIM卡。對於快速測試,臨時數字可能就足夠了,但始終對安全性和隱私持謹慎態度。請記住,一旦一個數字與WhatsApp Business API關聯,除非您將其與業務API停用並在設備上對其進行重新恢復,否則它不能與設備上的常規WhatsApp一起使用。
datalumina
該文檔由Datalumina提供給您。我們幫助數據分析師,工程師和科學家啟動和擴展一家成功的自由職業業務 - 每年+每年,有趣的項目,快樂的客戶。如果您想了解更多有關我們的工作,可以訪問我們的網站並訂閱我們的新聞通訊。隨時與您的數據朋友和同事分享此文檔。
教程
有關視頻教程,請訪問YouTube頻道:youtube.com/@daveebbelaar。