POST-запрос в мессенджере, вызывающем '400 BAD REQUEST' - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь развернуть мессенджер-бот. Это закодировано в python. Я уже создал приложение для разработчиков Facebook. Webhooks установлен, я уже предоставил URL обратного вызова и токен проверен. enter image description here

Однако, когда я отправляю сообщение на страницу, я получаю '400 BAD REQUEST'. Кажется, что есть проблема с обработкой метода POST. Мои подписки на страницы: My page subscriptions

Это рабочий пример моего кода:

from flask import Flask, request
import requests
import json

app= Flask(__name__)


WEBHOOK_TOKEN = "xxxxxx"
PAGE_ACCESS_TOKEN= "yyyyy"
GRAPH_API_URL='https://graph.facebook.com/v6.0/me/messages'


def send_message(recipient_id, text):

 headers={ 
        'Content-type': 'application/json'
            }
 data =json.dumps({

        'message': {'text': text },
        'recipient': {'id': recipient_id}

})

auth = {
    'access_token': PAGE_ACCESS_TOKEN
}

response = requests.post(
    GRAPH_API_URL,
    headers= headers,
    params=auth,
    data=data
)

return response.json()
@app.route('/', methods=['GET','POST'])
def webhook():
 mode =request.args.get("hub.mode")
 token= request.args.get("hub.verify_token")
 challenge=request.args["hub.challenge"]

 if (request.method == 'GET'):
    if mode and challenge: 
       if mode == "subscribe" and token==WEBHOOK_TOKEN:
           return str(challenge), '200'  #success
       else:
           return '403'  #Verification token mismatch

 if (request.method == 'POST'):
   data=request.json
   with open('personal.json', 'w') as json_file:
       json.dump(data, json_file)
   messaging_event=data['entry'][0]['messaging']
   for msg in messaging_event:
          UserId=msg['sender']['id']
          send_message(UserId,'testing...')  
   return '200'


if __name__ == "__main__":
    app.run()
...