Чат-бот в мессенджере Facebook дает повторяющиеся ответы

Я создаю чат-бота с помощью wit.ai и python и интегрирую его с Facebook Messenger. Я настроил веб-перехватчики, а также функцию отправки и функцию fb_message точно так же, как в этом руководстве: https://github.com/wit-ai/pywit/blob/master/examples/messenger.py

Мой бот отлично работает, когда я тестирую его в wit.ai или в консоли, но когда я тестирую его в реальном Facebook Messenger, он дает каждый ответ дважды. Неважно, какая функция внутри бота вызывается, я всегда получаю два ответа.

Мое самое простое действие таково:

def defaultAnswer(request):
    context = request['context']
    return context

(Это всегда возвращает ту же строку, которая определена в движке wit.ai.)


person Demeter    schedule 28.11.2016    source источник
comment
вы проверяете, пусто ли сообщение от facebook api? $ input ['entry'] [0] ['messaging'] [0] ['message'] - ›проверьте, пусто оно или нет ... если оно пусто, не обрабатывать запрос.   -  person ssakash    schedule 29.11.2016


Ответы (3)


Если ваш бот подписан на события, отличные от pages_messaging, например messaging_deliveries, убедитесь, что вы обрабатываете и это событие.

Дело в том, что ваш бот получает запрос сообщения, а затем другой запрос другим событием, и ваш код обрабатывает их как сообщения.

Я думаю, что это проблема, и если это не так, расскажите нам об этом подробнее.

person Dani Sh90    schedule 03.12.2016

У кого-то может быть такой случай, как у меня.

Мой случай:

Я по ошибке подписываю двух своих разных ботов на одну страницу facebook на developer.facebook.com.

Из-за этой ошибки, когда я пишу определенную команду (например, перезапуск) на своей странице в facebook, бот отвечает мне точно такими же двумя сообщениями (например, «Бот перезапущен», «Бот перезапущен»).

Я с ума сошел, когда узнал о проблеме.

Вы должны подписать не более одного бота на свою страницу в Facebook.

person Fatih Turgut    schedule 20.12.2017

У меня была эта проблема раньше, и оказалось, что message_echoes был включен. По сути, если этот параметр включен, бот попытается повторить введенный вами текст.

Моя логика в конечном итоге уловила эхо, а затем ответила тем же ответом. У меня есть обработчик для перехвата похожих ответов, поэтому я смог избежать бесконечного цикла.

person Alvin Reyes    schedule 11.08.2017