Разработка бота для Facebook Messenger с интеграцией Битрикс24

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Разработка бота для Facebook Messenger с интеграцией Битрикс24
Средняя
~1-2 недели
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    989

Разработка бота для Facebook Messenger с интеграцией Битрикс24

Facebook Messenger — рабочий канал привлечения клиентов для бизнеса, ориентированного на международную аудиторию или работающего с Facebook Ads. Бот принимает обращения в Messenger, квалифицирует их по сценарию и создаёт лиды в Битрикс24. Менеджер отвечает клиенту из карточки CRM — переключаться между вкладками не нужно.

Технические основы: Messenger Platform API

Meta предоставляет Messenger Platform API для автоматизации работы с сообщениями страницы. Поток данных:

Клиент → Facebook Page Messenger
              ↓
        Meta Webhook → POST на сервер бота
              ↓
        Сервер бота → Messenger Send API
                   → Битрикс24 REST API

Для работы нужны:

  • Facebook Developer App с продуктом Messenger.
  • Страница Facebook (Page), привязанная к приложению.
  • PAGE_ACCESS_TOKEN — долгоживущий токен страницы.
  • Верификация webhook через verify_token.

Верификация и приём webhook

Meta перед активацией webhook отправляет GET-запрос для верификации:

GET /webhook?hub.mode=subscribe&hub.verify_token=MY_TOKEN&hub.challenge=CHALLENGE_CODE

Сервер проверяет verify_token и возвращает hub.challenge.

Входящие сообщения приходят как POST:

{
  "entry": [{
    "messaging": [{
      "sender": { "id": "123456789" },
      "recipient": { "id": "PAGE_ID" },
      "message": {
        "mid": "m_abc123",
        "text": "Добрый день, интересует ваш продукт"
      }
    }]
  }]
}

Важно: Meta ждёт ответ 200 OK в течение 5 секунд, иначе начинает повторные попытки. Тяжёлую обработку (запросы к Б24) выносим в очередь.

Отправка сообщений

function sendMessengerMessage(string $psid, string $text, array $quickReplies = []): void {
    $payload = [
        'recipient' => ['id' => $psid],
        'message'   => ['text' => $text],
    ];

    if ($quickReplies) {
        $payload['message']['quick_replies'] = $quickReplies;
    }

    $ch = curl_init("https://graph.facebook.com/v18.0/me/messages?access_token=" . PAGE_ACCESS_TOKEN);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
    curl_exec($ch);
}

// Быстрые ответы (кнопки-подсказки)
$quickReplies = [
    ['content_type' => 'text', 'title' => 'Да, интересует',  'payload' => 'INTERESTED'],
    ['content_type' => 'text', 'title' => 'Просто смотрю',   'payload' => 'BROWSING'],
];
sendMessengerMessage($psid, 'Помочь с выбором?', $quickReplies);

Generic Template для карточек товаров

Messenger поддерживает структурированные сообщения — карусели с изображениями, кнопками, ссылками:

$template = [
    'recipient' => ['id' => $psid],
    'message'   => [
        'attachment' => [
            'type'    => 'template',
            'payload' => [
                'template_type' => 'generic',
                'elements'      => [[
                    'title'     => $productName,
                    'image_url' => $productImage,
                    'subtitle'  => $productDescription,
                    'buttons'   => [
                        ['type' => 'web_url',  'url' => $productUrl, 'title' => 'Подробнее'],
                        ['type' => 'postback', 'title' => 'Заказать', 'payload' => "ORDER_{$productId}"],
                    ],
                ]],
            ],
        ],
    ],
];

Получение профиля пользователя

Facebook позволяет запросить имя и аватар пользователя по PSID:

$profile = json_decode(file_get_contents(
    "https://graph.facebook.com/{$psid}?fields=first_name,last_name,profile_pic&access_token=" . PAGE_ACCESS_TOKEN
), true);

Эти данные заполняют поля лида в Битрикс24: NAME, LAST_NAME, UF_FB_PSID.

Создание лида в Битрикс24 и сохранение диалога

$leadId = $b24->callMethod('crm.lead.add', [
    'fields' => [
        'TITLE'          => "Messenger: {$firstName} {$lastName}",
        'NAME'           => $firstName,
        'LAST_NAME'      => $lastName,
        'SOURCE_ID'      => 'WEBFORM',
        'SOURCE_DESCRIPTION' => 'Facebook Messenger',
        'UF_CRM_FB_PSID' => $psid,
        'COMMENTS'       => "Facebook Profile ID: {$psid}",
    ],
])['result'];

// Сохраняем каждое сообщение как активность
$b24->callMethod('crm.activity.add', [
    'fields' => [
        'OWNER_TYPE_ID' => 1,
        'OWNER_ID'      => $leadId,
        'TYPE_ID'       => 4,
        'SUBJECT'       => 'Сообщение Facebook Messenger',
        'DESCRIPTION'   => "{$firstName}: {$messageText}",
        'DEADLINE'      => date('Y-m-d\TH:i:s'),
    ],
]);

Handoff Protocol: передача живому оператору

Когда клиент хочет поговорить с менеджером, бот передаёт управление через Handoff Protocol (pass_thread_control). При наличии Inbox или LiveChat-интеграции оператор подхватывает диалог. После завершения диалог возвращается боту через take_thread_control.

Ограничения и требования Meta

  • Бот должен ответить клиенту в течение 24 часов после последнего сообщения (стандартное окно). За пределами окна — только одобренные шаблоны сообщений (Message Tags).
  • HTTPS обязателен для webhook.
  • Приложение проходит ревью Meta перед запуском на публику (pages_messaging permission).
  • Политика конфиденциальности и обработки данных — обязательное требование Meta при ревью.

Сроки

Этап Срок
Настройка Meta App, webhook, верификация 1–2 дня
Сценарий бота, состояния, быстрые ответы 3–4 дня
Интеграция с Б24: лиды, активности 2–3 дня
Шаблоны сообщений, Generic Templates 1–2 дня
Передача оператору (Handoff) 1–2 дня
Тестирование + ревью приложения Meta 2–4 дня

Итого: 2–3 недели с учётом ревью Meta (занимает до 5 рабочих дней).