Работа с карточкой звонка

Всем доброго времени суток.
Версия 7.10.

В схеме CtiPanelModelUtilities есть метод звонка callByNumber, внутри которого есть вызов метода this.makeCall(number);

Где определён метод makeCall? Никак не могу найти.

Вообще, задача в целом состоит в том, чтобы вызвать карточку звонка на CTI панели с информацией о контакте (как я понимаю, это IdentificationPanel, куда по номеру подтягиваются данные). Пока просто вызвать, грубо говоря, принудительно, без реальных звонков, зная некоторый номер и что в системе есть контакт с этим номером. Как я понимаю, это происходит внутри того метода.

Нравится

5 комментариев

Денис, здравствуйте!

Метод функция makecall зависит от используемой библиотеки интеграции с телефонией, один из примеров можно найти в WebitelModule в пакете WebitelCore.

P.S.: Карточка звонка появляется не только при исходящем звонке, но и при входящем.

Илья, метод нашёл.

А всё-таки насчёт карточки.. её как-нибудь можно вызвать принудительно, именно зная номер?

По сути предполагается свой сокет, по которому будет установлена связь с сервером звонков, и если оператору приходит сообщение о звонке - надо просто показать карточку с кнопками типа "взять трубку".. ну и наоборот, если оператор звонит кому-то, то тоже показываем карточку, и отправляем сокету сообщение.

Денис, думаю описание существующих интеграций в SDK должно помочь - https://academy.terrasoft.ru/documents/technic-sdk/7-10/integraciya-s-t…

Илья, а не подскажите ещё один момент - чтобы не создавать отдельную тему..

Решили сделать свою карточку, тем более, что там предполагаются ещё некоторые изменения. Создал свою карточку в ctiPanel, забиндил её на виртуальную колонку myIdentificationPanelVisible (по умолчанию false):

{
					"operation": "insert",
					"name": "myIdentificationPanelWrap",
					"parentName": "ctiPanelMainContainer",
					"index": 1,
					"propertyName": "items",
					"values": {
						"id": "MyIdentificationPanelWrap",
						"selectors": {"wrapEl": "#IdentificationPanelWrap"},
						"itemType": Terrasoft.ViewItemType.CONTAINER,
						//"wrapClass": ["identification-panel"],
						"visible": {"bindTo": "myIdentificationPanelVisible"},
						"items": []
					}
				},

Есть ещё атрибуты Имени контакта и Номера, выведенные под них блоки, а также кнопки - взять трубку и положить, всё как обычно. Далее в той же схеме ctiPanel в onCallCustomer (для примера тестирую там) делаю вызовы

onCallCustomer: function(numberInfo) {
 
					this.sandbox.publish("SelectCommunicationPanelItem", {selectedItem: "CtiPanel"});
 
					//Показываем панельку
					this.set("myIdentificationPanelVisible",true);
					this.set("myContactNumber",numberInfo.number);					
}

То есть по сути даём задание - показать карточку, и вывести номер контакта. Номер контакта выводится внутрь блока:

{
					"operation": "insert",
					"name": "mySubscriberName",
					"parentName": "myIdentificationDataPanel",
					"propertyName": "items",
					"values": {
						"id": "mySubscriberName",
						"itemType": Terrasoft.ViewItemType.BUTTON,
						"caption": {"bindTo": "myContactName"},
						"tag": "Name",
						"visible": true,
						"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
					}
				},

На практике по вызову onCallCustomer панель показывается, но в консоль вываливается ошибка: Элемент не создан (см. скрин). Соответственно, также не работают кнопки (подвесил на click bindTo функцию - не вызывается), и т.д.

В чём может быть проблема?

UPD: Даже если я изначально в дифф у myIdentificationPanelWrap ставлю visible:true и после его вообще не трогаю - ошибка пропадает, но ни подстановка, ни кнопки всё равно не работают.

Вроде разобрался что-то с вложением блоков не то.

Показать все комментарии