Twilio whatapp бот не отвечает на ключевые слова - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь создать бот для WhatsApp на Twilio, следуя инструкциям по Twilio.

Я написал программу 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 к пути.

Однако, когда я пытаюсь и наберите cat в WhatsApp (я добавил свой номер WhatsApp в свою песочницу) Я не получаю ответ (насколько я понимаю, я должен получить изображение кота, если наберу ключевое слово cat).

Не уверен что я делаю не так.

1 Ответ

1 голос
/ 22 марта 2020

Я скопировал этот же код из блога здесь (этот блог вы использовали), Создайте чат-чат WhatsApp с Python, Flask и Twilio , и обновил песочницу WhatsApp Когда приходит сообщение URL-адрес, указывающий на URL-адрес Ngrok, который открывает его для Inte rnet, и он работает.

Можете ли вы проверить Twilio Debugger , чтобы увидеть если были какие-либо ошибки?

Вы не можете использовать свой веб-браузер для посещения URL Flask, так как он ожидает HTTP POST, а ваш браузер использует HTTP GET. Вы можете использовать такой инструмент, как Почтальон , чтобы выполнить POST для вашего URL и посмотреть, какой ответ вы получите.

Этот ответ вы должны получить, когда посещаете URL и отправляете в параметре Body POST of cat.

enter image description here

Вы также можете проверить URL отладки Ngrok, http://127.0.0.1: 4040 / , чтобы увидеть, что вы получают из Twilio, когда вы отправляете входящее песочницу WhatsApp и отлаживаете оттуда.

...