Facebook Messenger 聊天机器人给出重复回复

Facebook messenger chatbot gives duplicate replies

我正在使用 wit.ai 和 python 构建聊天机器人并将其与 Facebook Messenger 集成。我已经设置了 webhooks 以及发送函数和 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

(这个 returns 总是相同的字符串,在 wit.ai 引擎中定义。)

如果您的机器人订阅了 pages_messaging 以外的事件,例如 messaging_deliveries,请确保您也在处理此事件。

发生的情况是您的机器人正在接收消息请求,然后通过另一个事件接收另一个请求,并且您的代码将它们都作为消息处理。

我认为这是问题所在,如果不是,请提供更多详细信息。

我之前遇到过这个问题,结果发现 message_echoes 已启用。如果启用此功能,基本上会发生什么情况,即 Bot 将尝试回显您输入的任何文本。

我的逻辑最终捕捉到回声,然后以相同的响应进行响应。我确实有一个处理程序来捕获类似的响应,因此我能够避免无限循环。

可能有人和我一样。

我的情况:

我错误地将我的两个不同的机器人订阅到 developer.facebook.com 上的一个 Facebook 页面。

由于这个错误,当我向我的 Facebook 页面写入特定命令(例如重新启动)时,机器人会向我回复完全相同的两条消息(例如 "Bot Restarted"、"Bot Restarted")。

发现问题让我抓狂。

您最多应该订阅一个机器人到您的 Facebook 页面。