Настройка уведомлений о статусе заказа в WhatsApp 1С-Битрикс
WhatsApp не предоставляет публичный Bot API как Telegram. Отправка уведомлений клиентам в WhatsApp требует использования WhatsApp Business API (официальный путь через Meta) или неофициальных шлюзов. Выбор метода определяет стоимость, надёжность и соответствие правилам платформы — последнее важно, если аккаунт нарушает TOS, его блокируют без предупреждения.
Варианты интеграции
1. WhatsApp Business API (официальный)
Доступ через Cloud API Meta или через BSP (Business Solution Provider): Twilio, MessageBird, WABA360, i2crm. Требует верификации бизнеса в Meta, одобрения шаблонов сообщений. Шаблоны проходят модерацию, не все форматы разрешены. Стоимость — за исходящее сообщение.
2. Шлюзы на базе WhatsApp Web (неофициальные)
Chat-api.com, green-api.com и аналоги. Работают через эмуляцию WhatsApp Web с номером телефона, подключённым к аккаунту. Риск блокировки выше, но проще в интеграции и дешевле. Для уведомлений о заказах с небольшим объёмом (<500 сообщений/день) — рабочий вариант.
Интеграция через Green API (шлюз)
Green API предоставляет REST API с минимальным порогом входа. Для тестирования — бесплатный инстанс.
class WhatsAppService
{
private string $apiUrl;
private string $idInstance;
private string $apiToken;
public function __construct()
{
$settings = \Bitrix\Main\Config\Configuration::getValue('custom');
$this->idInstance = $settings['whatsapp_instance_id'];
$this->apiToken = $settings['whatsapp_api_token'];
$this->apiUrl = "https://api.green-api.com/waInstance{$this->idInstance}";
}
public function sendMessage(string $phone, string $message): bool
{
// Приводим номер к формату [email protected]
$phone = preg_replace('/[^0-9]/', '', $phone);
if (str_starts_with($phone, '8')) {
$phone = '7' . substr($phone, 1);
}
$chatId = $phone . '@c.us';
$url = "{$this->apiUrl}/sendMessage/{$this->apiToken}";
$payload = json_encode([
'chatId' => $chatId,
'message' => $message,
]);
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
return isset($response['idMessage']);
}
}
Обработчик события заказа
// /local/php_interface/init.php
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'sale',
'OnSaleOrderStatusChange',
function (\Bitrix\Main\Event $event) {
$order = $event->getParameter('ENTITY');
$statusId = $order->getField('STATUS_ID');
// Получаем телефон покупателя из свойств заказа
$propCollection = $order->getPropertyCollection();
$phoneProp = $propCollection->getItemByOrderPropertyCode('PHONE');
$phone = $phoneProp ? $phoneProp->getValue() : null;
if (!$phone) {
return;
}
$statusTexts = [
'N' => 'Ваш заказ #%d принят. Ожидайте подтверждения.',
'P' => 'Заказ #%d передан курьеру.',
'D' => 'Заказ #%d ожидает вас в пункте выдачи.',
'F' => 'Заказ #%d выполнен. Спасибо!',
'X' => 'Заказ #%d отменён.',
];
if (!isset($statusTexts[$statusId])) {
return;
}
$message = sprintf($statusTexts[$statusId], $order->getId());
$wa = new WhatsAppService();
$wa->sendMessage($phone, $message);
}
);
Важные ограничения WhatsApp Business API
При использовании официального Meta API (Cloud API) сообщения без предварительного opt-in от пользователя запрещены. Шаблоны сообщений должны быть одобрены Meta перед отправкой. Пример структуры шаблона:
{
"name": "order_status_update",
"language": { "code": "ru" },
"components": [
{
"type": "body",
"text": "Статус вашего заказа №{{1}} изменён: {{2}}."
}
]
}
Запрос к Meta Cloud API:
$response = Http::post(
"https://graph.facebook.com/v18.0/{$phoneNumberId}/messages",
[
'messaging_product' => 'whatsapp',
'to' => $recipientPhone,
'type' => 'template',
'template' => [
'name' => 'order_status_update',
'language' => ['code' => 'ru'],
'components' => [[
'type' => 'body',
'parameters' => [
['type' => 'text', 'text' => $orderId],
['type' => 'text', 'text' => $statusText],
],
]],
],
]
);
Сроки настройки
Интеграция через Green API или аналогичный шлюз, обработчик событий, форматирование сообщений по статусам — 4–8 часов. Официальный WhatsApp Business API с верификацией Meta, шаблонами и тестированием — 3–5 рабочих дней.







