...
В первую очередь, при внедрении нового канала, необходимо дополнить метод методы:
BindProfileDataProvider()
BindOutcomeMessageWorker()
BindAttachmentsLoadWorker()
Все они находятся в методе BindInterfaces() из класса BsOmniAppEventListener (название схемы совпадает с названием класса), следующим содержимым:
1)ClassFactory.Bind<IAttachmentsLoadWorker, BsOmniAttachmentLoadWorker>(OmniChannelTypeChannelType.{Название провайдера канала}.ToString()); в метод BindAttachmentsLoadWorker()
2)ClassFactory.Bind<IProfileDataProvider, BsOmniProfileDataProvider>(OmniChannelType.{Название провайдера канала}.ToString()); в метод BindProfileDataProvider()
3)ClassFactory.Bind<IOutcomeMessageWorker, BsOmniOutcomeMessageWorker>(OmniChannelType.{Название провайдера канала}.ToString()); в метод BindOutcomeMessageWorker()
Содержимое перечисления ChannelType хранится в схемах Terrasoft, однако аналог OmniChannelType можно найти в схеме исходного кода BsOmniEnums (взять это на заметку для дальнейших пунктов).
Важно! Во всех случаях, где необходимо использовать тип канала из перечисления, мы пользуемся только перечислением ChannelType. Перечисление OmniChannelType из схемы BsOmniEnums служит просто напоминанием о доступных типах каналов, но не применяется в реализации логики.Для добавления канала на коннекторе, необходимо правильно составить тело запроса, в котором будут находиться все необходимые поля для добавления канала в БД. Для этого необходимо в классе BsOmniChannelHandler (название схемы совпадает с названием класса), в методе DefineAllHttpRequestElementsForConnector добавить в конструкцию switch case с нужным типом канала (брать из перечисления OmniChannelType ChannelType), в котором происходит определение конечного пути запроса, а также упаковка объекта нужными полями и перевод его в формат json для последующей отправки в качестве тела запроса на коннектор.
Для удобства, часть пути запроса для добавления канала (после services/) можно вынести в именованное поле класса ChannelPathType, которое располагается в схеме BsOmniModels. Название совпадает с именем провайдера канала.Для того, чтоб использовать нужный экземпляр IBsOmniMsgSettingsExecutor для добавления или изменения записи объекта BsOmni{Имя провайдера}MsgSettings, необходимо в методе GetMsgSettingsExecutorInstance класса BsOmniMsgSettingsHandler (название схемы совпадает с названием класса) добавить в конструкцию switch, case с созданием нужного экземпляра IBsOmniMsgSettingsExecutor, который создавался в пункте 4. Добавление необходимых классов в схемах исходного кода.
Для удобства, при составлении пути запроса на hook контроллер из коннектора, в отдельный класс HookPathType (схема BsOmniModels) можно вынести уникальное значение канала (пример: для Viber это vb). Пример можно увидеть в case с каналом Viber в конструкции switch из метода DefineAllHttpRequestElementsForConnector класса BsOmniChannelHandler.
...