19.04.2024
В этой статье мы создадим собственный коннектор открытой линии и чат для него, используя только API ядра Битрикс24, без применения REST API
.
Создадим новую запись в таблице b_imconnectors_custom_connectors
.
<?php
use Bitrix\ImConnector\Model\CustomConnectorsTable;
use Bitrix\Main\Loader;
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
Loader::includeModule('imopenlines');
Loader::includeModule('imconnector');
$params = [
'ID_CONNECTOR' => 'site_chat',
'NAME' => 'Чат ЛК сайта',
...
];
$result = CustomConnectorsTable::add($params)->isSuccess();
?>
Затем активируем коннектор для нужной открытой линии (ID = 5
):
$status = StatusConnector::getInstance('site_chat', 5);
$status
->setActive(true)
->setConnection(true)
->setRegister(true)
->setError(false);
$status->save();
Пример отправки тестового сообщения от пользователя:
$data = [[
'user' => [
'id' => 1,
...
],
'message' => [
'text' => 'Тестовое сообщение',
...
],
]];
$mess = Bitrix\ImConnector\CustomConnectors::sendMessages('site_chat', 5, $data);
Обрабатываем исходящие сообщения с помощью события OnSendMessageCustom
:
AddEventHandler("imconnector", "OnSendMessageCustom", "OnSendMessageCustomHandler");
function OnSendMessageCustomHandler($connector, $line, $data)
{
$statusDelivery = [];
foreach ($data as $message) {
$statusDelivery[] = [
'im' => $message['im'],
...
];
}
if (!empty($statusDelivery)) {
\Bitrix\ImConnector\CustomConnectors::sendStatusDelivery($connector, $line, $statusDelivery);
\Bitrix\ImConnector\CustomConnectors::sendStatusReading($connector, $line, $statusDelivery);
}
}
sendStatusDelivery
— статус «доставлено»
sendStatusReading
— статус «прочитано»
Теперь у вас есть собственный коннектор для открытых линий без REST API, полностью на ядре.
Категории: Битрикс