Как интегрировать 1С:УНФ с аппаратной АТС Panasonic NS-500 для обработки звонков и записи разговоров?

Программист 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой Управленческий учет IT и автоматизация бизнеса
← На главную

Интеграция корпоративной АТС с системой 1С является важным шагом для повышения эффективности работы с клиентами, автоматизации учета звонков, а также улучшения качества обслуживания. В данной статье мы подробно рассмотрим процесс интеграции 1С:Управление нашей фирмой (1С:УНФ) с аппаратной АТС Panasonic NS-500, а также изучим различные подходы и готовые решения, которые могут помочь в этой задаче.

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

Понятийные основы CTI-интеграции и протоколы взаимодействия

Прежде всего, давайте разберемся, что такое CTI (Computer Telephony Integration) и какие протоколы используются для связи компьютера с телефонной станцией.

  1. CTI (Computer Telephony Integration): Это технология, которая позволяет компьютеру и телефонной системе работать вместе, предоставляя такие функции, как всплывающие карточки клиента при входящем звонке, набор номера из 1С, перевод звонков и запись разговоров.
  2. TAPI (Telephony Application Programming Interface): Это программный интерфейс от Microsoft для операционной системы Windows, который позволяет приложениям управлять телефонными функциями. Для работы с Panasonic NS-500 через TAPI, как правило, требуется установка специального TAPI-драйвера (TAPI Service Provider, TSP), который предоставляется производителем АТС или сторонними разработчиками. Через TAPI мы можем получать информацию о звонках (входящих/исходящих), инициировать звонки, управлять вызовами (перевод, удержание) и, в некоторых случаях, получать доступ к функциям записи разговоров.
  3. CSTA (Computer Supported Telephony Applications): Это более мощный и гибкий протокол, часто используемый для создания комплексных CTI-решений. Работа с CSTA также может потребовать специализированного программного обеспечения или лицензий от Panasonic.
  4. SIP (Session Initiation Protocol): Протокол, который используется для установления, изменения и завершения мультимедийных сеансов, таких как голосовые и видеозвонки, через IP-сети. АТС Panasonic NS-500, хоть и является физической, поддерживает протокол SIP. Это означает, что к ней можно подключать SIP-телефоны в качестве оконечных устройств и использовать SIP-транки для связи с внешними провайдерами телефонии. Поддержка SIP открывает возможности для интеграции через SIP-серверы или шлюзы, которые, в свою очередь, могут быть связаны с 1С.

Важно понимать, что хотя Panasonic NS-500 поддерживает SIP-телефоны, она может не давать полного контроля над этими SIP-телефонами через свои стандартные CTI-средства без приобретения специальных лицензий или использования IP-телефонов Panasonic.

Общие принципы взаимодействия 1С с АТС

Интеграция 1С с АТС может осуществляться несколькими основными способами:

  1. Периодический опрос по API/протоколам АТС:

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

    Для реализации такого механизма нам потребуется:

    • Доступ к API или протоколам АТС (например, TAPI или SDK от Panasonic).
    • Механизм для периодического выполнения запросов.
    • Обработчик событий в 1С для отображения информации.

    В 1С это может быть реализовано через регламентное задание или фоновое задание, которое обращается к внешнему компоненту или HTTP-сервису.

  2. Использование "хуков" (Webhooks) или обратных вызовов:

    Некоторые АТС или промежуточные CTI-серверы могут поддерживать механизм "хуков", когда они сами "стучатся" по определенному адресу (например, HTTP-сервису 1С) при наступлении определенных событий (например, новый входящий звонок). Это более эффективный метод, поскольку исключает необходимость постоянного опроса и уменьшает нагрузку на обе системы.

    Для Panasonic NS-500 необходимо изучить документацию, чтобы определить, поддерживает ли она такие механизмы или это возможно через дополнительное ПО.

  3. Микросервис на стороне:

    Если прямое взаимодействие из 1С с АТС затруднено или требует специализированных навыков (например, работы с низкоуровневыми протоколами), мы можем разработать промежуточный микросервис на любом удобном языке программирования (например, Go, Python, C#). Этот микросервис будет выполнять следующие функции:

    • Взаимодействовать с АТС по ее нативным протоколам (TAPI, CSTA, SIP).
    • Обрабатывать события от АТС (входящие звонки, состояние вызовов).
    • Предоставлять простой HTTP API для 1С, через который 1С будет получать информацию или отправлять команды (например, набрать номер).

    Это позволяет изолировать сложную логику взаимодействия с АТС от 1С и предоставлять 1С более удобный и стандартизированный интерфейс (например, HTTP-сервис).

    
    // Пример упрощенного HTTP-сервиса в 1С для приема событий от микросервиса
    // Предполагается, что микросервис отправляет POST-запросы на URL 1С
    // (например, http://<адрес_сервера_1с>/<база>/hs/pbx/call_event)
    
    Функция POST(Запрос)
        // Заголовок Content-Type должен быть application/json
        Если Запрос.Заголовки.Получить("Content-Type") = "application/json" Тогда
            ТекстЗапроса = Запрос.ПолучитьТелоКакСтроку();
                    
            // Десериализуем JSON-строку
            Попытка
                ДанныеЗвонка = JSON.Прочитать(ТекстЗапроса);
            Исключение
                Возврат Новый HTTPСервисОтвет(400, "Ошибка чтения JSON: " + ОписаниеОшибки());
            КонецПопытки;
                    
            // Обрабатываем данные звонка
            Если ДанныеЗвонка.Свойство("ТипСобытия") И ДанныеЗвонка.Свойство("НомерТелефона") Тогда
                Если ДанныеЗвонка.ТипСобытия = "ВходящийЗвонок" Тогда
                    // Здесь мы можем найти клиента по номеру телефона
                    // И открыть карточку клиента или создать новый звонок
                    Сообщить("Входящий звонок от: " + ДанныеЗвонка.НомерТелефона);
                    // Дополнительная логика, например, поискКонтрагентаПоНомеруТелефона(ДанныеЗвонка.НомерТелефона);
                    // И ОткрытьФормуКарточкиКлиента(НайденныйКонтрагент);
                ИначеЕсли ДанныеЗвонка.ТипСобытия = "ИсходящийЗвонок" Тогда
                    Сообщить("Исходящий звонок на: " + ДанныеЗвонка.НомерТелефона);
                КонецЕсли;
                Возврат Новый HTTPСервисОтвет(200);
            Иначе
                Возврат Новый HTTPСервисОтвет(400, "Неверный формат данных");
            КонецЕсли;
        Иначе
            Возврат Новый HTTPСервисОтвет(415, "Поддерживается только Content-Type: application/json");
        КонецЕсли;
    КонецФункции
    

Готовые решения для интеграции 1С с АТС Panasonic NS-500

На рынке существуют готовые программные продукты, специально разработанные для интеграции различных АТС, включая Panasonic, с 1С. Рассмотрим некоторые из них:

Rander (COM-прослойка между 1С и АТС)

Продукт Rander позиционируется как COM-прослойка, которая облегчает взаимодействие между 1С и АТС, используя TAPI-интерфейс. Это не программа для программирования АТС и не работает с базой настроек АТС, эту функцию выполняют специализированные программы, такие как Maintenance Console. Rander позволяет реализовать следующие функции:

  1. Отображение входящего номера: При входящем звонке в 1С может появиться всплывающая карточка с информацией о звонящем, если его номер найден в базе.
  2. Набор номера из 1С: Пользователи могут набирать номера непосредственно из интерфейса 1С.
  3. Управление звонками: Возможности удержания, перевода звонка.
  4. Конференц-связь: Согласно документации, Rander поддерживает создание конференций через программные методы.

Примеры методов Rander, которые мы можем использовать:

  1. Установка конференц-связи:

    HRESULT SetupConference([in] long call_id, [in] BSTR number)

    Этот метод используется для установки конференц-связи. Параметр call_id представляет текущий активный звонок, а number — номер телефона третьего участника конференции. После вызова этого метода активный звонок ставится на удержание, и начинается дозвон до приглашаемого участника. Затем необходимо вызвать метод AddToConference для соединения всех трех участников в конференц-звонок.

  2. Добавление последующих участников в конференцию:

    HRESULT PrepareAddToConference([in] long conf_call_id, [in] BSTR number)

    Используется для добавления четвертого и последующих участников в конференцию. После вызова этого метода организатор начинает дозваниваться до приглашаемого участника. Уже приглашенные участники при этом продолжают разговор. Для соединения всех участников в один конференц-разговор также необходимо вызвать метод AddToConference.

  3. Добавление участника в разговор:

    HRESULT AddToConference([in] long conf_call_id, [in] long consult_call_id)

    Этот метод непосредственно добавляет участника в разговор. conf_call_id — это изначальный конференц-звонок, consult_call_id — это консультационный звонок между организатором конференции и приглашаемым участником, который возникает после вызова методов SetupConference или PrepareAddToConference.

  4. Набор номера:

    Dial2

    Этот метод позволяет инициировать исходящий звонок из 1С.

  5. Обработчики событий:

    Rander предоставляет обработчики событий, которые мы можем привязать к функциям 1С для реакции на изменения состояния звонков:

    
    ДобавитьОбработчик Ran.NewCall2, Обработчик_NewCall2;
    ДобавитьОбработчик Ran.CallStateChanged2, Обработчик_CallStateChanged2;
    ДобавитьОбработчик Ran.CallInfoChanged, Обработчик_CallInfoChanged;
    ДобавитьОбработчик Ran.DigitDetected, Обработчик_DigitDetected;
    

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

Важный нюанс по Rander и Panasonic NS-500: В ходе практики выяснилось, что АТС Panasonic NS-500 поддерживает SIP-телефоны как оконечные устройства, однако не всегда может управлять ими через ITC-средства (связь телефонии с компьютером) без специальных лицензий или использования IP-телефонов Panasonic. Это может стать существенным ограничением для конференц-связи или других продвинутых функций через CTI-прослойки, если используются стандартные SIP-софтфоны сторонних производителей.

"Простые звонки"

Это еще одно комплексное решение, которое предлагает плагины для 1С и поддерживает интеграцию с различными АТС, включая Panasonic. "Простые звонки" могут взаимодействовать как с программными, так и с аппаратными АТС, часто используя TAPI или другие интерфейсы, предоставляемые производителем АТС. Функционал обычно включает всплывающие карточки, набор из 1С, запись разговоров (если поддерживается АТС или отдельной системой записи), и статистику звонков.

При использовании "Простых звонков" с Panasonic TDE200, например, пользователи отмечали, что система записи разговоров работала отдельно от самой АТС, и для интеграции SIP-телефонов использовалась отдельная "железка", чтобы избежать высоких лицензионных платежей.

Rarus Softphone

Компания "Рарус" также предлагает готовые решения по интеграции с АТС Panasonic KX-NS500RU. Это может быть более дорогостоящим вариантом, часто включающим постоянные платежи за лицензии или поддержку, но может предоставить глубокую интеграцию и полную поддержку со стороны разработчика.

Softphone.pro

Если клиенты уже используют программные софтфоны, такие как Softphone.pro, это может быть наиболее эффективным путем интеграции. Softphone.pro имеет широкие возможности интеграции через веб-сервисы. Если большая часть звонков в компании осуществляется через эти софтфоны, а Panasonic NS-500 выступает как SIP-шлюз или направляет звонки на эти софтфоны, то интеграция Softphone.pro с 1С может быть относительно простым и эффективным решением. Это позволит нам управлять звонками, получать информацию о вызывающем абоненте и интегрировать логику звонков непосредственно в 1С через API Softphone.pro.

Для интеграции через веб-сервис Softphone.pro мы будем взаимодействовать с их API, отправляя и получая HTTP-запросы. Этот подход хорошо документирован и позволяет избежать сложностей с низкоуровневой работой с АТС.

Альтернативные подходы и гибридные решения

Иногда, при значительных ограничениях или высокой стоимости интеграции с существующей аппаратной АТС, мы можем рассмотреть альтернативные или гибридные решения.

Переход на программные АТС (например, Asterisk)

Современные тенденции показывают, что программные АТС, такие как Asterisk, набирают все большую популярность. Asterisk — это программная АТС с открытым исходным кодом, которая работает на Linux. Она предоставляет огромные возможности для настройки и интеграции, часто превосходящие проприетарные аппаратные решения, особенно в части гибкости и стоимости.

Преимущества Asterisk:

  1. Гибкость и открытость: Широкий набор API (например, AMI - Asterisk Manager Interface, AGI - Asterisk Gateway Interface) позволяет легко интегрироваться с различными системами, включая 1С.
  2. Стоимость: Сам Asterisk бесплатен. Затраты в основном связаны с оборудованием (обычный офисный системник) и, возможно, платами для подключения аналоговых или цифровых линий, если они используются (например, DAHDI-совместимые платы).
  3. Многофункциональность: Поддержка SIP, конференц-связи, голосовой почты, IVR и многих других функций.

Если клиент готов рассмотреть полную замену АТС, переход на Asterisk может быть долгосрочным и выгодным решением. Однако это потребует перевода всех абонентских устройств на SIP-телефоны или использования VoIP-шлюзов.

Использование Panasonic NS-500 в связке с Asterisk (как шлюз)

Если полная замена аппаратной АТС невозможна или нежелательна, мы можем реализовать гибридное решение: поставить Asterisk "за" Panasonic NS-500. Это означает, что Asterisk будет подключен к Panasonic через SIP-транки, а уже Asterisk будет интегрироваться с 1С. Таким образом, мы сохраняем существующую аппаратную АТС, но получаем гибкость и открытые интерфейсы программной АТС для интеграции с 1С. Звонки будут проходить через Asterisk, который может записывать разговоры, предоставлять статистику и взаимодействовать с 1С.

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

Виртуальные АТС (VATS)

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

Запись разговоров и ее реализация

Запись разговоров является ключевой функцией для большинства компаний. Для Panasonic NS-500 она может быть реализована несколькими способами:

  1. Встроенные функции АТС: Некоторые модули Panasonic NS-500 поддерживают запись разговоров. Однако это часто требует дополнительных лицензий и специализированного оборудования (например, SD-карты для хранения). Важно уточнить наличие таких модулей и лицензий.
  2. Внешние системы записи: Мы можем использовать сторонние устройства или программное обеспечение, которые подключаются к АТС и записывают разговоры. Интеграция с 1С в этом случае будет заключаться в получении доступа к архиву записей этих систем (например, через сетевую папку или API внешнего ПО) и привязке их к документам 1С.
  3. Запись на SIP-сервере/софтфоне: Если звонки проходят через SIP-софтфоны (например, Softphone.pro) или через Asterisk, запись может быть организована непосредственно на стороне этих программных решений. Это значительно упрощает доступ к записям и их привязку к соответствующим объектам в 1С (например, к документам "Событие" или "Взаимодействие").

Лицензирование и важные нюансы

При работе с АТС Panasonic NS-500 крайне важно учитывать аспекты лицензирования:

  1. Лицензии на CTI-функции: Для расширения функциональности АТС, такой как поддержка дополнительных SIP-телефонов, CTI-функций или записи разговоров, могут потребоваться специальные лицензии от Panasonic. Эти лицензии могут значительно влиять на общую стоимость решения.
  2. Сертификация специалистов: Некоторые операции с АТС Panasonic могут требовать участия сертифицированного специалиста.
  3. Устаревшее оборудование: Важно помнить, что аппаратные АТС Panasonic, хотя и надежны, являются частью проприетарной архитектуры, которая уступает по гибкости открытым программным решениям вроде Asterisk. Опыт работы с "железными" АТС становится менее востребованным, поскольку рынок смещается в сторону программных и облачных решений.

Какую информацию нам нужно собрать для начала?

Перед тем как приступить к интеграции, нам необходимо собрать следующую информацию о текущей АТС и используемом оборудовании:

  1. Спецификация АТС: Нам нужны данные о модулях станции Panasonic NS-500. В частности, интересует наличие и количество SIP-портов (сколько занято, сколько свободно), наличие портов управления через IP или RS-232, а также наличие модуля записи разговоров.
  2. Используемые телефоны: Какие телефоны используются сотрудниками – аналоговые, цифровые, IP-телефоны (SIP-телефоны) и от какого производителя (Panasonic или сторонние).
  3. Программные софтфоны: Используются ли программные софтфоны (например, Softphone.pro) и как они настроены.
  4. Тип входящих линий: Откуда приходят входящие линии (аналоговые, цифровые E1/PRI, SIP-транки).
  5. Лицензии: Информация о приобретенных лицензиях на АТС, особенно касающихся CTI и SIP-функционала.
  6. Требования клиента: Четкое определение функциональных требований: всплывающая карточка, набор из 1С, запись разговоров, перевод, конференц-связь, статистика.

Выяснив, что клиент уже использует SIP-софтфоны Softphone.pro, мы можем сфокусироваться на интеграции 1С с этим программным решением через его веб-сервисы, что является наиболее перспективным и, возможно, менее затратным путем. Это позволит нам эффективно управлять звонками и получать всю необходимую информацию, минуя сложности прямого взаимодействия с проприетарной логикой аппаратной АТС Panasonic.

← На главную