You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Facebook Messenger OTN请求无回传响应问题求助

Facebook Messenger一次性通知(OTN)Webhook收不到回传问题

我在开发Facebook Messenger聊天机器人时,实现One-Time Notification(OTN)流程遇到问题。能成功给用户发送通知请求,但webhook始终收不到回传信息。已确认webhook订阅了optin事件,且页面具备OTN功能权限。多次检查账号权限、重新实现流程,问题仍未解决。

页面权限

Page Permissions

Webhook订阅

Webhook Subscriptions

接收请求代码

def handle_message(self, request):
    data = request.get_json()
    if data['object'] == "page":
        for entry in data['entry']:
            for messaging_event in entry['messaging']:
                sender_id = messaging_event['sender']['id']
                
                if messaging_event.get('optin'):
                    print('Optin event recieved!!!')
                    token = messaging_event['optin']['one_time_notif_token']

                # Check for postback and handle it
                elif 'postback' in messaging_event:
                    payload = messaging_event['postback']['payload']
                    self.handle_payload(sender_id, payload)
                # Check for quick_reply and handle it
                elif 'message' in messaging_event and 'quick_reply' in messaging_event['message']:
                    payload = messaging_event['message']['quick_reply']['payload']
                    self.handle_payload(sender_id, payload)
                # Handle regular text messages
                elif 'message' in messaging_event:
                    message_text = messaging_event['message'].get('text', '')
                    print("Message from {}: {}".format(sender_id, message_text))
                    response_text = self.chatgpt.get_chat_response(message_text)
                    self.send_message(sender_id, response_text)
    return jsonify({'success': True}), 200

发送请求代码

def send_otn_request(recipient_id, page_access_token):
    headers = {
        'Content-Type': 'application/json'
    }
    data = {
        "recipient": {
            "id": recipient_id
        },
        "message": {
            "attachment": {
                "type": "template",
                "payload": {
                    "template_type": "one_time_notif_req",
                    "title": "Want us to remind you of your appointment?",
                    "payload": "YES_REMINDER"  # Payload to track the type of notification
                }
            }
        }
    }
    print(f"Sending OTN request to recipient: {recipient_id}")
    print(f"Request headers: {headers}")
    print(f"Request data: {data}")

    response = requests.post(
        f'https://graph.facebook.com/v14.0/me/messages?access_token={page_access_token}',
        headers=headers,
        json=data
    )
    print(f"OTN request response: {response.status_code}, {response.text}")
    
    # Check for errors in the response
    if response.status_code != 200:
        print(f"Error sending OTN request: {response.text}")
    else:
        print("OTN request sent successfully!")

    return response.json()

内容的提问来源于stack exchange,提问作者Austin Serio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 10:45:01