Всем доброго времени суток.
Версия 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):
{ "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 и после его вообще не трогаю - ошибка пропадает, но ни подстановка, ни кнопки всё равно не работают.