Facebook messenger聊天机器人提供重复的回复

时间:2016-11-28 11:15:43

标签: python chatbot wit.ai facebook-chatbot facebook-messenger-bot

我正在使用wit.ai和python构建一个聊天机器人并将其与Facebook Messenger集成。我已经设置了webhooks以及发送函数和fb_message函数,就像在本教程中一样:https://github.com/wit-ai/pywit/blob/master/examples/messenger.py

当我在wit.ai或控制台中测试时,我的机器人工作正常,但是当我在实际的Facebook Messenger中测试它时,它会给每次回复两次。机器人内部的哪个函数被调用并不重要,我总是得到两个回复。

我最简单的行动就是:

(*****************************************************************)
(*Task 01(c) and 02(a)*)
(*****************************************************************)
n = 1000;

taskC = Table[-Log[RandomReal[]], {n}];

ListPlot[taskC, AxesLabel->{"No. obs", "value of the obs"}]

i = 1;
ListPlot[Table[
    {taskC[[k]], taskC[[k+i]]}, 
    {k, 1, n-i,1}],
AxesLabel->{"obs.no.n", "obs.no.n+1"}]

i++;
ListPlot[Table[
    {taskC[[k]], taskC[[k+i]]},
    {k, 1, n-i,1}],
AxesLabel-> {"obs.no.n", "obs.no.n+2"}]

i++;
ListPlot[Table[
    {taskC[[k]], taskC[[k+i]]},
    {k,1,n-i,1}],
AxesLabel->{"obs.no.n", "obs.no.n+3"}]

avg = (1/n)*Sum[taskC[[i]], {i,n}];

ListPlot[Table[1/(n-tau) * Sum[(taskC[[i]]-avg)*(taskC[[i+tau]] - avg), n], {tau, 1,100}], 
    Joined->True, 
    AxesLabel->"Covariance Function"]

(这将返回相同的字符串,在wit.ai引擎中定义。)

3 个答案:

答案 0 :(得分:1)

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

正在发生的事情是你的机器人正在接收消息请求,然后又接收另一个事件,而你的代码正在将它们作为消息处理。

我认为这是问题,如果不是,请向我们提供更多相关细节。

答案 1 :(得分:0)

之前我遇到过这个问题,事实证明message_echoes已启用。如果启用此功能,那么Bot将尝试回显您输入的文本。

我的逻辑最终捕获了回声,然后回应了同样的回应。我有一个处理程序来捕获类似的响应,所以我能够避免无限循环。

答案 2 :(得分:0)

有人可能会像我一样。

我的情况:

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

由于这个错误,当我向我的facebook页面写一个特定的命令(例如重启)时,bot会向我回复完全相同的两条消息(例如“Bot Restarted”,“Bot Restarted”)。

找到问题让我很疯狂。

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