【问题标题】:How do you send a typing bubble to FB messenger via Flask and pymessenger?如何通过 Flask 和 pymessenger 向 FB messenger 发送打字泡泡?
【发布时间】:2023-04-04 10:17:01
【问题描述】:

我正在构建一个通过 FB Messenger 部署的聊天机器人。根据 FB 文档,您必须向信使平台发送this 发布请求。我使用 json.dumps 发送有效载荷的字符串表示形式。但是,我从来没有看到打字气泡,只能从机器人那里得到实际的响应消息。这是来自 Flask 应用程序的相关代码。

@app.route('/', methods=['GET', 'POST'])
def receive_message():
    global tag, latest_message
    if request.method == 'GET':
        # Before allowing people to message your bot Facebook has implemented a verify token
        # that confirms all requests that your bot receives came from Facebook.
        token_sent = request.args.get("hub.verify_token")
        return verify_fb_token(token_sent)
    # If the request was not GET, it  must be POSTand we can just proceed with sending a message
    # back to user
    else:
            # get whatever message a user sent the bot
        output = request.get_json()
        for event in output['entry']:
            messaging = event['messaging']
            for message in messaging:
                if message.get('message'):
                    # Facebook Messenger ID for user so we know where to send response back to
                    recipient_id = message['sender']['id']
                    typing_payload = json.dumps({"recipient":{"id":recipient_id}, "sender_action":"typing_on"})
                    bot.send_raw(typing_payload)
                    time.sleep(3)
                    if message['message'].get('text'):
                        response_sent_text = send(message['message'].get('text'))
                        send_message(recipient_id, response_sent_text)
                        latest_message = response_sent_text
    return "Message Processed"

【问题讨论】:

    标签: python flask chatbot facebook-messenger messenger


    【解决方案1】:

    您可以使用 Pymessenger 包装器。只需导入它,创建一个实例并传递您的 FB_TOKEN 并包装您的操作。请记住,在发送操作时,Facebook 文档声明您必须只传递接收者 ID 和操作并调用与响应分开的方法。 在您的方法中将操作设置为“typing_on”。

    注意:您的方法不正确,因为您混合了 sender_id 和 recipient_id

    from pymessenger import Bot
    bot = Bot(<FB_ACCESS_TOKEN>)
    def send_typing_bubble(sender_id, recipient_id, action, response_sent_text):
        bot.send_action(sender_id, action)
        bot.send_text_message(sender_id, response_sent_text)
    

    创建方法后,您可以在 webhook 的 receive_message() 方法中调用 send_typing_bubble()

    if messaging_event.get('message'):
    
       #your code here
    
       send_typing_bubble(sender_id, recipient_id, action, 
           response_sent_text)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-10
      • 1970-01-01
      相关资源
      最近更新 更多