Facebook Messenger — еще одна популярная платформа для обмена сообщениями, поддерживающая чат-ботов. В этой статье мы рассмотрим, как создать чат-бота для Facebook Messenger с помощью Django.
Во-первых, вам нужно создать приложение Facebook и страницу для своего бота. Следуйте документации Facebook, чтобы создать приложение и страницу для своего бота. После этого вам потребуется получить токен доступа к странице, который вы будете использовать для аутентификации с помощью Facebook API.
Далее мы создадим новое приложение Django для нашего чат-бота. В вашем проекте Django выполните следующую команду:
python manage.py startapp fbchatbot
В каталоге fbchatbot
создайте новый файл с именем views.py
. Этот файл будет содержать логику получения и ответа на сообщения из Facebook Messenger.
from django.http import HttpResponse from django.views.decorators.csrf import csrf_exempt import json import requests PAGE_ACCESS_TOKEN = 'YOUR_PAGE_ACCESS_TOKEN' @csrf_exempt def fb_webhook(request): if request.method == 'GET': mode = request.GET.get('hub.mode') token = request.GET.get('hub.verify_token') challenge = request.GET.get('hub.challenge') if mode == 'subscribe' and token == 'YOUR_VERIFY_TOKEN': return HttpResponse(challenge) else: return HttpResponse('Error, invalid verification token') elif request.method == 'POST': data = json.loads(request.body.decode('utf-8')) for entry in data['entry']: for messaging_event in entry['messaging']: if messaging_event.get('message'): sender_id = messaging_event['sender']['id'] recipient_id = messaging_event['recipient']['id'] message_text = messaging_event['message']['text'] send_message(sender_id, 'You said: ' + message_text) return HttpResponse('OK') def send_message(recipient_id, message_text): params = { 'access_token': PAGE_ACCESS_TOKEN, 'recipient': json.dumps({'id': recipient_id}), 'message': json.dumps({'text': message_text}) } headers = {'Content-type': 'application/json'} r = requests.post('https://graph.facebook.com/v12.0/me/messages', params=params, headers=headers)
Давайте разберем код. Мы создали представление fb_webhook
, которое отслеживает события веб-перехватчиков Facebook. Мы добавили декоратор @csrf_exempt
, чтобы обойти защиту CSRF для этого представления.
Представление проверяет, является ли входящий запрос запросом GET. Если это так, он проверяет, соответствует ли параметр hub.verify_token
нашему собственному токену проверки. Если это так, он возвращает параметр hub.challenge
для проверки подлинности приложения.
Если входящий запрос является запросом POST, он извлекает идентификатор отправителя, идентификатор получателя и текст сообщения из запроса. Мы создали вспомогательную функцию под названием send_message
, которая использует библиотеку requests
для отправки сообщения отправителю с помощью маркера доступа к странице.
Далее мы создадим шаблон URL, который сопоставляется с представлением fb_webhook
. В файле urls.py
вашего проекта Django добавьте следующий код:
from django.urls import path from fbchatbot.views import fb_webhook urlpatterns = [ path('fb/webhook', fb_webhook), ]
Этот шаблон URL будет прослушивать события веб-перехватчика Facebook в конечной точке /fb/webhook
.
Наконец, мы настроим наше приложение Facebook для отправки событий в наше приложение Django. В настройках вашего приложения Facebook перейдите на страницу веб-перехватчиков и подпишитесь на веб-перехватчик сообщений. Введите URL-адрес вашего приложения Django (например, `http://
localhost:8000/fb/webhook) as the "Callback URL". Set the "Verify Token" to the same value as the
tokenvariable in your
views.py`.
После того, как вы сохранили настройки веб-перехватчика, ваш чат-бот Facebook Messenger должен быть готов к работе! Проверьте это, отправив сообщение на страницу вашего бота в Facebook, и убедитесь, что он отвечает тем же сообщением.
В заключение, создание чат-бота Facebook Messenger с Django включает в себя настройку приложения и страницы Facebook, создание приложения Django с представлением для обработки событий веб-перехватчика и настройку приложения Facebook для отправки событий в ваше приложение Django. С помощью этой настройки вы можете создать мощного чат-бота, который сможет взаимодействовать с вашими пользователями на популярной платформе Facebook Messenger.