Twilio whatapp机器人未响应关键字

时间:2020-03-22 18:44:57

标签: python flask twilio chatbot

我正在尝试按照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,我应该得到一张猫的图片)。

不确定我做错了什么。

1 个答案:

答案 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参数时,您应该得到此响应。

enter image description here

您还可以检查Ngrok调试URL http://127.0.0.1:4040/,以查看在发送入站WhatsApp沙箱消息并从那里进行调试时从Twilio得到的内容。