Перейти к основному содержимому
Версия: 4.10

PostMessage API

Лицензия

API доступно только при наличии модуля "IQChannels – GUI. Agent_Widget"

Описание

Postmessage API позволяет встраивать интерфейс оператора в виде iFrame в другие системы. Например CRM или ДБО.

Все сообщения должны отправляться как JSON-объекты. Type сообщения определяет содержание.

Инициализация чата

Для инициализации чата в окне CRM необходимо добавить базовый код встраивания и при необходимости передать инициализационные параметры.

...
<style>
/* стили для изменения размера iframe */
iframe {
border: 0;
width: 50%;
float: right;
height: 100%;
}
</style>
...
<!-- Код iFrame для встраивания на страницу -->
<iframe src="https://iqchannels.iqstore.ru/" width="100%" height="700" id="iQChannels"></iframe>
...
<!-- скрипт для работы с чатом -->
<script>
// с данным режимом сразу будет открываться окно диалога с клиентов при переходе на страницу.
window.onload = function () {
initChat();
}
function initChat(){
var myIframe = document.getElementById("iQChannels");
if (myIframe){
myIframe.contentWindow.postMessage({
"Type": "initChat",
"InitChat": {
"HideTicketList": true, // Скрытие списка обращений в левой части окна чата
"HideClientCard": true, // Скрытие карточки клиента в правой части окна чата при открытом обращении
"HideNavigation": true // Скрытие навигационного меню чата
}
}, '*');
}
}
</script>
...

Сообщения к iQChannels

Сообщения, которые можно отправлять фрейму с iQChannels.

Написать клиенту

Открывает в IQChannels модальное окно с поиском чата по имени клиента.

{
"Type": "write_to_client",
"WriteToClient": {
"Search": "Строка для поиска клиента по имени, ИНН, ID в ДБО"
}
}

Открыть чат с клиентом

Открывает в IQChannels последний диалог с клиентом по одному из указанных параметров:

  • TicketId — идентификатор диалога, который необходимо открыть в IQChannels.
  • CrmId — идентификатор клиента в CRM, по которому будет найден клиент и открыто его последнее обращение в IQChannels.
  • ClientId — идентификатор клиента в iQChannels, по которому будет найден клиент и открыто его последнее обращение в IQChannels.

Если клиент или диалог не будет найден, iQChannels отобразит сообщение об ошибке. Пример сообщения об ошибке - "Клиент с идентификатором CrmId =  2' не найден".

{
"Type": "open_iframe_ticket",
"OpenTicket": {
"ClientId": 1, // id клиента в iQChannels
"CrmId": 2, // id клиента в CRM
"TicketId": 3 // id тикета (обращения)
}
}

Сообщения от iQChannels

Сообщения, которые отправляет frame c iQChannels в сторону родительской страницы.

Инбокс изменился

Отправляет в родительскую страницу событие с изменением счетчиков инбокса.

{
"Type": "inbox_changed",
"InboxChanged": {
"TotalOpenThreads": 3, // Количество открытых тредов в инбоксе.
"TotalUnreadMessages": 7 // Количество непрочитанных сообщений во всех тредах.
}
}

Открыть карточку клиента (при щелчке на ссылку)

Отправляет в родительскую страницу запрос на открытие карточки клиента по кнопке "Открыть в CRM" в текущем Действиях в текущем обращении.

Если в карточке клиента есть CRMULR, тогда в него дополнительно добавляются два параметра:

  • iqchannels_client_id — айди клиента в iQChannels.
  • iqchannels_ticket_id — айди обращения в iQChannels.
{
"Type": "open_client",
"OpenClient": {
// URL клиента в CRM, который IQChannels получил от ДБО с дополнительными параметрами iqchannels_client_id и iqchannels_ticket_id.
"URL": "http://crm/customers/?param=value&iqchannels_client_id=21&iqchannels_ticket_id=412",
"TicketId": 412,
"Client": {
"Id": 21, // Айди клиента в IQChannels
"Name": "Кинг Мартин",
"CRMClientId": "00234",
"Details": {
"ClientId": 21,
"CRMURL": "http://crm/client-id",
"FirstName": "Мартин",
"MiddleName": "Лютер",
"LastName": "Кинг",
"Sex": "мужской",
"Birthday": "15.01.1929",
"Cellphone": "+7 999 123-456",
"Email": "king@example.com",
"INN": "150622624993",
"ExtRef": "XL-283-1238",
"CardRef": "z8j23yzc1"
}
}
}
}

Открыто обращение в чате

Отправляет в родительскую страницу информацию о том, что оператор открыл обращение.

Событие может быть использовано родительской страницей, например, для открытия карточки клиента при переходе оператора к тикету (обращению) клиента.

Если в карточке клиента есть CRMULR, тогда в него дополнительно добавляются два параметра:

  • iqchannels_client_id — айди клиента в iQChannels.
  • iqchannels_ticket_id — айди обращения в iQChannels.
{
"Type": "open_client_from_ticket",
"OpenClient": {
// URL клиента в CRM, который IQChannels получил от ДБО с дополнительными параметрами iqchannels_client_id и iqchannels_ticket_id.
"URL": "http://crm/customers/?param=value&iqchannels_client_id=21&iqchannels_ticket_id=412",
"TicketId": 412,
"Client": {
"Id": 21, // Айди клиента в IQChannels
"Name": "Кинг Мартин",
"CRMClientId": "00234",
"Details": {
"ClientId": 21,
"CRMURL": "http://crm/client-id",
"FirstName": "Мартин",
"MiddleName": "Лютер",
"LastName": "Кинг",
"Sex": "мужской",
"Birthday": "15.01.1929",
"Cellphone": "+7 999 123-456",
"Email": "king@example.com",
"INN": "150622624993",
"ExtRef": "XL-283-1238",
"CardRef": "z8j23yzc1"
}
}
}
}

Закрыто обращение в чате

Отправляет в родительскую страницу информацию о том, что оператор закрыл обращение, переключился на другое обращение или перевел обращение на другого оператора.

Событие может быть использовано родительской страницей, например, для закрытия карточки клиента при переходе оператора к другому тикету (обращению) клиента.

Если в карточке клиента есть CRMULR, тогда в него дополнительно добавляются два параметра:

  • iqchannels_client_id — айди клиента в iQChannels.
  • iqchannels_ticket_id — айди обращения в iQChannels.
{
"Type": "close_client_from_ticket",
"CloseClient": {
// URL клиента в CRM, который IQChannels получил от ДБО с дополнительными параметрами iqchannels_client_id и iqchannels_ticket_id.
"URL": "http://crm/customers/?param=value&iqchannels_client_id=21&iqchannels_ticket_id=412",
"TicketId": 412,
"Reason": "ticket_closed", // причина закрытия - "закрыто обращение" или "ticket_assigned" - "Обращение переназначено"
"Client": {
"Id": 21, // Айди клиента в IQChannels
"Name": "Кинг Мартин",
"CRMClientId": "00234",
"Details": {
"ClientId": 21,
"CRMURL": "http://crm/client-id",
"FirstName": "Мартин",
"MiddleName": "Лютер",
"LastName": "Кинг",
"Sex": "мужской",
"Birthday": "15.01.1929",
"Cellphone": "+7 999 123-456",
"Email": "king@example.com",
"INN": "150622624993",
"ExtRef": "XL-283-1238",
"CardRef": "z8j23yzc1"
}
}
}
}

Пример встраивания чата iQChannels в CRM

...
<style>
/* стили для изменения размера iframe */
iframe {
border: 0;
width: 50%;
float: right;
height: 100%;
}
</style>
...
<!-- Код iFrame для встраивания на страницу -->
<iframe src="https://iqchannels.iqstore.ru/" width="100%" height="700" id="iQChannels"></iframe>
...
<!-- скрипт для работы с чатом -->
<script>
// с данным режимом сразу будет открываться окно диалога с клиентов при переходе на страницу.
window.onload = function () {
openChat(); // чтобы отображалось рабочее место в iqchannels замените openChat() на openDialog()
}
function openChat () { // Если требуется открыть диалог с клиентом
const clientId = айди нужного клиента
const ticketId = либо айди тикета
const crmID = либо crmID клиента
можно всё вместе
const myIframe = document.getElementById('iQChannels');
if (myIframe) {
myIframe.contentWindow.postMessage({
'Type': 'open_iframe_ticket',
'OpenTicket': {
'ClientId': clientId,
'TicketId': ticketId,
'CRMID': crmID
}
}, '*');
}
}
function openDialog(){
var myIframe = document.getElementById("iQChannels");
if (myIframe){
myIframe.contentWindow.postMessage({
"Type": "write_to_client",
"WriteToClient": {
"Search": "Строка для поиска клиента по имени, ИНН, ID в ДБО или CRM"
}
}, '*');
}
}
</script>
...
<button onclick="openDialog()">Открыть поиск</button>
...

Распространенные ошибки

Проблема \ ошибкаРешение
1.Не загружается виджет, вместо этого отображается 404Убедитесь, что вы указали корректный адрес стенда с установленной iQChannels <iframe src="https://your-iqchannels.web/" id="iQChannels"></iframe>
2.Виджет загружается, но при авторизации появляется ошибка 404Убедитесь, что адрес стенда с установленной iQChannels ссылается на корневую страницу "/". Корректный пример: <iframe src="https://iqchannels.iqstore.ru/" id="iQChannels"></iframe> Не корректный пример: <iframe src="https://iqchannels.iqstore.ru/inbox" id="iQChannels"></iframe>