Facebook мессенджер чат с Flask и Pymessenger - PullRequest
0 голосов
/ 26 декабря 2018

Я создал чат-мессенджер с flask, pymessenger и wit.ai.

Я хочу добавить предоставленные шаблоны для Facebook (например, кнопки, добавление изображений и звуковые файлы) (https://developers.facebook.com/docs/messenger-platform/reference/template/button/)

Там используются некоторые вещи curl и json, которые я не понимаю. Может ли кто-нибудь мне помочь, где я должен поместить эти фрагменты в мой код Python.

    @app.route('/', methods=['POST'])

def webhook (): 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']
            recipient_id = messaging_event['recipient']['id']

            if messaging_event.get('message'):
                if 'text' in messaging_event['message']:
                    messaging_text = messaging_event['message']['text']
                else:
                    messaging_text = 'no text'

                response = None

                entity, value = wit_response(messaging_text)

                if entity == 'newstype':
                    response = "OK. I will send you {} news".format(str(value))
                elif entity == 'cust_greet':
                    response = get_message()
                elif entity == 'cust_bye':
                    response = "Bye! Have a Good Day!".format(str(value))
                elif entity == 'cust_option':
                    response = "Option 1: Option 2:"
                bot.send_text_message(sender_id, response)


return "ok", 200

журнал регистрации (сообщение): печать (сообщение) sys.stdout.flush ()

1 Ответ

0 голосов
/ 26 декабря 2018

HTTP-запросы используют один из этих двух форматов:

GET: Все информация о запросе находится в URL

POST: некоторая информация отправляется в формате JSONна URL

То, что мы видим в API Facebook, представляет собой запрос POST: URL определен как

https://graph.facebook.com/v2.6/me/messages?access_token=<PAGE_ACCESS_TOKEN>

... и есть информация запроса POSTв разделе JSON под

Curl - программа, используемая для отправки HTTP-запросов с терминала.Если вы устанавливаете Curl, вы можете заполнить информацию JSON / url, выполнить команду (которая отправляет запрос POST) и увидеть всплывающие кнопки для получателя.Точно так же, как вы хотите, чтобы ваш чатбот работал!

Однако, Curl - это инструмент, а не библиотека Python!

Чтобы сделать это в Python, вы можете отправить запрос через встроенные библиотеки Python,или установите пакет, который облегчает эту задачу (например, запросы), обратитесь к разделу «Отправка http-запросов через python».

Ниже приведен пример (адаптированный с этот вопрос ):

    from urllib.parse import urlencode
    from urllib.request import Request, urlopen

    # the url we are sending the request to
    url = "https://graph.facebook.com/v2.6/me/..."

    # the POST request data
    request_data = {
                     "recipient": {
                       "id": "<PSID>"
                     },
                     "message": {
                       "attachment": {
                           ...
                       }
                     }
                   }

    # create the request with the url and the data
    post_request = Request(url, urlencode(request_data).encode())

    # send it to Facebook! Response is the API response from Facebook
    response = urlopen(post_request).read().decode()
...