Asterisk управление конференциями с телефона
У нас есть 1С (версия 8.Х) и Linux-сервер (в моем случае ubuntu server 15.04 ) c Asterisk (1.8.28.2) на борту. Для интеграции использовал ВК от Simplit ROM-Asterisk.dll (полностью свободная, но снятая с техподдержки ). Про интеграцию можно почитать здесь:
добавление и исключение участников конференции,
Управление микрофоном участника конференции.
Конференции в Asterisk.
Система Asterisk поддерживает функцию конференц-связи (app_meetme.so) с неограниченным (искусственными лимитами) числом пользователей. Прочитать подробнее про MeetMe можно здесь:
conf => 2345,,321
И правим dialplan (extension.conf) :
; meetme – собственно сама конференция
exten => 2345,1,MeetMe(2345,TMx)
; meetme kick all – выгнать всех из конференции
exten => _*0*XXXX*1,1,MeetMeAdmin($,K)
; meetme kick user (id in conference) – выгнать участника из конференции
Сбор конференции осуществляется организацией звонков с внутреннего номера абонента на номер нашей конференции 2345.
Настройка со стороны 1С
Во обработке Asterisk_ПанельIPтелефонииКонференции в Модуде Формы в функции ПодключениеКСерверуAsterisk() изменяем переменные:
В справочнике Asterisk_Внутренние_телефоны записаны внутренние абоненты, и принадлежность их к той или иной конференции (н/р общая планерка , региональная планерка). C равочник Asterisk_Конференции содержит информацию о самих конференциях (Название, id).
Принцип работы.
Запускаем обработку → выбираем конференцию ( подгружается список участников) → кликаем на кнопу Собрать конференцию (происходит обзвон всех участников).
Отключить/подключить участника можно, кликнув по иконке статуса.
При обнаружении говорящего участника конференции, его ФИО подсвечивается синим цветом. Это удобно для отслеживания посторонних шумов в конференции (в этом случае можно просто выключить микрофон у участника).
Что планируется сделать:
Вести запись конференций (на стороне Asterisk), с возможностью прослушивания их на стороне 1С, с логированием участников и прочих данных.
Добавление пользователя в активную конференцию, которого нет в списке этой конференции.
Разделение конференций по комнатам
Специальные предложения
Возможно ли сделать автоматическое отключение микрофона пользователей, которые "вылетают" во время конференц связи, что бы участники не слышали уведомлений типа - аппарат вызываемого абонента находится вне зоны действия сети?
Просмотры 22068
Загрузки 17
Рейтинг 7
Создание 17.03.16 13:54
Обновление 17.03.16 13:54
№ Публикации 502782
Тип файла Архив с данными
Конфигурация Не имеет значения
Операционная система Windows
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Не указано
Курсы обновлены и скомпонованы на основе нового руководства PMBoK® Guide 7 Комплексный курс по управлению ИТ-проектами от Марии Темчиной с 18 января 2022 года по 15 ноября 2022 годаСм. также
SIP телефон(софтфон) для 1С:Предприятия 8 и IP АТС (виртуальная и офисная) Промо
«АТС.Ринголайн» и «Ringophone» - это современный взгляд, комплексное решение для организации телефонии в офисе, которое работает прямо из коробки. Решения направлены на организации, где главный упор сделан на коммуникацию и взаимоотношения с клиентами. RingoPhone 1С - это бесплатный sip телефон, выполненный в виде внешней обработки для 1С. Данная панель телефонии разработана для любых конфигураций 1С:Предприятия 8. RingoPhone работает с АТС на базе Asterisk и провайдерами, которые поддерживают SIP протокол. IP телефония набирает огромную популярность и всё больше возможностей открывается при объединении телефонии и CRM системы. Возможность встроить телефон в свою CRM систему, позволяет осуществлять управление не только на уровне АТС, но и на уровне самого телефона. АТС.RingoLine изначально создавалась с учётом интеграции с современными CRM системами. CRM системам доступно менять любые настройки АТС. Такие как: создание пользователей, добавление и удаление операторов колл-центра, возможность задавать переадресацию сотрудникам, получать информацию о звонках с АТС, а возможность доработки позволит заложить новые алгоритмы распределения звонков по сотрудникам в зависимости от данных в CRM системе.
1 стартмани
04.06.2013 59531 476 ringoline_ru 88
Обработка "ZVONOBOT API" это рабочий шаблон для генерации телефонных звонков клиентам по списку вопросов с сервера «zvonobot».
1 стартмани
27.07.2021 1344 1 ash2015 0
Модуль интеграции с системой Unibell Flash Call - доставка кодов подтверждения клиенту посредством телефонного звонка
Пример использования сервиса доставки кодов Unibell Flash Call, который представляет собой альтернативу отправки кодов посредством СМС - кодом служат последние 4 цифры телефонного номера, с которого пришел звонок.
5 стартмани
21.06.2021 2041 0 Miket78 0
Чтение звонков из облачной АТС Билайн
Обработка, показывающая возможность чтения звонков из облачной АТС Билайн.
1 стартмани
20.10.2020 2703 8 mihco 0
Пошаговая установка сервера телефонии FreePBX Distro и настройка для работы с 1C и не только. Промо
И так приступим…. У меня старый компьютер с конфигурацией : CPU-Intel Pentium 4, 3000 MHz, DDR SDRAM-2048 Mb, Video GF 9400 512 Mb, HDD 80 Gb, CD-ROM, сетевая встроенная карта 100 м/бит. Можно еще проще конфигурацию…… Хватит для фирмы 1-50 SIP абонентов, GSM trunk, Skype и т.д. Так же у меня две аналоговых линии местной АТС FXO (Grandstream HT-503 и Unicorn 3112) и 4-е оператора GSM (MTS ,Megafon, BeeLine, Tele 2) . В качестве GSM-шлюза использую модемы Huawei E171 и USB HUB D-Link DUB-H7. К серверу можно прикрутить видео наблюдение, домофон или другое устройство имеющее IP адрес, но это в следующей статье, если хватит сил и терпения.
1 стартмани
23.12.2013 44973 126 APS1968 14
Загрузка истории звонков Mango
Обработка загрузки истории звонков для обычных форм (любые конфигурации).
1 стартмани
29.07.2020 3260 4 ketr 0
Быстрый вызов из карточки сделки через Asterisk
Как из формы сделки в УТ 11 позвонить контактному лицу контрагента? Надо открыть вкладку «Участники» или ссылку «Окружение сделки», выбрать контрагента, открыть список контактных лиц, найти нужное, открыть его форму, перейти во вкладку «Адреса и телефоны» и там нажать кнопку звонка. Долго. Надо в 2 клика.
1 стартмани
19.09.2019 6836 3 soulner 0
Чтение файлов с SFTP АТС Askozia 500444
Небольшая обработка для чтения файлов wav и txt с sFTP.
1 стартмани
13.08.2019 6851 2 ah7777777 3
Asterisk без внешних компонент? Промо
1 стартмани
03.05.2013 54536 214 oleg.rizvanov 23
Загрузка записей телефонных звонков из Asterisk
Как и обещал, вторая часть моей реализации взаимодействия с АТС Asterisk из Управления торговлей 11, а именно загрузка записей телефонных разговоров в качестве прикреплённого файла к документу Телефонный звонок.
1 стартмани
28.07.2019 9264 9 soulner 8
Звонок из карточки контакта через Asterisk без внешних компонент
Не спешат, к сожалению, разработчики 1С интегрировать Управление торговлей с IP-телефонией. Есть решения от сторонних производителей, но они сильно платные и используют механизм внешних компонент. А было бы круто, если бы можно было сразу позвонить из карточки контактного лица и тут же заполнить форму звонка, и всё это без привязки к Windows… Эх, мечты!
1 стартмани
01.07.2019 32635 28 soulner 39
Манго API. Звонок из 1С и получение списка звонивших
Пример работы с АТС Манго из обработки. Доступно для любой конфигурации на управляемых формах. Возможно: Получение истории звонков за период, Звонок из 1С от любого пользователя (нужен внутренний номер телефона сотрудника) .
1 стартмани
25.03.2019 8963 43 p.ugrumov 9
Пример интеграции 1С и АТС типа Asterisk штатными средствами 1С
Пример реализации обработки событий звонков АТС на базе Asterisk, без dll и других сторонних средств.
1 стартмани
21.03.2019 15825 52 Mouros 13
DLL для подключения к Asterisk (32/64 клиенты)
Подключение к Астериску и получение событий "Newchannel","BridgeEnter","Hangup" через ОбработкаВнешнегоСобытия.
1 стартмани
19.03.2019 11771 19 xxxAndricxxx 14
Интеграция Альфа-авто с телефонией (Простые звонки)
Появилась необходимость интеграции Рарус Альфа-авто 5 с телефонией. По ряду причин от использования встроенного в конфигурацию "Рарус СофтФон" клиент отказался. В итоге был выбран удобный для клиента оператор SIP телефонии. Интеграцию с 1С выбранный оператор предлагает через решение Простые звонки (как и многие другие операторы). Готового решения для Альфа-авто не оказалось. В итоге оптимизировали обработку для УТ 10.3.
1 стартмани
26.02.2019 14570 16 de0nis 0
1С + CoMagic
Делимся опытом: интегрировали 1С и ВАТС CoMagic. Стандартные механизмы и Calltracking.
1 стартмани
14.02.2019 9171 17 medangel 3
Быстрая интеграция Билайн (облачная АТС) с 1С
В этой публикации рассмотрено, как быстро сделать вызов (интегрировать с 1С) Облачную АТС Билайн через ее API.
1 стартмани
18.12.2018 9362 17 tva120 6
5 стартмани
03.05.2018 23727 29 Kutuzov 5
Распознавание телефонных звонков с помощью речевых технологий Yandex SpeechKit (новая версия Yandex SpeechKit Cloud и Yandex Object Storage)
Обработка позволяет преобразовывать телефонный звонки формата wav в текст с помощью речевых технологий Яндекса. Дополнительно в обработке реализована нарезка телефонного звонка на кусочки по 1 Мб с помощью SOX. Загрузка дополнительных данных по звонку из программы SpRecord. Использовал на нетиповой конфигурации Управление торговлей 10.3.
1 стартмани
23.01.2018 24837 32 zzhiraf_ 21
Доступ к Cisco AXL из 1С
Пишем запросы к IP-телефонии Cisco Unified Communications Manager (CUCM).
1 стартмани
20.12.2017 12836 12 igormiro 0
Подключение к API телефонии ЭНФОРТА
Подключение к API телефонии ЭНФОРТА с привязкой к событию по номеру телефона.
3 стартмани
12.12.2017 10797 0 mi4asib 0
Интеграция 1С и системы IP телефонии Binotel
Интеграция 1С и системы IP телефонии Binotel (Украина)
1 стартмани
11.08.2017 17657 45 bulpi 16
Внешняя компонента RBSCaller.dll для интеграции с 3CX Phone System
Внешняя компонента для 1С: 8.x, позволяющая производить звонки, получать оповещения о входящих через механизм внешних событий 1С.
2 стартмани
12.10.2016 19480 19 RBS 8
Голосовой ввод в 1С (Asterisk + Yandex speechkit + php)
Пример того, что можно получить, подружив телефонию на базе Asterisk и 1С.
1 стартмани
05.01.2016 25731 40 lakhnov.alexander 4
Взаимодействие 1С и стационарных телефонов семейства yealink
Начиная с 15-й версии Asterisk появился полноценный функционал организации видеоконференций, но наблюдались некоторые проблемы в виде рассыпания видеокартинки. В 16 версии данный функционал был доработан и улучшен режим работы с мультипотоком «SFU»(когда приходящие видео потоки рассылаются всем участникам конференции, которые поддерживают прием нескольких потоков, т.е. получаем полноценный MCU на базе Asterisk). В статье использовались файлы: […]
Начиная с 15-й версии Asterisk появился полноценный функционал организации видеоконференций, но наблюдались некоторые проблемы в виде рассыпания видеокартинки. В 16 версии данный функционал был доработан и улучшен режим работы с мультипотоком «SFU»(когда приходящие видео потоки рассылаются всем участникам конференции, которые поддерживают прием нескольких потоков, т.е. получаем полноценный MCU на базе Asterisk).
P.S. Все описанные действия в статье необходимо выполнять от имени суперпользователя (root). Установка и настройка производилась на предустановленной системе CentOS 7 + Asterisk 16 + FreePBX 15+PjSIP.В статье использовались файлы:
cyber_mega_phone_2k-master.zip — простое клиентское приложение на стороне браузера, созданное для тестирования многопотоковых возможностей Asterisk на основе библиотеки JsSIP.
Инструкция
2. Пройдём авторизацию во FreePBX, нажмём «FreePBX Administration», введем «username и password» и нажмём «Continue»
4. Перейдем в меню Settings -> Advanced Settings и включим возможность подключения по WebSocket
5. Выполним подключение по SSH к серверу IP АТС Asterisk. В зависимости от используемой системы(Windows, Linux, MacOS), подключение по SSH можно выполнить с использованием различного дополнительного программного обеспечения(Putty), либо системного терминала.
6. Создадим гостевую кастом учетную запись PJsip:
7. Создадим дополнительный профиль телеконференции:
8. Создадим два экстена для проверки видео конференц связи:
Создание двух экстенов9. Приступим к установке Cyber Mega Phone:
Скачивание Cyber Mega Phone в корневую директорию ApacheЗаполнив все данный учетной записи выполним подключение к серверу АТС нажатием клавиши «Connect» и выполним подключение к конференц комнате нажатием клавиши «Call»
Подключение к серверу АТС Организация звонка в конференц комнатуНа написание данной статьи меня сподвигло 2 вещи: малое количество или вовсе отсутствие современных рабочих примеров по «фишкам» Asterisk, а так же нежелание специалистов делиться этими самыми «фишками» с остальными. Это я сейчас про РУ-комьюнити. Всякие «Деды» на форумах скорее обольют тебя помоями и отправят читать книжки десятилетней давности, чем дадут мало мальски полезную информацию. Сами же темы форумов, созданные в 2005-2010 годах, сильно устарели и иногда что то уже выпилено из текущей версии астериска, а что то надо очень сильно переделать, чтобы заработало.
Так вот.
В следствие отказа от CUCM в пользу Астериска, руководством была поставлена задача сохранить особо популярные у пользователей сервисы в максимально первозданном виде, дабы не третировать людей. Одним из таких было и создание конференций. К тому моменту с Астериском я уже был знаком, но не столь глубоко, по этому на перебор всевозможных вариантов конференции у меня ушло около полутора недель, а на окончательное решение натолкнула вообще другая задача.
Проблема заключается в том, что из похожего на решение есть статья с устаревшей meetme, а так же какой то монстр, которого у меня так и не удалось заставить работать. Я же предлагаю кое что не настолько громоздкое.
Мякотка
Описывать что такое confbridge, за что отвечают секции в том или ином конфиге и что это за опция такая, я не буду, эта информация как раз имеется и актуальна. Сейчас про решение в целом.
Задача: сделать так, чтобы конференцию можно было создать во время разговора, а затем пригласить туда еще абонентов. Основная проблема, что функция channelredirect работает не так как хотелось бы. То есть если выполнять ее из диалплана во время разговора, то один из каналов улетит куда надо, а второй разрушится, а лазать по всему диалплану на 2к строк и прописывать на Dial'ах опцию g было лениво. И мне совершенно не понятно, почему в большинстве мануалов все пытаются решить задачу только через диалплан, игнорируя возможность астериска работать с внешними скриптами и ami.
Итак. Астериск 14.4.0
Скрипт конференции на 2 варианта(c комментариями):
Для того, чтобы создать конференцию, я выбрал комбинацию *1. Коротко и не пересекается с основной нумерацией.
Добавляем в features.conf вызов скрипта с передачей в него требуемых переменных
Затем, чтобы это срабатывало, создаем в диалплане в секции [globals] переменную и добавляем нашу фичу
Для добавления в уже созданную конференцию новых участников, потребуется прописать код в confbridge.conf
Ну а теперь самое вкусное, extensions.ael:
Для создание конференции (сюда адресует php скрипт оба разговорных канала):
Для добавления нового пользователя (сюда адресует dialplan_exec):
Все. Никаких килотонн кода в диалплане. Все емко. *1 в разговоре и вы в конфе, еще раз *1 гудок и набор номера, кого добавить.
Наросты
Гонимый пожеланиями пользователей, я стал развивать данную фичу.
Следующим стала возможность создавать конференции с нуля (не из разговора), а так же заходить в уже созданные конференции по их номеру, а не ждать приглашающего звонка
Добавляем в диалплан:
Добавляем в скрипт:
Так же пришлось доработать строчку _*X.
Теперь чтобы войти в конференцию или создать ее с нуля, просто совершается звонок на *1 и номер, например *15234.
Финальной мутацией этого сервиса пока является так называемая «групповая конференция». Это когда большим начальникам лень всех добавлять вручную, а хочется нажать одну кнопку и все в сборе. Для этого я решил сделать отдельные сервис коды (*XXX), чтобы людям и самому не путаться. Для нашей организации вряд ли в ближайшие 100 лет потребуется over1000 конференц групп, так что запаса нумерации должно хватить. У себя вы можете добавить как другой префикс, так выделить другую номерную емкость.
Сам скрип сбора участников:
Все группы хранятся в базе данных по структуре «Группы, номер, имя, описание». Если появляется новая группа, то просто добавляем ее в базу.
Теперь для сбора, например, всех директоров на совещание, генеральному всего лишь потребуется набрать *100. А как правило у больших боссов большие телефоны. Следовательно биндим *100 на любую клавишу speeddial'а, подписываем как «директора» и пользователь вообще не заморачивается, что ему набрать. Кнопку нажал — совещание собрал.
Теперь предвосхищая ваши вопросы:
Почему скрипты и ami? Потому что средствами диалплана у меня так и не получилось сделать вменяемый редирект обоих каналов, не растеряв их по дороге. В ami же в функции redirect можно прицепить доп канал + задать ему переменную (например номер конференции, чтобы он тоже мог кого то в нее добавить).
Так же вы могли заметить, что я вынес фичи в отдельный контекст service_code-ael. Это удобно, когда всяких фич у вас становится больше пары штук. Я решил делать их через *, следовательно в любом контексте я просто пишу _*X. и адресую в этот контекст. Возможно, кто то найдет решение изящнее, но я за несколько месяцев так и не нашел. А данный функционал пришелся пользователям по душе.
Почему ael, а не conf? Ну потому что он структурированней и читать его легче
и понятнее. Одна функция gotoif чего стоит. До lua я еще не дорос.
Почему в примере массового сбора originate сделаны через bash, а не через AMI? Проблема в том, что выполняя кучу originate подряд через ami, система ждет, пока завершится предыдущий, чтобы дать следующий. А если никто не берет трубку, а там 20 секунд no_ans и таких 5 штук? Можно будет до вечера ждать сбора.
Ну вот, пожалуй, и все. Надеюсь эта статья поможет таким же ищущим, каким был я, когда все это потребовалось сделать быстро, комфортно для пользователей, а главное, чтобы в дальнейшем обслуживать данную систему было удобно самому, так сказать с заделом на будущее.
Confbridge.conf - файл конфигурации конференций в Asterisk. Содержит категории профилей пользователей конференции и профилей конференц-мостов, а также настройки меню управления конференциями.
Профили телеконференций по умолчанию
Профиль пользователя конференц-моста
ConfBridge User Profile Options
[default_user]
Пользовательская категория (профиль).
admin
Предоставить права администратора или нет. Выкл по умолчанию.
marked
Метка особого пользователя. Поведение других участников конференции
может зависеть от действий маркированного пользователя.
Некоторые параметры привязанные к маркированному пользователю,
будут определять это поведение. По умолчанию выкл.
startmuted
Выключить микрофон участника при подключении к телеконференции. По умолчанию параметр выкл.
music_on_hold_when_empty
Проигрывать Музыку на Удержании одинокому участнику конференции.
Или участнику конференции ожидающему маркированного пользователя.
Выкл по умолчанию.
music_on_hold_class
quiet
announce_user_count
Сообщить кол-во участников новому пользователю конференции. По умолчанию выкл.
announce_user_count_all
Сообщить кол-во участников конференции всем пользователям, когда кто-нибудь входит.
Если задан номер, то оповещение будет производится только однажды,
по достижении указанного числа участников.
announce_only_user
Сообщить пользователю о входе в пустую конференцию. Включено по умолчанию.
wait_marked
Пользователь не становиться участником конференции, до подключения промаркированного пользователя (см. также music_on_hold_when_empty=yes). выкл по умолчанию.
end_marked
Выкинуть всех участников (с данной опцией) из конференции, когда ее покинет последний из маркированных пользователей.
dsp_drop_silence
Данная опция отбрасывает голосовые пакеты активного участника,
в которых не распознается речь, т.е. тишину.
Включение этой опции кардинально уменьшает нагрузку на сервер
и улучшает качество звука в конференции, за счет удаления фоновых шумов.
Рекомендуется использовать для больших конференций со множеством участников.
dsp_talking_threshold
Временной порог распознавания голосовой активности (в миллисекундах),
за которым считается, что участник держит речь.
Этот параметр влияет на разные аспекты конференции
и не должен изменяться, без явного понимания последствий для качества звука.
Как это может повлиять:
когда входящий аудио поток распознан. Если значение слишком расплывчатое, то говорящий, каждый раз, начиная речь, будет слышать себя некоторое время, пока DSP не распознает его, как оратора.
слишком узкое значение может привести к тому, что за речь будет приниматься шум в помещении и отображаться, как детектирование речи в событиях AMI . В общем, если вы не используете приложений, контролирующих конференцию через AMI , можно не беспокоиться.
когда определяет начало речи после периода тишины. Если значение слишком расплывчатое, начало речи будет обрезаться детектором молчания.
По умолчанию значение 160 ms. Возможные значения от 1 до 2^31 (2147483648).
dsp_silence_threshold
Пороговое значение тишины, за которым считается, что говорящий взял паузу, т.е. замолчал. К изменению данного параметра, надо относиться с большой осторожностью т.к. он может сильно влиять на качество вызова.
Лучше всего установить данное значение, исходя из максимальной продолжительности пауз в естественной речи
Значение по умолчанию 2500ms. Возможные значения от 1 до 2^31
talk_detection_events
denoise
Использовать или нет фильтр шума. по умолчанию выкл. func_speex должна быть скомпилирована и установлена. не путайте эту опцию с drop_silence. Denoise используется для фильтрации фонового шума в канале говорящего участника.
jitterbuffer
Включает jitterbuffer (Jitter) аудио потока перед микшированием конференции.
Включение этой опции может привести к небольшим задержкам.
Данная опция использует функцию диалплана JITTERBUFFER
Для более точной настройки используйте функцию JITTERBUFFER в диалплане,
непосредственно перед вызовом команды ConfBridge.
Установить пин-код для входа в конференцию. О вводе пин-кода будет объявлено.
announce_join_leave
Если включено, новому пользователю будет предложено назвать свое имя при входе в конференцию. Записанное имя будет объявлено участникам конференции Выкл по умолчанию.
announce_join_leave_review
Похоже на опцию announce_join_leave, перезаписать или подтвердить его, при помощи голосовых подсказок. Выкл по умолчанию
dtmf_passthrough
announcement
Проиграть указанный файл пользователю входящему в конференцию.
timeout
Профиль конференц-моста
ConfBridge Bridge Profile Options
например:
Настройки Видео-конференции
Настройка обработки и распределения видео в конференции.
Звуковые файлы профиля конференции
Все звуковые файлы используемые в конференции,
могут быть заданы индивидуально для каждого профиля.
Используемый формат: <fs medium>имя_опции = <имя файла или полный путь к файлу></fs>.
Если указано только имя файла, оно должно быть расположено
в директории по умолчанию, например: /var/lib/asterisk/sounds .
Опции меню конференц-моста
Далее приводится список действий меню, которые могут быть назначены DTMF сигналам
Предположим что у нас есть небольшая организация, где работает около 50 сотрудников. Все они используют Asterisk для связи внутри компании и звонков наружу. Все настройки буду проводить на свежей Asterisk 18. В своей предыдущей статье я рассмотрел процесс установки Asterisk 18 на Centos 8. Давайте рассмотрим как происходит настройка Asterisk с нуля.
Учитывая тот факт что библиотека chan_sip не актуальна, будем рассматривать настройку через PJSIP. Старую библиотеку необходимо отключить (если включена) для исключения конфликтов.
Отключение chan_sip
В файле /etc/asterisk/modules.conf необходимо найти и убрать ; перед строкой noload => chan_sip.so
Рассмотрим структуру Asterisk с кратким описанием конфигурационных файлов требуемых для настройки транка, пользователей, диалплана.
Структура Asterisk
Настройка Asterisk происходит путем редактирования конфигурационных файлов. Располагаются они в директории /etc/asterisk/ . Перечислю основные файлы которые нам потребуются для начальной настройки.
Я перечислил лишь основные конфигурационные файлы Asterisk. Но их значительно больше. В повседневной жизни используется только два файла exntensions.conf и pjsip.conf
Часть функций а также повторная загрузка данных из конфигурационных файлов происходит с помощью консоли Asterisk. Зайти в консоль можно так:
Для более детального вывода данных в консоль можно использовать ключ -v (я обычно использую -vvvvvv). Чем больше букв v указано, тем детальнее будет вывод информации в консоль. Запуск в режиме повышенной детализации:
Полный список консольных команд с описанием можно прочитать в моей статье
Подключение пользователей
Добавление новых пользователей происходит в файле pjsip.conf. Конфигурационный файл pjsip.conf состоит из секций. Имена секций указываются в квадратных скобках. Название секций может быть произвольным, кроме имен ENDPOINT и AOR которые должны быть одинаковые с заголовком SIP URI.
Перечислю возможные типы секций:
В каждой секции есть опция type содержащая назначение секции в общей конфигурации.
Создание первого пользователя
Создадим учетную запись нашего первого пользователя в Asterisk. Пользователь может подключаться с SIP телефона либо софтфона. Для удобства я заполняю конфигурационные файлы добавляя новые данные в конец файла. Также очень удобно удалить все и создать чистый файл для удобства чтения. Откроем файл pjsip.conf для редактирования
В конец файла добавим информацию о новом пользователе с добавочным номером 1000. Я всегда использую четырехзначные внутренние номера для дальнейшего возможного роста количества абонентов.
В данном пример я добавил минимально необходимую информацию о пользователе для его регистрации на сервере Asterisk. Давайте разберем подробнее что мы написали:
После сохранения конфигурации в файл необходимо чтобы Asterisk применила конфигурацию. Для этого зайдем в консоль
И введем команду повторной загрузки настроек из файла pjsip.conf
Теперь запустим SIP телефон и настроем учетную запись 1000 на нём. В работе я использую софтфон MicroSIP. Он мне нравится за свою компактность и возможность работы в portable режиме.
Как видно на изображении выше мы удачно подключились к АТС. Но что делать если нам необходимо добавить не одного, а 50 пользователей? Если писать такой конфиг по каждому пользователю, потом очень сложно будет что-то найти. Для таких случаев есть шаблоны. Разберемся как они работают.
Создание шаблона
Использование шаблонов также полезно для разделения сотрудников из разных отделов с разным уровнем доступа. Название шаблона указывается в квадратных скобках [] затем идет (!)
В шаблоне можно указывать все те же параметры что и при обычном создании пользователя. Я привел пример простого шаблона отдела маркетинга с указанием минимального набора настроек. Однако их может быть значительно больше, например: используемые кодеки, необходимость использования NAT, контекст, разрешенную лиюо запрещенную сеть для регистрации абонентов. В общем параметров может быль сколь угодно много, и писать все их для каждого пользователя дело не благодарное. Рассмотрим далее применение шаблона для создания пользователей.
Применение шаблона
Создадим трех пользователей отдела маркетинга с применением шаблона. Для использования шаблона необходимо справа от названия секции в круглых скобках добавить название шаблона.
Используя шаблон мы указываем только те параметры которые хотим поменять. Все параметры не указанные нами в каждой из секций будут браться из шаблона. Можно зайти под каждый из пользователей и проверить что все получилось.
Маршрутизация вызовов
Структура файла extensions.conf
Файл имеет две обязательные секции general и globals. Секции также указываются в квадратных кавычках. После двух обязательных секции идут секции вашего диалплана.
Рассмотрим параметры секции [general]
Перейдем к параметрам секции [globals]
В Asterisk могут использоваться как глобальные переменные так и переменные канала. Есть еще переменные окружения, они обеспечивают доступ из Asterisk к переменным окружения unix.
Глобальные переменные могут быть определены в секции [globals] либо с помощью команды SetGlobalVar в плане набора номера. Глобальная переменная отличается тем, что работает для всего файла exntensions.conf. Переменные канала используются в том диалплане в котором они определены.
В глобальных переменных удобно хранить длинные добавочные номера, время работы (при использовании автосекретаря) и другие часто используемые переменные. Пример секции [globals]
В приведенном примере я задал две переменные с указанием времени работы и дней недели для автосекретаря и в третьей переменной указал добавочный номер и канал через который можно позвонить на ресепшен.
Диалплан в Asterisk пишется на основе контекстов. В каждом контексте мы определяем набор приложений с указанными параметрами. Давайте сразу рассмотрим на примере, как нам написать диалплан чтобы пользователи могли звонить на добавочный 1000.
Я написал контекст с названием from-internal далее указал что при звонке на добавочный 1000 будет происходить дозвон номера 1000 через интерфейс PJSIP. При создании пользователя Asterisk в файле pjsip.conf в разделе настройки endpoint мы указываем поле context=from-internal. Это означает что совершая вызов данный пользователь будет руководствоваться правилами указанными в контексте [from-internal] файла extensions.conf
Процесс вызова
Совершая вызов абонент будет искать в своем контексте правила набора указанного номера. В каждом контексте может быть большое количество добавочных номеров. К набираемому добавочному номеру правила применяются последовательно.
Формат записи такой: exten = имя,приоритет,приложение(параметры)
Расширим наш диалплан, добавив дополнительные пункты. И не забудьте, что при изменений файла extensions.conf необходимо чтобы Asterisk перечитал его. Для этого заходим в консоль и вводим команду dialplan reload
Как вы уже заметили, комментарии можно писать сразу после ;
При звонке на 1000 мы поднимаем трубку, проигрываем приветствие и последним действием будет звонок на добавочный 1000. Можно написать и так:
Приоритет можно заменить буквой n но первый приоритет указывать необходимо обязательно. Можно еще немного оптимизировать наш диалплан.
Используя same вместо exten можно не писать в каждой строке добавочный 1000. Но как и в случае с n в первой строке указывать exten обязательно.
Системные добавочные номера
Писать диалплан для каждого добавочного номера дело не благодарное, для таких целей будем использовать шаблон.
Шаблоны номеров
Для удобства добавочные номера можно сопоставлять по шаблонам. Все шаблоны в диалплане начинаются со знака нижнего подчеркивания _
Шаблон для звонков внутри организации по всем добавочным из 4 цифр будет выглядеть так:
Вложение контекстов
Есть одна особенность, Asterisk сначала сортирует добавочные (exten) и затем ищет первое совпадение. Чтобы при совпадении шаблонов заставить Asterisk звонить по нужному будем использовать вложенные контексты.
В контексте from-internal сначала будет обрабатываться шаблон _XXXX затем вложенный контекст include=long
Увидеть в какой последовательности Asterisk обрабатывает диалплан можно введя в консоли команду dialplan show
Благодаря созданному диалплану все 4-х значные номера будут идти на локальных пользователей. Остальные номера пойдут через внешнего провайдера SIPNET. И чтобы все внешние звонки действительно пошли через SIPNET давайте его настроим в pjsip.conf
Настройка внешнего провайдера
Для проверки входящей и исходящей связи я буду использовать тестовый транк с регистрацией от SIPNET. Я настрою сам транк в файле pjsip.conf и правила маршрутизации звонков в extensions.conf
Открываем файл pjsip.conf
Добавляем в конец файла регистрацию транка провайдера
Тонкости настройки транка провайдера у каждого свои но приведенный пример как правило подойдет для большинства других.
После добавления новых данных в файл не забываем зайти в консоль asterisk и перечитать конфиги
Настроим входящую маршрутизацию
Добавляем настройки маршрутизации входящей связи при звонке снаружи на наш номер SIPNET
Вставим следующий текс в конец файла
Можно добавить обработку входящего вызова по времени.
В зависимости от текущего времени и дня недели если вызов совершен во временной промежуток указанный в GotoifTime будет переход на метку work. Все вызовы не попадающие под временной интервал будут отправляться на метку outwork.
На данном этапе мы создали обработку внутренних вызовов, входящих и исходящих внешних (городских) вызовов. В тестовом аккаунте проверить исходящие вызовы можно позвонив по телефону техподдержки 2009991
Считаю настройку для небольшой организации достаточной. Мы разобрали как происходит настройка Asterisk с нуля.
Смотрите видео по настройке
Читайте также: