Лицензия
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> |