Views: 2778
Last Modified: 24.06.2021

Handler registration

Event handler OnImConnectorBuildList for imconnector module is registered either in init.php, or when installing the module.

Handler example:

\Bitrix\Main\EventManager::getInstance()->addEventHandler("imconnector", "OnImConnectorBuildList", Array("MyClass", "OnImConnectorBuildListHandler"));

class MyClass
{
  function OnImConnectorBuildListHandler()
  {
     return array(
        //connector ID
        'ID' => 'baseconnector',
        //Connector name
        'NAME' => 'Base connector',
        //Icon description
        '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',
           //Possible
           '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',
           //Possible
           'SIZE' => '90%',
           'POSITION' => 'center'
        ),
        //component ID
        'COMPONENT' => 'bitrix:imconnector.baseconnector',
        //Permission to delete received messages
        'DEL_EXTERNAL_MESSAGES' => true,
        //Permission to edit his/her messages
        'EDIT_INTERNAL_MESSAGES' => true,
        //Permission to delete his/her messages
        'DEL_INTERNAL_MESSAGES' => true,
        //Can channel be used for email campaign?
        'NEWSLETTER' => true,
        //Can system messages be sent to channel?
        'NEED_SYSTEM_MESSAGES' => true,
        //Can signature be sent to channel inside the message?
        'NEED_SIGNATURE' => true,
        //Is the chat is a group chat?
        'CHAT_GROUP' => false,
     );
  }
}

Handler must return an array with the following parameters:

Returned parameters
Parameter Description
ID Connector ID, unique for the complete system. Required parameter. It's better to add a custom prefix to avoid conflicting with current and possible future connector IDs. The following characters can be used: digits, letters and underscore.
NAME Displayed connector name. Required.
ICON Array with connector icon description. Required. Array key:
  • DATA_IMAGE - DATA image for SVG icon. Service http://www.grumpicon.com/ can be used for conversion. Required
  • COLOR - color
  • SIZE - size
  • POSITION - position svg
COMPONENT Component ID with indicated component namespace title. Required.
DEL_EXTERNAL_MESSAGES Delete inbound messages? Default value: yes.
EDIT_INTERNAL_MESSAGES Edit you messages? Default value: yes.
DEL_INTERNAL_MESSAGES Delete your messages? Default value: yes.
NEWSLETTER Use channel for CRM newsletter? Default value: yes.
NEED_SYSTEM_MESSAGES Send system messages in channel? For example: greeting, closeout message and etc. Default value: yes.
NEED_SIGNATURE Send signature inside the message? Default value: yes. For example: string with operator name is added in front of the message.
CHAT_GROUP Is this channel chat is the group chat, accessible by external users? Default value: no.

Channel setup:

Connector type works within a configured open channel. Save information about a configured open channel ID.

Module includes the component imconnector.baseconnector that may be used as basis for customization and creating its own settings component.

Custom component must operate in the AJAX mode without causing page reload. Also the component receives the parameter $this->arParams['LINE'], with passed open channel ID.

System requires correct statuses indicated in the component. The class \Bitrix\ImConnector\Status is responsible.

Get status object via the call:

 $this->status = \Bitrix\ImConnector\Status::getInstance($this->connector, $this->arParams['LINE']);

$this->status->isStatus(); - method returns, if connector is ready for use.
$this->status->getActive() - activates channel.
$this->status->getConnection() - establishes connector.
$this->status->getRegister() - successful registration.
$this->status->getError() - operation error (blocking).

Channel is deemed as ready for use, if it's active for this Open Channel and test connection is successful and registered. No errors are registered as well.

You can activate the channel by calling $this->status->setActive(true);
Set successful connection status check: $this->status->setConnection(true);
Set successful registration status: $this->status->setRegister(true);
Error reset (for channel to renew operation) can be done via $this->status->setError(false);.

When deleting (disabling) connector, call a static method:

\Bitrix\ImConnector\Status::delete($this->connector, $this->arParams['LINE']);

Upon any config updates, reset channel data cache:

$cache = \Bitrix\Main\Data\Cache::createInstance();
$cache->clean($this->arParams['LINE'], \Bitrix\ImConnector\Library::CACHE_DIR_INFO_CONNECTORS_LINE);

Or use the method cleanCache from the example in component.

Handling the messages

After setting up the channel, use the following methods for handling the messages CustomConnectors.

Also, use the events for creating and deleting new messages.


0


Courses developed by Bitrix24