Facebook Messenger(Python)两个不同的结果是同一个用户

时间:2017-01-11 21:46:35

标签: python facebook bots facebook-messenger chatbot

目前我正在使用这个库PyMessenger构建一个Facebook Messenger机器人,我遇到了一个奇怪的行为。

我的愚蠢机器人的目的是在每次用户编写消息时简单地将数字1附加到列表中,然后返回列表的长度。

我的问题是返回的值是错误的。僵尸程序就好像它有两个不同的列表供同一个用户使用。例如,在写入一条消息后,输出应为1,写入第二条消息后输出应为2.现在,有时在我写第三条消息后输出为1而不是3.在下一次输入之后,机器人的输出可以是3(第一个'列表的长度)或2('第二个'列表的长度)。我知道我的解释不是最好的,所以如果您需要更多细节,请告诉我。

僵尸程序部署在免费的Heroku实例上。

如果我的整个脚本附加到这篇文章,并且机器人的图片显示了一个例子。

import os
from pymessenger.bot import Bot
from collections import defaultdict

import requests
from flask import Flask, request

app = Flask(__name__)

ACCESS_TOKEN = os.environ.get('PAGE_ACCESS_TOKEN')
bot = Bot(ACCESS_TOKEN)


a = defaultdict(list)


@app.route("/", methods=['POST', 'GET'])
def webhook():
    if request.method == 'POST':
        output = request.get_json()
        for event in output['entry']:
            messaging = event['messaging']
            for x in messaging:
                if x.get('message'):
                    recipient_id = x['sender']['id']
                    a[recipient_id].append(1)
                    bot.send_text_message(recipient_id, len(a[recipient_id]))
    return 'Success'


if __name__ == '__main__':
    app.run(debug=True)

enter image description here

0 个答案:

没有答案