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

Webhook订阅

接收请求代码
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
相关产品推荐
相关产品推荐

