我正在尝试按照Twilio教程在Twilio上构建whatsapp机器人。
我已经编写了flask程序来创建测试机器人:
from flask import Flask, request
import requests
from twilio.twiml.messaging_response import MessagingResponse
app = Flask(__name__)
@app.route('/bot', methods=['POST'])
def bot():
incoming_msg = request.values.get('Body', '').lower()
resp = MessagingResponse()
msg = resp.message()
responded = False
if 'quote' in incoming_msg:
# return a quote
r = requests.get('https://api.quotable.io/random')
if r.status_code == 200:
data = r.json()
quote = f'{data["content"]} ({data["author"]})'
else:
quote = 'I could not retrieve a quote at this time, sorry.'
msg.body(quote)
responded = True
if 'cat' in incoming_msg:
# return a cat pic
msg.media('https://cataas.com/cat')
responded = True
if not responded:
msg.body('I only know about famous quotes and cats, sorry!')
return str(resp)
if __name__ == '__main__':
app.run()
该应用正在http://127.0.0.1:5000/上运行
当我单击此链接时,这就是我看到的
Not Found
The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
已安装并运行ngrok。我在转发下粘贴了该URL(我复制了两个),将该URL粘贴到我的Twilio沙箱中(当URL中出现消息时),并在路径中添加了/ bot。
但是,当我尝试在whatsapp上键入cat时(我已将我的whatsapp号添加到我的沙箱中),我没有得到任何响应(据我了解,如果键入关键字cat,我应该得到一张猫的图片)。
不确定我做错了什么。
答案 0 :(得分:1)
我从此处的博客(您使用过的博客)这里复制了相同的代码Build a WhatsApp Chatbot With Python, Flask and Twilio,并更新了WhatsApp沙箱When A Message Comes In URL以指向Ngrok URL,该URL将其公开给互联网,它可以正常工作。
您可以检查您的Twilio Debugger,看看是否有错误吗?
您不能使用Web浏览器访问Flask URL,因为它需要HTTP POST,并且浏览器正在使用HTTP GET。您可以使用Postman之类的工具对您的URL进行POST,然后查看收到的响应。
访问URL并发送cat的Body POST参数时,您应该得到此响应。
您还可以检查Ngrok调试URL http://127.0.0.1:4040/,以查看在发送入站WhatsApp沙箱消息并从那里进行调试时从Twilio得到的内容。