Вопрос

загрузка cti-model

Добрый день, коллеги! У меня в файле cti-model.js были изменены некоторые методы для заполнения объекта звонка необходимыми данными с телефонии, но после обновления (с 7.12.1 до 5.15.2) данные перестали заполняться, и отладчик хрома перестал видеть этот файл в списке загруженных в память. Мне кажется, что какой-то параметр в конфигурации отвечал за подгрузку (этого и других файлов *-model.js), но после обновления я постарался перенести все старые параметры в новые конфиги. Подскажите, пожалуйста, что делать и куда копать

Нравится

1 комментарий

Иван, добрый день!



Все замещения необходимо выполнять напрямую в приложении, а не в его бинарных файлах. 

Изменения js файлов в ядре приложения не является правильным решением, поскольку оно может восстановиться, откатить изменения, либо приложения перестанет работать. 



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



Так же, поскольку у Вас слишком большой разброс по версиям, учтите, что с версии 7.12.2 до версии 7.15.2 было внесено очень много исправлений и изменений решать сейчас проблему подбрасыванием файлов, будет некорректно, это может привести систему в нерабочее состояние. 



Сейчас рекомендую корректно выполнить доработку через конфигурацию, Тут есть 2 варианта:



1) Например, замещения можно делать через  Ext классы(BaseStageControl), на примере класса "SummaryModule"(схема SummaryModuleV2):  

define("UsrSummaryModuleV2", ["SummaryModuleV2"],
    function() {
        Ext.define("Terrasoft.SummaryModuleOverrided", {
            override: "Terrasoft.SummaryModule",
 
           /*
            * @override
            */
            getESQ: function() {
                var esq = this.callParent(arguments);
                esq.queryKind = Terrasoft.QueryKind.LIMITED;
                return esq;
            }
        });
    }
);
 
define("BaseSectionV2", ["UsrSummaryModuleV2"], function() {
    return {
        methods: {},
        details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
        diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
    };
});

Замещаем BootstrapModulesV2:

define("BootstrapModulesV2", ["UsrSummaryModuleV2"], function() {
                return {};
});

2) Так же для CTI панели в последних версиях приложения реализован встроенный механизм доработки информации на CTI панели.



В общем случае, алгоритм следующий:

1. name = 'AdditionalSubscriberInfoContainer' - пустой контейнер, находящийся под данными об абоненте (Контрагент, Номер, Длительность разговора). В коробке его видимость завязана на возвпращаемое значение метода getIsAdditionalSubscriberInfoContainerVisible, который в коробке в схеме CtiPanelModelUtilities.js возвращает false.



2. name = 'AdditionalCallInfoContainer' - пустой контейнер, находящийся под контейнером кнопок (Поставить на удержание, Перевод звонка и т. д.). В коробке его видимость завязана на возвпращаемое значение метода getIsAdditionalCallInfoContainerVisible, который в коробке в схеме CtiPanelModelUtilities.js возвращает false.

Для того чтобы сделать эти контейнеры видимыми и добавить необходимые элементы управления, надо в своем пакете (например, Custom) заместить схему CtiPanel.js и переопределить указанные методы по своему усмотрению и "добавить" в diff необходимые элементы.

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