IQ4

Описание

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,
		"CRMClientId": 2,
		"TicketId": 3
	}
}

Сообщения от 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>
...

  • No labels