Технические вопросы
7.x

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

Всем доброго времени суток.
Версия 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):

[javascript]
{
"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": []
}
},
[/javascript]

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

[javascript]
onCallCustomer: function(numberInfo) {

this.sandbox.publish("SelectCommunicationPanelItem", {selectedItem: "CtiPanel"});

//Показываем панельку
this.set("myIdentificationPanelVisible",true);
this.set("myContactNumber",numberInfo.number);
}
[/javascript]

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

[javascript]
{
"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,
}
},
[/javascript]

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

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

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

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

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