我正在用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
(这将始终返回相同的字符串,该字符串在wit.ai引擎中定义。)
如果您的机器人订阅了pages_messaging以外的事件,例如messaging_deliveries,请确保您也正在处理此事件。
发生了什么事情,你的机器人正在接收消息请求,然后接收另一个事件,你的代码将它们作为消息处理。
我认为这是问题,如果不是,请给我们更多细节。
之前我遇到过这个问题,事实证明,启用了message_echoes
。如果启用此功能,那么Bot将尝试回显您输入的任何文本。
我的逻辑最终捕获了回声,然后以相同的响应回应。我有一个处理程序来捕获类似的响应,所以我能够避免无限循环。
有人可能有像我这样的案子。
我的情况:
我错误地将我的两个不同的机器人订阅到developer.facebook.com上的一个facebook页面。
由于这个错误,当我向我的facebook页面写一个特定的命令(例如重启)时,bot会向我回复完全相同的两条消息(例如“Bot Restarted”,“Bot Restarted”)。
找出问题让我很疯狂。
您最多应该将一个机器人订阅到您的Facebook页面。