Налаштування повідомлень про статус замовлення в 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": "uk" },
"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' => 'uk'],
'components' => [[
'type' => 'body',
'parameters' => [
['type' => 'text', 'text' => $orderId],
['type' => 'text', 'text' => $statusText],
],
]],
],
]
);
Терміни налаштування
Інтеграція через Green API або аналогічний шлюз, обробник подій, форматування повідомлень за статусами — 4–8 годин. Офіційний WhatsApp Business API з верифікацією Meta, шаблонами та тестуванням — 3–5 робочих днів.







