Добавление собственного типа коннекторов
Регистрация обработчика
Обработчик события OnImConnectorBuildList модуля imconnector регистрируется либо в init.php, либо при установке модуля.
Пример обработчика:
\Bitrix\Main\EventManager::getInstance()->addEventHandler("imconnector", "OnImConnectorBuildList", Array("MyClass", "OnImConnectorBuildListHandler")); class MyClass { function OnImConnectorBuildListHandler() { return array( //ID коннектора 'ID' => 'baseconnector', //Имя коннектора 'NAME' => 'Базовый коннектор', //Описание иконки 'ICON' => array( 'DATA_IMAGE' => 'data:image/svg+xml;charset=US-ASCII,%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20x%3D%220px%22%20y%3D%220px%22%0A%09%20viewBox%3D%220%200%2070%2071%22%20style%3D%22enable-background%3Anew%200%200%2070%2071%3B%22%20xml%3Aspace%3D%22preserve%22%3E%0A%3Cpath%20fill%3D%22%230C99BA%22%20class%3D%22st0%22%20d%3D%22M34.7%2C64c-11.6%2C0-22-7.1-26.3-17.8C4%2C35.4%2C6.4%2C23%2C14.5%2C14.7c8.1-8.2%2C20.4-10.7%2C31-6.2%0A%09c12.5%2C5.4%2C19.6%2C18.8%2C17%2C32.2C60%2C54%2C48.3%2C63.8%2C34.7%2C64L34.7%2C64z%20M27.8%2C29c0.8-0.9%2C0.8-2.3%2C0-3.2l-1-1.2h19.3c1-0.1%2C1.7-0.9%2C1.7-1.8%0A%09v-0.9c0-1-0.7-1.8-1.7-1.8H26.8l1.1-1.2c0.8-0.9%2C0.8-2.3%2C0-3.2c-0.4-0.4-0.9-0.7-1.5-0.7s-1.1%2C0.2-1.5%2C0.7l-4.6%2C5.1%0A%09c-0.8%2C0.9-0.8%2C2.3%2C0%2C3.2l4.6%2C5.1c0.4%2C0.4%2C0.9%2C0.7%2C1.5%2C0.7C26.9%2C29.6%2C27.4%2C29.4%2C27.8%2C29L27.8%2C29z%20M44%2C41c-0.5-0.6-1.3-0.8-2-0.6%0A%09c-0.7%2C0.2-1.3%2C0.9-1.5%2C1.6c-0.2%2C0.8%2C0%2C1.6%2C0.5%2C2.2l1%2C1.2H22.8c-1%2C0.1-1.7%2C0.9-1.7%2C1.8v0.9c0%2C1%2C0.7%2C1.8%2C1.7%2C1.8h19.3l-1%2C1.2%0A%09c-0.5%2C0.6-0.7%2C1.4-0.5%2C2.2c0.2%2C0.8%2C0.7%2C1.4%2C1.5%2C1.6c0.7%2C0.2%2C1.5%2C0%2C2-0.6l4.6-5.1c0.8-0.9%2C0.8-2.3%2C0-3.2L44%2C41z%20M23.5%2C32.8%0A%09c-1%2C0.1-1.7%2C0.9-1.7%2C1.8v0.9c0%2C1%2C0.7%2C1.8%2C1.7%2C1.8h23.4c1-0.1%2C1.7-0.9%2C1.7-1.8v-0.9c0-1-0.7-1.8-1.7-1.9L23.5%2C32.8L23.5%2C32.8z%22/%3E%0A%3C/svg%3E%0A', 'COLOR' => '#1900ff', //Возможно 'SIZE' => '90%', 'POSITION' => 'center' ), 'ICON_DISABLED' => array( 'DATA_IMAGE' => 'data:image/svg+xml;charset=US-ASCII,%3Csvg%20version%3D%221.1%22%20id%3D%22Layer_1%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20x%3D%220px%22%20y%3D%220px%22%0A%09%20viewBox%3D%220%200%2070%2071%22%20style%3D%22enable-background%3Anew%200%200%2070%2071%3B%22%20xml%3Aspace%3D%22preserve%22%3E%0A%3Cpath%20fill%3D%22%235c6470%22%20class%3D%22st0%22%20d%3D%22M34.7%2C64c-11.6%2C0-22-7.1-26.3-17.8C4%2C35.4%2C6.4%2C23%2C14.5%2C14.7c8.1-8.2%2C20.4-10.7%2C31-6.2%0A%09c12.5%2C5.4%2C19.6%2C18.8%2C17%2C32.2C60%2C54%2C48.3%2C63.8%2C34.7%2C64L34.7%2C64z%20M27.8%2C29c0.8-0.9%2C0.8-2.3%2C0-3.2l-1-1.2h19.3c1-0.1%2C1.7-0.9%2C1.7-1.8%0A%09v-0.9c0-1-0.7-1.8-1.7-1.8H26.8l1.1-1.2c0.8-0.9%2C0.8-2.3%2C0-3.2c-0.4-0.4-0.9-0.7-1.5-0.7s-1.1%2C0.2-1.5%2C0.7l-4.6%2C5.1%0A%09c-0.8%2C0.9-0.8%2C2.3%2C0%2C3.2l4.6%2C5.1c0.4%2C0.4%2C0.9%2C0.7%2C1.5%2C0.7C26.9%2C29.6%2C27.4%2C29.4%2C27.8%2C29L27.8%2C29z%20M44%2C41c-0.5-0.6-1.3-0.8-2-0.6%0A%09c-0.7%2C0.2-1.3%2C0.9-1.5%2C1.6c-0.2%2C0.8%2C0%2C1.6%2C0.5%2C2.2l1%2C1.2H22.8c-1%2C0.1-1.7%2C0.9-1.7%2C1.8v0.9c0%2C1%2C0.7%2C1.8%2C1.7%2C1.8h19.3l-1%2C1.2%0A%09c-0.5%2C0.6-0.7%2C1.4-0.5%2C2.2c0.2%2C0.8%2C0.7%2C1.4%2C1.5%2C1.6c0.7%2C0.2%2C1.5%2C0%2C2-0.6l4.6-5.1c0.8-0.9%2C0.8-2.3%2C0-3.2L44%2C41z%20M23.5%2C32.8%0A%09c-1%2C0.1-1.7%2C0.9-1.7%2C1.8v0.9c0%2C1%2C0.7%2C1.8%2C1.7%2C1.8h23.4c1-0.1%2C1.7-0.9%2C1.7-1.8v-0.9c0-1-0.7-1.8-1.7-1.9L23.5%2C32.8L23.5%2C32.8z%22/%3E%0A%3C/svg%3E%0A', //'COLOR' => '#1900ff', //Возможно 'SIZE' => '90%', 'POSITION' => 'center' ), //ID компонент 'COMPONENT' => 'bitrix:imconnector.baseconnector', //Можно ли удалять пришедшие сообщения 'DEL_EXTERNAL_MESSAGES' => true, //Может ли оператор редактировать свои сообщения 'EDIT_INTERNAL_MESSAGES' => true, //Может ли оператор удалять свои сообщения 'DEL_INTERNAL_MESSAGES' => true, //Можно ли использовать канал для рассылки? 'NEWSLETTER' => true, //Можно ли отправлять системные сообщения в канал? 'NEED_SYSTEM_MESSAGES' => true, //Стоит ли отправлять в канал подпись в самом тексте сообщения? 'NEED_SIGNATURE' => true, //Является ли чат групповым? 'CHAT_GROUP' => false, ); } }
Обработчик должен вернуть массив со следующими параметрами:
|
Настройка канала:
Тип коннектора работает в рамках настроенной открытой линии. Со своей стороны необходимо хранить информацию об ID открытой линии, которая настроена.
В состав модуля включён компонент imconnector.baseconnector, который можно использовать как основу для кастомизации и создания собственного компонента настройки.
Собственный компонент должен работать в режиме ajax и не приводить к перезагрузке страницы. Также в компонент передается параметр $this->arParams['LINE']
, в котором передается ID открытой линии.
В компоненте производится настройка, которая важна и нужна для вашего кода, запрашиваются дополнительные параметры (либо же не запрашиваются, а вы просто при включении канала регистрируете еще одну ОЛ.
Системе важно, чтобы вы правильно установили статусы. За это отвечает класс \Bitrix\ImConnector\Status
.
Получить объект статуса можно вызовом:
$this->status = \Bitrix\ImConnector\Status::getInstance($this->connector, $this->arParams['LINE']);
$this->status->isStatus();
- метод возвращает, готов ли коннектор к работе.
$this->status->getActive()
- активирован ли канал.
$this->status->getConnection()
- успешно ли прошло соединение.
$this->status->getRegister()
- успешно ли прошла регистрация.
$this->status->getError()
- есть ли ошибка в работе (блокирующая).
Канал считается готовым к работе, если канал для данной Открытой Линии активен, успешно прошло тестовое соединение и успешно зарегистрирован. А так же отсутствует ошибка.
Активировать канал можно вызовом $this->status->setActive(true);
Установить статус успешной проверки подключения: $this->status->setConnection(true);
Установить статус успешной регистрации: $this->status->setRegister(true);
Сбросить ошибку (чтобы канал возобновил работу) можно с помощью $this->status->setError(false);
.
При удалении коннектора (отключении) нужно вызвать статический метод:
\Bitrix\ImConnector\Status::delete($this->connector, $this->arParams['LINE']);
При любых изменениях настроек нужно сбрасывать кеш информации о каналах:
$cache = \Bitrix\Main\Data\Cache::createInstance(); $cache->clean($this->arParams['LINE'], \Bitrix\ImConnector\Library::CACHE_DIR_INFO_CONNECTORS_LINE);
Либо можно использовать метод cleanCache из примера в компоненте.
Работа с сообщениями
После настройки канала для работы с сообщениями используйте методы класса CustomConnectors.
Так же используйте события для новых сообщений, их изменений или удаления.
и Ваше мнение важно для нас