Отправка правильных учетных данных с помощью Facebook Grap Api и Webhooks для получения подписанных сообщений от мессенджера через django - PullRequest
0 голосов
/ 28 августа 2018

У меня возникают проблемы, когда я не могу понять, как именно использовать Facebook Graph Api и Webhooks. Я пытаюсь отправлять и читать сообщения из группового чата, частью которого я являюсь, на Facebook. Я выполнил шаги по созданию приложения на Developers.Facebook.com и прошел проверку приложения на pages_messages. Я сгенерировал Page_access_token и подписал свое приложение на мою страницу fb. Я предполагаю, что мне нужно дать Facebook фактические page_access_token и app_secret где-то в моем коде, но учебник, который я использовал, ничего не говорит об этом. Я использую django и следующий код для получения веб-крючка из Facebook с помощью учебника, который я нашел в Интернете:

class botView(generic.View):
def get(self, request, *args, **kwargs):
    if self.request.GET['hub.verify_token'] == VERIFY_TOKEN:
        print(self.request.GET['hub.challenge'])
        return HttpResponse(self.request.GET['hub.challenge'], 200)
    else:
        return HttpResponse('Error, invalid token')

@method_decorator(csrf_exempt)
def dispatch(self, request, *args, **kwargs):
    return generic.View.dispatch(self, request, *args, **kwargs)

# Post function to handle Facebook messages
def post(self, request, *args, **kwargs):
    # Converts the text payload into a python dictionary
    incoming_message = json.loads(self.request.body.decode('utf-8'))
    print(incoming_message)
    # Facebook recommends going through every entry since they might send
    # multiple messages in a single call during high load
    for entry in incoming_message['entry']:
        for message in entry:
            pass
            # Check to make sure the received call is a message call
            # This might be delivery, optin, postback for other events
            if 'message' in message:
                # Print the message to the terminal
                pprint(message)
                # Assuming the sender only sends text. Non-text messages like stickers, audio, pictures
                # are sent as attachments and must be handled accordingly.
                #post_facebook_message(message['sender']['id'], message['message']['text'])

    return HttpResponse("ok", 200)

Вот ссылка на учебник

https://abhaykashyap.com/blog/post/tutorial-how-build-facebook-messenger-bot-using-django-ngrok

Я могу отправлять тесты с веб-крючков на мой сервер и получать ответы, подобные следующим:

{'entry': [{'time': 1535460973, 'id': '0', 'changed_fields': ['message_sends'], 'uid': '0'}], 'object': 'user'

Но тот же самый ответ, который выдает webhook, выглядит так:

    {
  "field": "message_sends",
  "value": {
    "id": "mid.86753098675309:uuddlrlrbas",
    "message": "I'm changing jobs for the next 4+ years. Wanna be CEO?",
    "from": {
      "id": 44444444,
      "name": "Lizard Zuckerman",
      "email": "zuck@tehfacebook.com"
    },
    "to": {
      "data": [
        {
          "id": 20061985,
          "name": "Bobbert Cruz",
          "email": "bobbert@tehfacebook.com"
        }
      ]
    }
  }
}

Ngrok действительно показывает, что было успешное соединение, когда я получаю тесты, но я ничего не получаю, когда я получаю сообщения на своей странице, даже если я на него подписан.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...