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 yourviews.py`.

После того, как вы сохранили настройки веб-перехватчика, ваш чат-бот Facebook Messenger должен быть готов к работе! Проверьте это, отправив сообщение на страницу вашего бота в Facebook, и убедитесь, что он отвечает тем же сообщением.

В заключение, создание чат-бота Facebook Messenger с Django включает в себя настройку приложения и страницы Facebook, создание приложения Django с представлением для обработки событий веб-перехватчика и настройку приложения Facebook для отправки событий в ваше приложение Django. С помощью этой настройки вы можете создать мощного чат-бота, который сможет взаимодействовать с вашими пользователями на популярной платформе Facebook Messenger.