Интеграция платформы 1С:Предприятие 7.7 с современной IP-телефонией на базе Asterisk долгое время оставалась сложной задачей из-за отсутствия встроенных механизмов работы с сетевыми протоколами. Одним из самых надежных и популярных инструментов для решения этой проблемы стала внешняя компонента rom-asterisk.dll. Однако, в связи с тем, что разработчик прекратил прямую поддержку этого продукта, поиск и настройка библиотеки могут вызвать трудности. В этой статье мы подробно разберем, где взять компоненту, как ее правильно зарегистрировать и настроить взаимодействие с АТС.
Рассмотрим предысторию вопроса. Компонента была разработана компанией Simplit и долгое время была стандартом де-факто для связи «семерки» с Asterisk через протокол AMI (Asterisk Manager Interface). Существовало несколько версий библиотеки, включая бесплатную и профессиональную (Pro). Бесплатная версия позволяла реализовать базовый функционал: инициацию вызова (Click-to-Call) и отслеживание входящих звонков по номеру телефона. Профессиональная версия расширяла возможности за счет работы с очередями и статусами операторов.
На сегодняшний день официальный сайт разработчика больше не предоставляет прямых ссылок на скачивание, так как фокус сместился на новые решения для платформы 8.3. Тем не менее, для поддержки старых конфигураций 1С 7.7 использование rom-asterisk.dll остается актуальным и эффективным методом.
Проанализируем ситуацию с поиском. Поскольку официальные источники недоступны, пользователям приходится обращаться к архивам сообщества. В ходе обсуждения на технических форумах подтверждено, что рабочие версии компоненты все еще хранятся на файлообменниках и в частных коллекциях разработчиков. При выборе версии стоит искать именно COM-версию, так как Native-компоненты (как, например, BROM-Asterisk) не поддерживаются платформой 7.7 напрямую без дополнительных «оберток».
Давайте разберем по шагам процесс установки библиотеки в системе. Поскольку 1С 7.7 является 32-битным приложением, работа с компонентой требует соблюдения определенных правил разрядности, особенно в современных 64-битных версиях Windows.
rom-asterisk.dll в системную папку (например, C:\Windows\SysWOW64 для 64-битных ОС или C:\Windows\System32 для 32-битных).regsvr32.Для 64-битных систем команда будет выглядеть так:
C:\Windows\SysWOW64\regsvr32.exe C:\Путь_к_файлу\rom-asterisk.dll
Если регистрация прошла успешно, мы увидим системное сообщение об удачном выполнении операции. Теперь компонента доступна для вызова из кода 1С.
Выясним причину, по которой компонента может не подключаться к серверу телефонии. Для успешной работы нам необходимо создать специального пользователя в конфигурационном файле Asterisk manager.conf. Этот файл отвечает за доступ внешних приложений к AMI-интерфейсу.
Рассмотрим пример настройки прав доступа. Нам необходимо разрешить чтение и запись определенных типов событий:
[1c_user]
secret = your_password
deny = 0.0.0.0/0.0.0.0
permit = 192.168.1.0/255.255.255.0 ; укажите IP вашей сети
read = system,call,log,reporting,user,agent
write = system,call,log,reporting,user,agent
Важно: убедитесь, что в секции [general] параметра enabled установлено значение yes, а порт по умолчанию (5038) открыт в сетевом экране (брандмауэре).
Теперь перейдем к практической части реализации в коде. Проанализируем типичный алгоритм инициализации объекта. В 1С 7.7 это делается через стандартный механизм загрузки внешних компонент.
Посмотрим на пример кода в глобальном модуле или форме:
Если ЗагрузитьВнешнююКомпоненту("rom-asterisk.dll") = 0 Тогда
Сообщить("Ошибка загрузки компоненты rom-asterisk.dll!");
Иначе
Астериск = СоздатьОбъект("AddIn.RomAsterisk");
Сообщить("Компонента успешно загружена.");
КонецЕсли;
После создания объекта нам нужно установить соединение с сервером. Для этого используются методы объекта, такие как Connect. Обычно параметры включают IP-адрес сервера, порт (5038), логин и пароль, которые мы прописали в manager.conf.
Одной из самых ценных функций является автоматическое определение номера при входящем звонке. В 1С 7.7 для этого используется процедура ОбработкаВнешнегоСобытия. Когда АТС передает данные о звонке, компонента генерирует событие, которое «ловит» платформа.
Разберем структуру обработки события:
Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
Если Источник = "RomAsterisk" Тогда
// Проанализируем содержимое переменной "Данные"
// Обычно здесь передается строка вида "Event: Newstate, Number: 79991234567..."
Если Найти(Данные, "Newstate") > 0 Тогда
// Логика поиска контрагента по номеру телефона
НомерТелефона = ПарситьНомер(Данные);
ОткрытьКарточкуКлиента(НомерТелефона);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Поскольку данные приходят в виде текстовой строки, нам потребуется написать вспомогательную функцию для парсинга номера. Обратите внимание, что формат строки может зависеть от версии Asterisk и настроек AMI.
Если по каким-то причинам найти или запустить rom-asterisk.dll не удается, рассмотрим альтернативу — компоненту VVSAst. Это проверенное решение, которое также поддерживает COM-интерфейс и отлично работает с платформой 7.7.
Методы VVSAst во многом идентичны rom-asterisk, что позволяет переключиться на нее с минимальными правками кода. Она также позволяет совершать звонки из карточки клиента и обрабатывать входящие события. Существует бесплатная версия библиотеки, покрывающая 90% потребностей типичного отдела продаж.
Проанализируем основные сложности, с которыми сталкиваются системные администраторы при эксплуатации данной связки:
Таким образом, несмотря на почтенный возраст платформы 1С 7.7, интеграция с современной телефонией остается возможной и эффективной при использовании правильных библиотек. Мы рассмотрели основные этапы: от поиска файла до написания кода обработки событий, что позволит вам автоматизировать работу со звонками в вашей организации.