Всем доброго времени суток.
Версия 7.10.
В схеме CtiPanelModelUtilities есть метод звонка callByNumber, внутри которого есть вызов метода this.makeCall(number);
Где определён метод makeCall? Никак не могу найти.
Вообще, задача в целом состоит в том, чтобы вызвать карточку звонка на CTI панели с информацией о контакте (как я понимаю, это IdentificationPanel, куда по номеру подтягиваются данные). Пока просто вызвать, грубо говоря, принудительно, без реальных звонков, зная некоторый номер и что в системе есть контакт с этим номером. Как я понимаю, это происходит внутри того метода.
Нравится
Денис, здравствуйте!
Метод функция 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 и после его вообще не трогаю - ошибка пропадает, но ни подстановка, ни кнопки всё равно не работают.