用纯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。