Интеграция корпоративной АТС с системой 1С является важным шагом для повышения эффективности работы с клиентами, автоматизации учета звонков, а также улучшения качества обслуживания. В данной статье мы подробно рассмотрим процесс интеграции 1С:Управление нашей фирмой (1С:УНФ) с аппаратной АТС Panasonic NS-500, а также изучим различные подходы и готовые решения, которые могут помочь в этой задаче.
Изначально задача интеграции АТС с 1С может показаться сложной, особенно когда речь идет о физической, а не виртуальной АТС. Однако, разобравшись в принципах и доступных инструментах, мы увидим, что существуют эффективные пути решения.
Прежде всего, давайте разберемся, что такое CTI (Computer Telephony Integration) и какие протоколы используются для связи компьютера с телефонной станцией.
Важно понимать, что хотя Panasonic NS-500 поддерживает SIP-телефоны, она может не давать полного контроля над этими SIP-телефонами через свои стандартные CTI-средства без приобретения специальных лицензий или использования IP-телефонов Panasonic.
Интеграция 1С с АТС может осуществляться несколькими основными способами:
Этот подход предполагает, что наша система (например, внешний микросервис или компонент 1С) будет регулярно запрашивать у АТС информацию о состоянии портов и активных соединениях. Если обнаруживается активное соединение для определенного порта, мы запрашиваем и отображаем номер звонящего, а также другую релевантную информацию.
Для реализации такого механизма нам потребуется:
В 1С это может быть реализовано через регламентное задание или фоновое задание, которое обращается к внешнему компоненту или HTTP-сервису.
Некоторые АТС или промежуточные CTI-серверы могут поддерживать механизм "хуков", когда они сами "стучатся" по определенному адресу (например, HTTP-сервису 1С) при наступлении определенных событий (например, новый входящий звонок). Это более эффективный метод, поскольку исключает необходимость постоянного опроса и уменьшает нагрузку на обе системы.
Для Panasonic NS-500 необходимо изучить документацию, чтобы определить, поддерживает ли она такие механизмы или это возможно через дополнительное ПО.
Если прямое взаимодействие из 1С с АТС затруднено или требует специализированных навыков (например, работы с низкоуровневыми протоколами), мы можем разработать промежуточный микросервис на любом удобном языке программирования (например, Go, Python, C#). Этот микросервис будет выполнять следующие функции:
Это позволяет изолировать сложную логику взаимодействия с АТС от 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");
КонецЕсли;
КонецФункции
На рынке существуют готовые программные продукты, специально разработанные для интеграции различных АТС, включая Panasonic, с 1С. Рассмотрим некоторые из них:
Продукт Rander позиционируется как COM-прослойка, которая облегчает взаимодействие между 1С и АТС, используя TAPI-интерфейс. Это не программа для программирования АТС и не работает с базой настроек АТС, эту функцию выполняют специализированные программы, такие как Maintenance Console. Rander позволяет реализовать следующие функции:
Примеры методов Rander, которые мы можем использовать:
Установка конференц-связи:
HRESULT SetupConference([in] long call_id, [in] BSTR number)
Этот метод используется для установки конференц-связи. Параметр call_id представляет текущий активный звонок, а number — номер телефона третьего участника конференции. После вызова этого метода активный звонок ставится на удержание, и начинается дозвон до приглашаемого участника. Затем необходимо вызвать метод AddToConference для соединения всех трех участников в конференц-звонок.
Добавление последующих участников в конференцию:
HRESULT PrepareAddToConference([in] long conf_call_id, [in] BSTR number)
Используется для добавления четвертого и последующих участников в конференцию. После вызова этого метода организатор начинает дозваниваться до приглашаемого участника. Уже приглашенные участники при этом продолжают разговор. Для соединения всех участников в один конференц-разговор также необходимо вызвать метод AddToConference.
Добавление участника в разговор:
HRESULT AddToConference([in] long conf_call_id, [in] long consult_call_id)
Этот метод непосредственно добавляет участника в разговор. conf_call_id — это изначальный конференц-звонок, consult_call_id — это консультационный звонок между организатором конференции и приглашаемым участником, который возникает после вызова методов SetupConference или PrepareAddToConference.
Набор номера:
Dial2
Этот метод позволяет инициировать исходящий звонок из 1С.
Обработчики событий:
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-телефонов использовалась отдельная "железка", чтобы избежать высоких лицензионных платежей.
Компания "Рарус" также предлагает готовые решения по интеграции с АТС Panasonic KX-NS500RU. Это может быть более дорогостоящим вариантом, часто включающим постоянные платежи за лицензии или поддержку, но может предоставить глубокую интеграцию и полную поддержку со стороны разработчика.
Если клиенты уже используют программные софтфоны, такие как Softphone.pro, это может быть наиболее эффективным путем интеграции. Softphone.pro имеет широкие возможности интеграции через веб-сервисы. Если большая часть звонков в компании осуществляется через эти софтфоны, а Panasonic NS-500 выступает как SIP-шлюз или направляет звонки на эти софтфоны, то интеграция Softphone.pro с 1С может быть относительно простым и эффективным решением. Это позволит нам управлять звонками, получать информацию о вызывающем абоненте и интегрировать логику звонков непосредственно в 1С через API Softphone.pro.
Для интеграции через веб-сервис Softphone.pro мы будем взаимодействовать с их API, отправляя и получая HTTP-запросы. Этот подход хорошо документирован и позволяет избежать сложностей с низкоуровневой работой с АТС.
Иногда, при значительных ограничениях или высокой стоимости интеграции с существующей аппаратной АТС, мы можем рассмотреть альтернативные или гибридные решения.
Современные тенденции показывают, что программные АТС, такие как Asterisk, набирают все большую популярность. Asterisk — это программная АТС с открытым исходным кодом, которая работает на Linux. Она предоставляет огромные возможности для настройки и интеграции, часто превосходящие проприетарные аппаратные решения, особенно в части гибкости и стоимости.
Преимущества Asterisk:
Если клиент готов рассмотреть полную замену АТС, переход на Asterisk может быть долгосрочным и выгодным решением. Однако это потребует перевода всех абонентских устройств на SIP-телефоны или использования VoIP-шлюзов.
Если полная замена аппаратной АТС невозможна или нежелательна, мы можем реализовать гибридное решение: поставить Asterisk "за" Panasonic NS-500. Это означает, что Asterisk будет подключен к Panasonic через SIP-транки, а уже Asterisk будет интегрироваться с 1С. Таким образом, мы сохраняем существующую аппаратную АТС, но получаем гибкость и открытые интерфейсы программной АТС для интеграции с 1С. Звонки будут проходить через Asterisk, который может записывать разговоры, предоставлять статистику и взаимодействовать с 1С.
Этот подход особенно актуален, если у компании много аналоговых линий или специфических абонентских устройств, которые не хотелось бы менять.
Если клиент готов полностью отказаться от собственного оборудования, можно рассмотреть переход на виртуальные АТС, предоставляемые телеком-операторами (например, Мегафон, Билайн и т.д.). Эти АТС полностью облачные, и интеграция с 1С для них часто уже реализована провайдерами или через стандартные API, что значительно упрощает задачу.
Запись разговоров является ключевой функцией для большинства компаний. Для Panasonic NS-500 она может быть реализована несколькими способами:
При работе с АТС Panasonic NS-500 крайне важно учитывать аспекты лицензирования:
Перед тем как приступить к интеграции, нам необходимо собрать следующую информацию о текущей АТС и используемом оборудовании:
Выяснив, что клиент уже использует SIP-софтфоны Softphone.pro, мы можем сфокусироваться на интеграции 1С с этим программным решением через его веб-сервисы, что является наиболее перспективным и, возможно, менее затратным путем. Это позволит нам эффективно управлять звонками и получать всю необходимую информацию, минуя сложности прямого взаимодействия с проприетарной логикой аппаратной АТС Panasonic.