1. Подготовка Asterisk
Для доступа к интерфейсу AMI требуется открыть доступ в Asterisk. Делается это редактированием файла
/etc/asterisk/manager.conf через CLI или через WEB-интерфейс АТС.
enabled=yes ; возможность работать с AMI (по-умолчанию no)
port=5038 ; на порту TCP 5038
bindaddr=192.168.1.0/24 ; принимать соединения в лок. сети (0.0.0.0 - все)
timestampevents = no ; Отправлять в пакетах событий временную метку
displayconnects = yes ; Отображать факт подключения пользователя к AMI
allowmultiplelogin = yes ; Разрешить несколько подключений с одним именем
Рекомендации:
- Обязательно ограничивайте подсети, из которых доступен AMI интерфейс.
- Если работа с АТС из нескольких подсетей — создайте разных пользователей AMI.
- Ограничьте доступ к логину и паролю AMI в программе 1С.
2. Способы подключения внешней компоненты
Подключение файла компоненты
Попытка
ПодключитьВнешнююКомпоненту ("D:\PBX\PBX.dll", "PBX", ТипВнешнейКомпоненты.Native);
глТелефония = Новый ("AddIn.PBX.AsteriskAMI");
Исключение
Сообщить ("Ошибка! "+ОписаниеОшибки());
КонецПопытки;
Подключение с помощью шаблона
Предпочтительный способ использования компоненты на предприятии: компонента будет установлена автоматически
пользователю и будет выбрана автоматически разрядность компоненты.
В конфигурации требуется создать Общий макет. Тип макета — «Внешняя компонента». Загрузить в нее поставляемый zip файл.
Процедура ТелефонияИнициализация() Экспорт
Попытка
ПодключитьВнешнююКомпоненту("ОбщийМакет.ВК_Телефония", "PBX", ТипВнешнейКомпоненты.Native)
Исключение
УстановитьВнешнююКомпоненту("ОбщийМакет.ВК_Телефония");
ПодключитьВнешнююКомпоненту("ОбщийМакет.ВК_Телефония", "PBX", ТипВнешнейКомпоненты.Native);
КонецПопытки;
Попытка
глТелефония = Новый("AddIn.PBX.AsteriskAMI");
Исключение
Сообщить("Не удалось установить внешнюю компоненту.");
КонецПопытки;
КонецПроцедуры
После использования метода УстановитьВнешнююКомпоненту() файл компоненты (PBX.dll) будет размещен в каталоге
C:\Users\[ИмяПользователя]\AppData\Roaming\1C\1Cv82\ExtCompT
3. Свойства компоненты
Версия — отображает информацию о текущей версии компоненты.
Значение по умолчанию: нет.
Чтение.
ФильтрНомер — устанавливает фильтр на вывод сообщений в 1С по одному определенному номеру. Указывается в формате "SIP/107". Если значение не указано — компонента отправляет полную информацию.
Значение по умолчанию: нет.
Чтение и запись.
Шифрование — использует передачу пароля в зашифрованном виде. Поскольку авторизация сопровождается передачей и обработкой токена, обязательно использование метода Авторизация().
Значение по умолчанию: Истина.
Чтение и запись.
Подключен — если компонента успешно подключилась к серверу Asterisk, принимает значение Истина.
Чтение.
Идентификатор — идентификационный номер компоненты. Уникальный ключ для каждого компьютера.
Чтение.
КлючПродукта — регистрационный ключ продукта.
Чтение и запись.
4. Методы компоненты
Подключиться(server, port) — устанавливает подключение к телефонной станции Asterisk по TCP протоколу.
- server — имя или IP адрес сервера (обязательный параметр).
- port — порт подключения (по умолчанию 5038, соответствует настройкам AMI).
Авторизация(ИмяПользователя, Пароль) — осуществляет авторизацию с учетом использования шифрования MD5.
- ИмяПользователя — логин пользователя Asterisk AMI.
- Пароль — пароль пользователя Asterisk AMI.
Прослушать(Истина) — запускает прослушивание порта для дальнейшей обработки и передачи информации в 1С.
Разъеденить() — останавливает прослушивание и закрывает подключение к станции.
5. Использование компоненты в 1С Предприятие
Пример реализации подключения к серверу
Процедура ТелефонияСоединение()
Если глТелефония.Подключен Тогда
Возврат;
КонецЕсли;
Если НЕ глТелефония.Подключиться("server", "5038") Тогда
Сообщить ("Ошибка подключения");
Возврат;
КонецЕсли;
глТелефония.Шифрование = Истина;
глТелефония.ФильтрНомер ("SIP/107");
глТелефония.Прослушать (Истина);
глТелефония.Авторизация ("admin", "password");
КонецПроцедуры
Получение информации от внешней компоненты
Обработка данных должна вестись согласно документации к своей телефонной станции
wiki.asterisk.org.
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если Источник="PBX" Тогда
//обработка данных
КонецЕсли;
КонецПроцедуры
6. Ограничения демонстрационной версии
На чтение (получение) информации от АТС ограничений НЕТ. Например, можно определять какой номер вам звонит
и сопоставлять со справочником Контрагентов.
Невозможно отправлять команды в телефонную станцию через некоторое время после подключения.