Перейти к содержанию

Webim CRM postMessage Interface

Для обмена информацией между Webim, встроенным через iframe в другой веб-интерфейс (обычно это CRM), и этой CRM используется механизм window.postMessage(). postMessage позволит отправлять события между родительским окном CRM и встроенным в него РМО, а также обмениваться командами и осуществлять некоторые действия в CRM из РМО, не используя при этом интерфейс самой CRM.

Передаваемые события

При включении postMessage-интеграции Webim начинает передавать в родительское окно CRM-системы события типов, описанных в данном разделе.

Для того, чтобы отправлять наборы данных CRM, на сервере Webim должны быть заданы соответствующие настройки, так как по умолчанию это запрещено из соображений безопасности. Если сервис Webim размещён на облачных серверах, то необходимо обращаться в техническую поддержку Webim. Если на ваших серверах, в конфигурации аккаунта в поле operator_iframe_allowed_parent_origin требуется добавить origin окна (окон), на которые требуется отправлять события.

В теории, РМО можно встроить в любую CRM, которая предусматривает возможность расширения своего интерфейса и вставки сторонних разработчиков в свой веб-интерфейс через iframe. На практике тестировалось встраивание через iframe в Siebel CRM.

Данные передаются в формате JSON.

Общий вид передаваемых данных:

{
    "source": "webim",
    "event": (тип события),
    "params": (дополнительные параметры)
}

Пример передаваемых данных:

{
    "source": "webim",
    "event": "chatClosedByOperator",
    "params": {
        "webimVisitorId": "c3fa5841c772895f8645b33ac784f694",
        "providedVisitorId": "12345",
        "chatId": 1024,
        "siebelId": "4-1GQJDL78",
        "channelId": "073afd9ccfee448dba19a5c974940bfc",
        "channelType": "vk",
        "channelUserId": "16248561",
        "channelUserName": "Пётр Петрович"
    }
}

Событие newMessageAdded

Событие вызывается, когда посетитель или оператор оставляет сообщение в чате. Пример полей объекта params для события newMessageAdded:

{
    "webimVisitorId": "c3fa5841c772895f8645b33ac784f694",
    "providedVisitorId": "12345",
    "chatId": 483,
    "sessionId" : "c9905a4eab2a4148add9b1c8ac97ad7d",
    "kind": "visitor",
    "messageText": "Здравствуйте",
    "siebelId": "4-1GQDLH42"
}

Описание полей:

Название параметра Тип Описание
webimVisitorId String Внутренний идентификатор посетителя в системе Webim.

Пример: e01baca71a28557b52b4e6038d12bcb8
providedVisitorId String Идентификатор посетителя, присваиваемый в системе клиента, сообщаемый клиентом сервису Webim. Его вид зависит от того, какого вида идентификаторы используются в системе клиента.
chatId Integer Идентификатор чата Webim, который создаётся, как правило, после первого сообщения посетителя.

Пример: 874
sessionId String Идентификатор сессии Webim.

Пример: c8405a4eab2a4945add9b1c8ac97ad7d
kind String Тип сообщения. Полный перечень типов и подтипов сообщений можно посмотреть здесь.
messageText String Текст сообщения.
SiebelId String Идентификатор посетителя в CRM Siebel.

Пример: 4-1GQJDL78

Событие chatClosedByOperator

Событие вызывается, когда чат был закрыт оператором. Пример полей объекта params для события chatClosedByOperator (посетитель с канала общения ВКонтакте):

{
    "webimVisitorId": "c3fa5841c772895f8645b33ac784f694",
    "providedVisitorId": "12345",
    "chatId": 1024
    "siebelId": "4-1GQJDL78",
    "channelId": "073afd9ccfee448dba19a5c974940bfc",
    "channelType": "vk",
    "channelUserId": "16248561",
    "channelUserName": "Пётр Петрович"
}

Пример полей объекта params для события chatClosedByOperator (посетитель из неавторизованной зоны):

{
    "webimVisitorId": "c3fa5841c772895f8645b33ac784f694",
    "providedVisitorId": null,
    "chatId": 1024
    "siebelId": null,
    "channelId": null,
    "channelType": null,
    "channelUserId": null,
    "channelUserName": null
}

Описание полей:

Название параметра Тип Описание
webimVisitorId String Внутренний идентификатор посетителя в системе Webim.

Пример: e01baca71a28557b52b4e6038d12bcb8
providedVisitorId String Идентификатор посетителя, присваиваемый в системе клиента, сообщаемый клиентом сервису Webim. Его вид зависит от того, какого вида идентификаторы используются в системе клиента.
chatId Integer Идентификатор чата Webim, который создаётся, как правило, после первого сообщения посетителя.

Пример: 874
SiebelId String Идентификатор посетителя в CRM Siebel.

Пример: 4-1GQJDL78
channelId String Идентификатор канала, из которого поступил чат, в системе Webim.

Пример: 073afd9ccfee448dba19a5c974940bfc
channelType String Тип канала, откуда поступило обращение.

Пример: telegram
channelUserId String Идентификатор посетителя на стороне канала. Его вид зависит от того, какого вида идентификаторы используются в канале.

Пример: 95851142 (ID посетителя в Telegram)
channelUserName String Имя посетителя в канале, с которого поступил чат.

Пример: username

Событие visitorAuthorized

Событие вызывается, когда посетитель авторизуется. Общий вид:

{
    "old": { //данные до авторизации
        "webimVisitorId": "66b46319af05e55ac9fd34aa541e9eee",
        "providedVisitorId": null,
        "siebelId": null
    },
    "new": { //данные после авторизации
        "webimVisitorId": "52eed6ec3c12494a88e62e2ff636c2a9",
        "providedVisitorId": "7925",
        "siebelId": null
    }
}

Описание полей:

Название параметра Тип Описание
webimVisitorId String Внутренний идентификатор посетителя в системе Webim.

Пример: e01baca71a28557b52b4e6038d12bcb8
providedVisitorId String Идентификатор посетителя, присваиваемый в системе клиента, сообщаемый клиентом сервису Webim. При каждой новой авторизации его значение заменяется на новое. Его вид зависит от того, какого вида идентификаторы используются в системе клиента.
SiebelId String Идентификатор посетителя в CRM Siebel.

Пример: 4-1GQJDL78

Событие visitorSelected

Событие вызывается, когда оператор открыл чат с посетителем в РМО. Пример:

{
    "webimVisitorId": "c3fa5841c772895f8645b33ac784f694",
    "providedVisitorId": "12345",
    "chatId": 874,
    "sessionId" : "c9905a4eab2a4148add9b1c8ac97ad7d",
    "taskId": "20913584",
    "siebelId": "4-1GQJDL78"
}

Описание полей:

Название параметра Тип Описание
webimVisitorId String Внутренний идентификатор посетителя в системе Webim.

Пример: e01baca71a28557b52b4e6038d12bcb8
providedVisitorId String Идентификатор посетителя, присваиваемый в системе клиента, сообщаемый клиентом сервису Webim. Его вид зависит от того, какого вида идентификаторы используются в системе клиента.
chatId Integer Идентификатор чата Webim, который создаётся, как правило, после первого сообщения посетителя.

Пример: 874
sessionId String Идентификатор сессии Webim.

Пример: c8405a4eab2a4945add9b1c8ac97ad7d
taskId String Идентификатор задачи в CRM, обогащающий объект посетителя. Связан с siebelId. Используется в маршрутизаторе чатов.
SiebelId String Идентификатор посетителя в CRM Siebel.

Пример: 4-1GQJDL78

Событие notificationAdded

Событие вызывается, когда приходит уведомление. Пример параметра params для события notificationAdded:

{
    "notification": {
        "id": "c9905a4eab2a4148add9b1c8ac97ad7d",
        "kind": "visitor",
        "text": "Посетитель покинул чат",
        "sessionId": "c3fa5841c772895f8645b33ac784f694"
    }
}

Описание полей параметра params:

Название параметра Тип Описание
id String Идентификатор уведомления.

Пример: c9905a4eab2a4148add9b1c8ac97ad7d
kind String Тип уведомления.
text String Текст уведомления.
sessionId String Идентификатор сессии Webim.

Пример: c3fa5841c772895f8645b33ac784f694

Событие notificationRemoved

Событие вызывается, если уведомление было удалено (вне зависимости от того, было ли оно отсмотрено пользователем). Пример параметра params для события notificationRemoved:

{
    "notification": {
        "id": "c9905a4eab2a4148add9b1c8ac97ad7d",
    }
}

Описание полей параметра params:

Название параметра Тип Описание
id String Идентификатор уведомления.

Пример: c9905a4eab2a4148add9b1c8ac97ad7d

Приходящие события

При включении postMessage-интеграции Webim получает из родительского окна CRM-системы события типа message.

Событие message

Webim прослушивает приходящие события типа message, при помощи которого родительское окно CRM передаёт данные в РМО через iframe.

Описание параметров события типа message:

Название параметра Тип Пример Описание Обязательность
source Object Ссылка на объект window, отправивший событие. Source может быть использован для установки соединения между окнами с разными origins. Нет
origin String https://somecrm.com URL-адрес CRM-системы клиента. Да
data.action String start_outgoing_chat Событие, отправляемое CRM-системой клиента. Может принимать значение start_outgoing_chat, при котором оператором начинается исходящий чат. Да
data.params.webimVisitorId String e01baca71a28557b52b4e6038d12bcb8 Внутренний идентификатор посетителя в системе Webim. Да
data.params.sessionId String c8405a4eab2a4945add9b1c8ac97ad7d Идентификатор сессии Webim. Да

При неудачной попытке начать чат могут быть возвращены следующие ошибки, текст которых определяется в редакторе ресурсов:

Код ошибки Текст ошибки
operator_cant_start_chat_with_visitor_from_another_department Вы не можете приглашать к диалогу посетителей из другого отдела.
visitor_starting_chat_from_his_side Вы не можете пригласить к диалогу посетителя в связи с тем, что он начинает диалог со своей стороны.
visitor_already_in_chat Посетитель уже в диалоге.
no_tariff_option Для выполнения данного действия необходимо перейти на другой тариф либо подключить соответствующую тарифную опцию.
unable_to_start_outgoing_chat При создании чата произошла ошибка [при неизвестной ошибке].