Посоветуйте правильную архитектуру

Интеграция Asterisk и 1С:Предприятие 8.2, 8.1, 7.7
MVP
Member
Сообщений: 7
Зарегистрирован: 23 апр 2015, 12:09

Посоветуйте правильную архитектуру

Сообщение MVP » 23 апр 2015, 12:30

Добрый день.

Сейчас используем БП 2 (обычные формы) в режиме клиент-сервер (сервер 1С и сервер asterisk в одной сети, как впрочем и клиенты).
Открыл на клиенте Панель телефонии, проверил, вроде бы работает...
Принимаем решение об интеграции.

Нужно определиться, как правильно начать делать, то ли на каждом клиенте обработку, то ли на сервере - просто пока нет понимания как оно вообще должно быть...
Для начала хочется сделать две простые вещи:
1) простое уведомление - звонит телефон, по номеру определяем клиента, выходит некое всплывающее окно с информацией по нему...
2) закончили разговор, если номера в базе нет, просим менеджера привязать номер к клиенту
Далее конечно хочется сделать и маршрутизацию по менеджеру и может быть еще какие плюшки...

Просто вопрос где делать, на стороне сервера или клиента?
Опять же в планах есть переход на БП3 - управляемые формы, тоже ближайшее будущее.
Просто если ограничится только пунктом 1, то да, делаем на стороне клиента всё и не заморачиваемся, но хочется по правильному, поступил звонок, на сервере посмотрели кто это и далее принимаем решение что с ним делать, куда маршрутизировать и т.д.

Или я вообще не правильно понимаю всё и всё равно со стороны клиента будет обращение к АТС...

admin
Администратор
Сообщений: 219
Зарегистрирован: 27 апр 2011, 18:35

Re: Посоветуйте правильную архитектуру

Сообщение admin » 23 апр 2015, 13:31

События от Asterisk приходят в 1С как внешние события.
На стороне сервера 1С нет такого понятия как ВнешнееСобытие, только на клиенте.

На стороне сервера имеет смысл обрабатывать определенную группу событий, но не все. Часть событий дешевле оставлять на клиенте.
В итоге, скажем так... В любом случае, вы будете использовать и серверную часть, и клиентскую.
По архитектуре пляшите от конкретной задачи, а не от архитектуры в шаре и в вакууме.

MVP
Member
Сообщений: 7
Зарегистрирован: 23 апр 2015, 12:09

Re: Посоветуйте правильную архитектуру

Сообщение MVP » 23 апр 2015, 13:58

Понял. Спасибо.

Larkin
Member
Сообщений: 14
Зарегистрирован: 11 мар 2015, 16:33

Re: Посоветуйте правильную архитектуру

Сообщение Larkin » 24 апр 2015, 10:00

Доброе время.
Маршрутизацию лучше (правильнее) делать на стороне АТС.
В моем случае на сервере АТС была добавлена таблица с номерами внешними и номерами внутренними, добавлен скрипт в конфигах АСТ, который, при входящем звонке обращается в таблицу номеров и перенаправляет звонок на внутренний. Данные о связях выгружаются раз в 10 минут из 1С с отбором по основному менеджеру.

Далее разграничение работы в 1С между сервером и клиентом (у меня используется УТ 11.1 УФ).
Модуль управляемого приложения:

Код: Выбрать все

//Larkin
Перем глТелефония Экспорт;
Перем глСтруктураПодключнеия Экспорт;
Перем глСтруктураЗвонка Экспорт;
Перем глСобытиеОснованиеЗвонка Экспорт;

...

Процедура ПриНачалеРаботыСистемы()
   
   // СтандартныеПодсистемы
   СтандартныеПодсистемыКлиент.ПриНачалеРаботыСистемы();
   // Конец СтандартныеПодсистемы
   
   //Larkin - телефония
   ТекПользователь = ПользователиКлиентСервер.ТекущийПользователь();
   Если ДоработкиСервер.ПолучитьЗначениеПараметраСеанса("ИспользоватьIPТелефонию") Тогда
      глСтруктураПодключнеия = ТелефонияСервер.ПолучитьСтруктуруПодключения(ТекПользователь);
      //Подключим компанену
      NativeAPI = Ложь;
      ПодключенаВК = Ложь;
      Если ТелефонияСервер.ПолучитьВартиантВКДляТекущегоПользователя(ТекПользователь) Тогда
         ПодключенаВК = ТелефонияКлиент.ЗагрузитьКомпонентуТелефонии_NativeAPI();
         NativeAPI = Истина;
      Иначе   
         ПодключенаВК = ТелефонияКлиент.ЗагрузитьКомпонентуТелефонии();
      КонецЕсли;
      
      Результат = Ложь;
      Если ПодключенаВК Тогда
         Результат = ТелефонияКлиент.ИнициализироватьТелефонию(NativeAPI, глТелефония);
      КонецЕсли;
      
      Если Результат Тогда
         ТелефонияКлиент.ВыполнитьПодключение(глСтруктураПодключнеия, глТелефония);
      КонецЕсли;
   КонецЕсли;
   
КонецПроцедуры

...

Процедура ПередЗавершениемРаботыСистемы(Отказ)
   
   // СтандартныеПодсистемы
   СтандартныеПодсистемыКлиент.ПередЗавершениемРаботыСистемы(Отказ);
   // Конец СтандартныеПодсистемы
   
   //Larkin - телефония
   Если ДоработкиСервер.ПолучитьЗначениеПараметраСеанса("ИспользоватьIPТелефонию") Тогда
      ТелефонияКлиент.ВыполнитьОперациюВыхода(глТелефония);
   КонецЕсли;
КонецПроцедуры

...

Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)

...

   //Larkin Телефония
   Если Источник="ROM-Asterisk" ИЛИ Источник = "ROM-Asterisk-Native" Тогда
      ТелефонияКлиент.ВыполнитьОбработкуВнешнегоСобытия(Событие, Данные);
   КонецЕсли;
КонецПроцедуры


В системе добавлено для общих модуля "ТелефонияКлиент" и "ТелефонияСервер" и туда уже разложены процедуры и функции исходя из логики работы.

На сервере выполняю тяжеловесные операции и выборки, на клиенте вывод результата и обработка внешнего события.

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

admin
Администратор
Сообщений: 219
Зарегистрирован: 27 апр 2011, 18:35

Re: Посоветуйте правильную архитектуру

Сообщение admin » 24 апр 2015, 12:51

Larkin писал(а):Доброе время.
Маршрутизацию лучше (правильнее) делать на стороне АТС.
В моем случае на сервере АТС была добавлена таблица с номерами внешними и номерами внутренними, добавлен скрипт в конфигах АСТ, который, при входящем звонке обращается в таблицу номеров и перенаправляет звонок на внутренний. Данные о связях выгружаются раз в 10 минут из 1С с отбором по основному менеджеру.

В 1С есть такая вещь как "Подписка на событие". В таймерах нет смысла.

На сервере выполняю тяжеловесные операции и выборки, на клиенте вывод результата и обработка внешнего события.

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


Если делаете что-то тяжелое - тогда обязательно прочтите эту статью

Larkin
Member
Сообщений: 14
Зарегистрирован: 11 мар 2015, 16:33

Re: Посоветуйте правильную архитектуру

Сообщение Larkin » 27 апр 2015, 10:41

В 1С есть такая вещь как "Подписка на событие". В таймерах нет смысла.

Да, я в курсе ;) Пересмотрю свое решение.
Если делаете что-то тяжелое - тогда...

Пока-что тяжелого ничего не выявлено. Работает как часы, даже на удаленных точках ч-з Web-соединение.
За совет - спасибо.

o3ophuk
Сообщений: 1
Зарегистрирован: 15 ноя 2015, 10:32

Re: Посоветуйте правильную архитектуру

Сообщение o3ophuk » 15 ноя 2015, 10:38

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


Вернуться в «ROM-Asterisk. 1С и Телефония»

cron