Asterisk настройка исходящих звонков. Корпоративная телефония часть №5
Asterisk поддерживает несколько сигнальных протоколов передачи информации: H.323, SIP, IAX. Они используются для установления соединения, чаще всего применяется SIP. Голос передается обычно по RTP. Представление об этих протоколах нужно иметь потому, что при настройке исходящих звонков в диалплане Asterisk указывается имя протокола.
Данный материал является логическим продолжением цикла статей по настройке офисной телефонии:
Установка Asterisk из исходников. Настройка корпоративной телефонии — часть №1
Asterisk настройка сети. Корпоративная телефония часть №2
Asterisk добавление пользователей. Корпоративная телефония часть №3
Asterisk добавление пользователей. Корпоративная телефония часть №4
Настройку будем производить в /etc/asterisk/extensions.conf и /etc/asterisk/sip.conf
Сначала посмотрим информацию по приложению которое будем использовать
Переходим в консоль сервера телефонии
Выводим все приложения
Теперь из списка выбираем dial и просматриваем информацию по нему
Информация при этом соотносится с используемой версией пакета
Правим extensions.conf настроенный ранее
[phones]
exten => 100,1,NoOp(First Line)
exten => 100,2,NoOp(Second Line)
exten => 100,3,Dial(Sip/user1)
exten = > 100,4,Hangup
После указания номера 100 идет порядковый номер правила, а затем название протокола — Sip в данном случае — и через слэш имя пользователя, который задан в sip.conf
После того как сделан вызов обязательно нужно использовать Hangup
Перезапускаем диалплан
Сейчас можно звонить на extention 100 (т.е. авторизовавшись в программном телефоне или используя аппаратный телефон звонить на 100), при звонке в консоли Asterisk видно, что вызов проходит, но после окончания звонка можно увидеть такую ошибку:
«unable to reopen master file /var/log/asterisk//cdr-csv//Master:csv» :Permistion denied
Она вызвана существованием некорреткных прав и легко исправляется
Сейчас исходящий звонок должен проходить без ошибок.
Добавляем аналогичные строки в конфигурационный файл для второго пользователя
[phones]
exten => 100,1,NoOp(First Line)
same => n,NoOp(Second Line)
same => n,Dial(Sip/user1)
same = > n,Hangup
exten => 200,1,NoOp(First Line)
same => n,NoOp(Second Line)
same => n,Dial(Sip/user2)
same = > n,Hangup
Здесь использован более совершенный синтаксис — для каждого последующего правила прописывается same, а порядковый номер заменяется на n, что действительно для всех номеров кроме первого (который всегда указывается) — это является хорошей практикой и исключает возможность неправильного выполнения программы, например, при перестановке строк.
После перезапуска диалплана пользователи могут беспрепятственно звонить друг другу.
Проигрывание звукового файла при звонке
Добавим проигрывание определенного звукового файла при звонке на одно из расширений
[phones]
exten => 100,1,NoOp(First Line)
same => n,NoOp(Second Line)
same => n,Dial(Sip/user1)
same = > n,Hangup
exten => 200,1,NoOp(First Line)
same => n,NoOp(Second Line)
same =>n,Playback(tt-monkeys)
same => n,Dial(Sip/user2)
same = > n,Hangup
Теперь при звонке на 200 сначала будет проигрываться один из стандартных звуковых фрагментов, потом будет совершаться вызов на user2.
Настроим возможность звонить во внешний мир
Строк с playback из предыдущего примера здесь нет, в остальном диалплан тот же.
[phones]
exten => 100,1,NoOp(call for user1)
same => n,Dial(Sip/user1)
same = > n,Hangup
exten => 200,1,NoOp(call for user2)
same => n,Dial(Sip/user2)
same = > n,Hangup
exten => 8888,1,Goto(ougoing,8888,1)
[outgoing]
extent => 8888,1,Dial(SIP/outside)
Вводим новое расширение outgoing, а при звонках на 8888 вызовы будут перенаправляться пользователю outside из sip.conf — обычно это провайдер телефонии.
Теперь если user1 или user2 будут набирать 8888 телефон пользователя outside будет звонить.
Если мы хотим звонить не только на номер 8888 (а это обычно так, то используем регулярное выражение)
[phones]
exten => 100,1,NoOp(call for user1)
same => n,Dial(Sip/user1)
same = > n,Hangup
exten => 200,1,NoOp(call for user2)
same => n,Dial(Sip/user2)
same = > n,Hangup
exten => _XXXX,1,Goto(ougoing,8888,1)
[outgoing]
extent => 8888,1,Dial(SIP/outside)
Все регулярные выражения начинаются с нижнего подчеркивания, ХХХХ означает, что провайдеру вызов будет переадресован случае если номер состоит из 4-х цифр, для номера произвольной длины можно использовать _0X.
Если после настройки звука нет или он есть частично нужно выяснить за NAT-ом ли клиент и сервер и скорректировать конфигурацию.
Источник: https://server-gu.ru/asterisk-outgoing-calls/
Правила для исходящих вызовов
IP АТС Asterisk — это интеллектуальная платформа, которая способна выполнять множество функций и задач для обеспечения удобной и качественной связью офисы компаний.
Исходящие звонки — это одна из основных функций любой АТС. Сотрудники компаний по производственной необходимости могут совершать вызовы с офисного телефона в любых направлениях:
- внутри города;
- на номера мобильных операторов;
- внутри региона;
- внутри страны;
- зарубеж.
Все исходящие вызовы, за исключением звонков на городские номера внутри города, провайдер тарифицирует согласно своим расценкам.
Функционал АТС Asterisk для оптимизации рабочих процессов и затрат на междугородные и международные телефонные соединения, позволяет реализовывать определенные ограничения на совершение сотрудниками звонков.
Возможные ограничения
- Ограничение для всех исходящих звонков, исключая звонки внутри офиса.
Данное ограничение может быть применено к сотрудникам, работа которых не связана с необходимостью наличия телефонной связи вне офиса. Например,
- Ограничение для исходящих звонков одному или группе сотрудников на некоторые звонки
В данном случае мы говорим о том, что ограничение можно поставить на звонки на направления внутри страны, или зарубеж, или на номера мобильных операторов: по одтельности или все вместе.
Наличие возможности ограничивать исходящие звонки, позволит частично оптимизировать затраты на связь и повысить производительность труда сотрудников.
Использование услуг нескольких провайдеров для оптимизации затрат
АТС Asterisk позволяет пользоваться услугами неограниченного количества поставщиков телекоммуникационных услуг. Данная возможность позволяет совершать звонки в зависимости от направления и выбора того или иного оператора связи. Выбор оператора может быть основан на различных критериях: количество телефонных линий, тариф за соединение и т. д.
Например,
- При звонке из офиса на мобильный номер, целесообразно совершать его через оператора мобильной связи;
- При звонке по стране — совершать звонок через оператора, который дает минимальный тариф за такое соединение;
- При звоке зарубеж — использовать линии оператора с дешёвыми ценами на международный телефонный трафик.
Важно отметить, что сотруднику офиса не нужно задумываться о том, как набирать ему номер. Ему достаточно поднять трубку IP-телефона и набрать номер. Все операции по выбору оператора будет совершать АТС Asterisk основываясь на правилах, которые были прописаны инженером во время настройки системы.
Сравнение цен на некоторые телефонные звонки
Как можно заметить, АТС Asterisk позволяет значительно экономить на услугам междугородной и международной телефонной связи.
Стоимость 1 минуты разговора, тенге | ||
Города Казахстана | 11 | |
Мобильные операторы РК | 25 | от 0 |
Города России | 20 | от 2,5 |
Москва, Санкт-Петербург, Екатеринбург | 20 | 2,5 |
Мобильные операторы РФ | 20 | 11 |
Страны Европы | 35 | от 3 |
Китай | 35 | 3 |
Турция | 35 | от 9 |
Внедрение АТС Asterisk — не является чистыми затратами, а полноценными инвестициями в повышение эффективности работы компании.
Источник: https://shop.itsc.kz/asterisk/dial-plan
3 сценария обработки входящего вызова в FreePBX
Представим себе следующую задачу: необходимо сделать так, чтобы при входящем звонке клиент слышал музыку в трубке и одновременно с этим звонил телефон у секретаря. Допустим, что у нас нет IVR и мы просто хотим заменить скучные гудки на какую-нибудь приятную музыку пока клиенту кто-нибудь не ответит.
Сделать это очень просто.
Бежим в модуль Ring Group, закидываем туда нужные внутренние номера и в разделе Play Music On Hold и вместо категории Ring, которая и отправляет в трубку звонящего эти самые скучные гудки, ставим туда какую-нибудь приятную музыку, предварительно добавив новую категорию в модуле Music On Hold.
Осталось только поставить новую ринг-группу на входящий маршрут и всё готово. Предельно просто.
Что если мы хотим сообщить звонящему какую-либо информацию прежде чем он услышит музыку (пойдет вызов на секретаря)? Например, поприветствовать, сообщить имя своей компании и поблагодарить за звонок.
Для этого всё в том же модуле Ring Group нужно поставить предварительно записанное сообщение в поле Announcement. Теперь, позвонив в нашу компанию, клиент услышит приветствие, а затем приятную музыку на ожидании, пока ему не ответит секретарь.
Нужно отметить, что телефон у секретаря зазвонит только тогда, когда начнёт играть музыка на ожидании, пока проигрывается приветствие из опции Announcement, телефон секретаря будет молчать.
Допустим, что речь диктора, записанная в нашем приветствии звучит 7 секунд, а для принятия звонка секретарю требуется в среднем 2 секунды. Мы хотим повысить вероятность того, что как только клиент прослушает приветствие, на его звонок сразу же ответят.
Согласитесь, оперативность ответа на звонок создаёт у звонящего положительное впечатление о компании. Таким образом, нам нужно как-то задержать момент, когда у секретаря зазвонит телефон где-то на 5 секунд, в то время как звонящий будет слушать текст нашего приветствия.
То есть, идеальный сценарий, которого мы хотим добиться следующий:
- Клиент позвонил в нашу компанию;
- Клиент слушает наше приветствие (7 секунд);
- На 5 секунде приветствия, у секретаря начинает звонить телефон;
- Через примерно 2 секунды, он принимает звонок и начинает общаться с клиентом;
Иными словами, нам нужна некая “буферная зона“, в которой будут звучать первые 5 секунд нашего приветствия, а на 2 последних секундах у секретаря звонил телефон.
Сразу стоит оговориться, что стандартными средствами модулей Ring Group, Inbound Route и Announcement эту задачу решить нельзя. Но в этой статье мы покажем способ, который поможет вам эффективно управлять задержкой отправки сигнала вызова на телефоны, пока звонящий слушает приветствие.
Итак, первая хитрость которой мы воспользуемся – это создание звукового файла, в котором речь приветствия и музыка будут звучать друг за другом. То есть, один звуковой файл – сначала текст приветствия, а затем музыка на ожидании, например, в течении 5 минут. Этот файл нужно добавить в новую категорию в модуле Music On Hold.
А теперь, к созданию той самой “буферной зоны”, в которой будут звучат первые 5 секунд нашего звукового файла. Для этого, в модуле Extension нужно создать виртуальный внутренний номер Virtual Extension.
Виртуальный внутренний номер – это номер на нашей IP-АТС, который не требует какой-либо регистрации на конечном устройстве (будь то стационарный телефон или просто софтфон), при его создании, система не запрашивает и не создаёт никакого пароля Secret.
А теперь самое главное – включаем и редактируем правила Follow Me для нашего виртуального внутреннего номера следующим образом.
- Здесь самыми важными параметрами являются:
- Initial Ring Time – время, в течение которого, звонок будет идти на этот номер, прежде чем уйдёт на номера из списка Follow-Me List . Это и есть те самые 5 секунд, на которые нам нужно задержать момент, когда у секретаря зазвонит телефон.
- Follow-Me List – номер, на который уйдёт звонок после времени, указанном в Initial Ring Time. В нашем примере, 1011 – это номер секретаря.
- Play Music On Hold – звуковой файл, содержащий приветствие и музыку на удержании.
Можно выбрать любую стратегию обзвона типа ringall и её модификации. Теперь этот виртуальный внутренний номер можно повесить на входящий маршрут.
Источник: https://mneustroev.blogspot.com/2017/06/blog-post.html
Базовая настройка SIP АТС — Asterisk для небольшого офиса
Рассмотрим как выполнить базовую настройку SIP АТС — Asterisk. В примере будет использоваться Asterisk 13 (как установить его можно ознакомится тут). Так же в примере будут рассмотрены основные моменты в настройке, для понимания принципа как все устроено.
(Статья в процессе написания и будет дополнятся)
Техническое задание
- Настройка внутренних номеров, настройка sip-транков выданных провайдером.
- Настройка маршрутизации звонков, с возможностью совершать внутренние звонки и внешние звонки, а так же принимать входящие извне звонки.
Настройка внутренних номеров (sip.conf)
Прежде чем начать, выполним резервное копирование файла конфигурации /etc/asterisk/sip.conf:
cp /etc/asterisk/sip.conf /etc/asterisk/sip.conf.backup
Выполним настройку файла конфигурации /etc/asterisk/sip.conf. Укажем основные параметры для безопастности АТС, зададим шаблон для внутренних номеров и зададим необходимые внутренние номера:
[general] externaddr=11.111.111.11:5060 ;Внешний IP-адрес language=ru ;Локализация звуков context=default allowguest=no ;Разрешить/Запретить гостевые подключения alwaysauthreject=yes ;Разрешить/Запретить отвечать на INVITE и REGISTER allowoverlap=no ;Разрешить/Запретить набор по одной цифре limitonpeers=yes ;Разрешить/Запретить лимит на кол-во одновременных разговоров srvlookup=yes ;Принимать SIP вызовы на основании доменных имен useragent=Asterisk JAKONDA ;Значение поля useragent в SIP заголовке [authentication] ;Шаблон для ВНУТРЕННИХ НОМЕРОВ [internal_numbers](!) type=friend ;peer(Исходящие) и user(Входящие) в одном context=int-call ;Контекст обработки входящих вызовов host=dynamic ; nat=no ;Политики работы через nat deny=0.0.0.0/0.0.0.0 ;Cети из которых запрещено подключение permit=10.1.1.0/255.255.255.0 ;Cети из которых разрешено подключение qualify=yes ;Переодическая проверка доступности клиента canreinvite=no ;Разрешить/Запретить потоки peer-to-peer в обход сервера insecure=port,invite ;port (не требовать совпадения порта), invite (не требовать аутентификации) callgroup=1 ;Группа вызова pickupgroup=1 ;Группа перехвата вызовов call-limit=2 ;Лимит входящих вызовов dtmfmode=rfc2833 ;Какую спецификацию использовать при передачи DTMF сигналов disallow=all ;Запретить использование всех кодеков, ниже разрешаем нужные allow=alaw allow=g729 [100](internal_numbers) callerid=”Number 100″ secret=123 [101](internal_numbers) callerid=”Number 101″ secret=123
После внесенных изменений в файле sip.conf, нужно в консоли Asterisk выполнить команду (sip reload), для того чтобы внесенные изменения приминились.
Список созданных номеров (sip show users):
SRV-ASTERISK-SP*CLI> sip show users Username Secret Accountcode Def.Context ACL Forcerport 100 123 int-call No No 101 123 int-call No No
Настройка внешних линий для выхода на городские, междугородние номера и приема входящих извне звонков
Для того чтобы совершать звонки на внешние номера, а так же иметь возможность принимать и обрабатывать входящие звонки на внешний номер, необходимо в файл конфигурации /etc/asterisk/sip.conf добавить данные SIP-транков выданных провайдером.
На примере рассмотрим провайдеров МАНГО-ТЕЛЕКОМ и ZADARMA.COM.
[general] ;Блок регистраций транков в МАНГО-ТЕЛЕКОМ register=000100:[email protected]:60000/000100 register=000101:[email protected]:60000/000101 [authentication] ;Шаблон для ВНЕШНИХ ТРАНКОВ (МАНГО-ТЕЛЕКОМ) [external_trunks_mgo](!) type=friend context=ext-call-mgo host=domain.mangosip.ru port=60000 qualify=yes accountcode=Mgo fromdomain=domain.mangosip.ru insecure=invite dtmfmode=inband disallow=all allow=alaw allow=g729 ;Внутренние номера (МАНГО-ТЕЛЕКОМ) [000100](external_trunks_mgo) username=000100 secret=XXXXXXXX fromuser=000100 [000101](external_trunks_mgo) username=000101 secret=XXXXXXXX fromuser=000101 ;Шаблон для ВНЕШНИХ ТРАНКОВ (ZADARMA.COM) [external_trunks_zadarma] host=sip.zadarma.com insecure=invite,port type=friend fromdomain=sip.zadarma.com disallow=all allow=alaw,ulaw dtmfmode=auto secret=Aa1234567 defaultuser=555666 trunkname=555666 fromuser=555666 callbackextension=555666 context=ext-call-zadarma qualify=400 accountcode=Zdr directmedia=no nat=force_rport,comedia
После внесенных изменений в файле sip.conf, нужно в консоли Asterisk выполнить команду (sip reload), для того чтобы внесенные изменения приминились.
Список созданных номеров (sip show users):
SRV-ASTERISK-SP*CLI> sip show users Username Secret Accountcode Def.Context ACL Forcerport 000100 XXXXXXXX Mgo ext-call-mgo No No 000101 XXXXXXXX Mgo ext-call-mgo No No 555666 XXXXXXXX Zdr ext-call-zdr No Yes 100 123 int-call No No 101 123 int-call No No
Список пиров (sip show peers):
SRV-ASTERISK-SP*CLI> sip show peers Name/username Host Dyn Forcerport Comedia ACL Port Status Description 100/100 (Unspecified) D No No 0 UNKNOWN 101/101 (Unspecified) D No No 0 UNKNOWN 000100/000100 88.88.88.88 Auto (No) No 60000 OK (2 ms) 000101/000101 88.88.88.88 Auto (No) No 60000 OK (2 ms) 555666/555666 88.88.88.88 Yes Yes 5060 OK (3 ms) 5 sip peers [Monitored: 3 online, 2 offline Unmonitored: 0 online, 0 offline]
Мы разобрали как создавать внутренние номера на основе шаблонов, добавлять SIP-транки от провайдеров. Теперь перейдем к настройки маршрутизации звонков.
Настройка маршрутизации звонков (extensions.conf)
Прежде чем начать, выполним резервное копирование файла конфигурации /etc/asterisk/extensions.conf:
cp /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.backup
Выполним настройку файла конфигурации /etc/asterisk/extensions.conf. Настроим правила маршрутизации внутренних звонков, звонков на внешние номера и прием и обработка входящих извне звонков:
[general] ;Возможность сохранять текущий dialplan в файл (dialplan save) static=yes writeprotect=no [globals] [default] ;Вешаем трубку [handup-sip] exten => _X!,1,HangUp() ;Исходящие звонки [int-call] ;Звонки на внутренние номера exten => _XXX,1,Dial(SIP/${EXTEN}) ;Звонки на внешние номера через МАНГО-ТЕЛЕКОМ exten => _XXX.,1,Dial(SIP/${EXTEN}@000${CALLERID(num)}) ;Звонки на внешние номера через ZADARMA.COM ;exten => _XXX.,1,Dial(SIP/${EXTEN}@555666) include => handup-sip ;Входящие звонки на номера МАНГО-ТЕЛЕКОМ [ext-call-mgo] exten => 000100,1,Dial(SIP/100) ;Входящие звонки на номер ZADARMA.COM [ext-call-zdr] exten => 555666,1,Dial(SIP/101)
После внесенных изменений в файле extensions.conf, нужно в консоли Asterisk выполнить команду (dialplan reload), для того чтобы внесенные изменения приминились.
Выполним тестовые звонки, сперва с номера 100 на 101, затем на внешний номер 99999 (тестовый номер МАНГО-ТЕЛЕКОМ). В файле /var/log/asterisk/cdr-csv/Master.csv можно посмотреть историю совершенных звонков:
“”,”100″,”101″,”int-call”,”””Number 100″” “,”SIP/100-00000001″,”SIP/101-00000002″,”Dial”,”SIP/101″,”2017-10-23 13:30:32″,”2017-10-23 13:30:39″,”2017-10-23 13:31:22″,50,42,”ANSWERED”,”DOCUMENTATION”,”1508765432.1″,”” “”,”101″,”99999″,”ext-call-mgo”,”””Number 101″” “” “,”SIP/101-00000003″,”SIP/000101-00000004″,”Dial”,”SIP/99999@000101″,”2017-10-24 12:27:53″,”2017-10-24 12:27:55″,”2017-10-24 12:27:58″,4,3,”ANSWERED”,”DOCUMENTATION”,”1508848073.106″,””
Таким образом мы настроили простую маршрутизацию звонков, указав отдельными правилами, что 3-х значные номера расценивать как внутренние, а номера более 3-х знаков расценивать как внешние и использовать для звонка на такие номера нужно SIP-транк провайдера (прим. МАНГО-ТЕЛЕКОМ). Так же при входящем звонке на внешний номер 000100 (МАНГО-ТЕЛЕКОМ) переадресовывать звонок на внутренний номер 100, аналогично поступаем с внешним номером 555666 (ZADARMA.COM), только переводим звонок на номер 101.
Продолжение следует…
(Еще нет оценок)
Загрузка…
Источник: http://jakondo.ru/bazovaya-nastrojka-sip-ats-asterisk-dlya-nebolshogo-ofisa/
Шаблоны и правила набора номера в FreePBX Distro (Asterisk, Elastix)
Эта статья описывает принцип работы исходящей маршрутизации, шаблонах и правилах набора номера, расскажет что такое префикс и приставка в FreePBX Distro (дистрибутив Линукса с предустановленным Астериском и FreePBX), но как и прежде по аналогии можно будет настроить и другие дистрибутивы с Астериском которые используют FreePBX, например Elastix или Trixbox.
Итак, для того что бы астериск мог совершить звонок вне нашей IP-АТС он должен знать какой номер (в каком формате) по какому транку передать.
Для этого предназначен раздел Исходящая маршрутизация (Outbound Routes), в нём мы можем создать несколько маршрутов в каждом маршруте может быть использовать несколько транков.
Маршруты астериск перебирает по порядку сверху вниз, как только находит совпадение в шаблоне номера использует транки в маршруте, перебирает их так же сверху вниз, если первый маршрут по какой-то причине не сработал (например занят, не работает, какой-то иной сбой) используется второй и так далее по списку.
Учитывая то что маршруты перебираются сверху вниз, первыми по списку лучше пускать более детальные маршруты, например с кодом города, после них пускать маршруты с более общей маской например мобильники, затем уже страну, потому что если сделать наоборот то сработает маршрут страны, но не сработают остальные, впрочем остановимся более подробно на шаблонах (Шаблоны номеров, используемые на этом маршруте Dial Patterns that will use this Route).
В шаблоне есть поля: приставка(prepend), префикс (prefix) и совпадение шаблона (match pattern), раньше были не поля, в какой-то момент времени использовалась запись как в конфиг файлах астериска
prepend+prefix|match_pattern
т.е. после приставки идёт плюс (+), за префиксом идёт |
Приставка
Приставка это любые цифры которые Астериск подставит перед номером, префикс это цифры которые астериск уберёт из номера, шаблон это шаблон. В шаблоне мы можем использовать следующие обозначения: X – одна цифра от 0 до 9, Z – одна цифра от 1 до 9, N – одна цифра от 2 до 9, ну и конечно мы можем использовать и сами цифры.
Например, если нам нужен шаблон для номеров от 100 до 199 мы можем использовать 1XX.
Если абонент (пользователь) набирает номер 101 то он попадает под шаблон 1ХХ, что ещё можно сделать.
Например у вас в городе используется 7-мизначная нумерация, а транк провайдера пропускает номера только вместе с кодом города, пусть код города будет 861, а номер надо набирать в международном формате, т.е.
нам надо что бы абонент набрал номер 2999831, а астериск бы позвонил по номеру 78612999831, для этого будем использовать приставку (prepend) в шаблоне. итак приставка будет 7861, а шаблон XXXXXXX. Тут приложу картинку что бы было понятно.
это же в формате конфиг файла
7861+XXXXXXX
Префикс
Так работает приставка, зачем же тогда нужен префикс? Ну давайте рассмотрим пример с нелюбимой для меня 9кой, раньше на старых аналоговых АТС для того что бы выйти на городскую линию надо было дополнительно набирать 9ку перед номером, в IP-АТС Asterisk такой ерунды делать не надо, но многие по привычке (пользователей) добавляют этот архаизм. Итак, пример такой, абонент набирает 92999831, а нам на выходе надо получить 78612999831. В качестве приставки (prepend) мы используем код города и код страны 7861, в качестве префикса (prefix) используем 9, а шаблон номера будет 7 любых цифр – XXXXXXX, для наглядности снова картинка.
Источник: https://trustore.ru/article/asterisk/shablony-i-pravila-nabora-nomera-v-freepbx-distro-asterisk-elastix.html
Базовая настройка Asterisk
В этой записке описана базовая настройка программной IP АТС Asterisk. Все только самое важное, ничего лишнего. По мере необходимости, вы можете дополнять конфигурационные файлы внося свои корректировки, в случае, если базового функционала стало не хватать.
1. Базовые возможности обычной мини АТС
Под базовыми возможностями я подразумеваю следующее:
-
Как прописывать внутренние номера, допустим офис менеджеру номер 100, директору номер 101, маркетологу номер 102, бухгалтеру номер 200 и т.д.
-
Как подключить городской номер чтобы осуществлять исходящие звонки в город и на мобильные телефоны. У нас в Казахстане популярен способ подключения по протоколу SIP.
Государственный провайдер и сотовые операторы без проблем подключают абонента по SIP. Мы будем использовать такую линию на нашем Asterisk, чтобы наши внутренние пользователи могли звонить в город и на сотовые номера.
Здесь только подключение номера, настройка исходящих вызовов будет описано в последнем пункте этой записки.
-
Как настроить распределения входящих звонков, чтобы позвонивший на городской номер попал на внутренний номер секретарши.
-
Как сделать настройку для исходящих звонков. Чтобы внутренние номера, могли звонить в город, на сотовые и другие номера.
2. Основные файлы для достижения результата
Будем использовать только два файла:
-
/etc/asterisk/sip.conf – описания для внутренних и городских номеров
-
/etc/asterisk/extensions.conf – описания логики работы Asterisk, прием звонков, исходящие вызовы.
3. Настройка внутренних номеров
Подключение SIP телефонов (учетные записи, внутренние номера):
# vi /etc/asterisk/sip.conf
Пишем основные настройки:
Описание:
- [general] – секция c головными настройками
- bindport=5060 – SIP порт по которому будет работать Asterisk, по умолчанию используется SIP порт 5060
- alwaysauthreject=yes – не выдаем детального сообщения, причины почему нет подключения.
Прописываем первый номер 100 (учетную запись).
# vi /etc/asterisk/sip.conf
Описание:
- [100] – имя учетной записи (может содержать символы)
- type=friend – указывает что устройство может совершать и принимать звонки
- host=dynamic – указывает что IP адрес у телефона динамический т.е. по DHCP
- context=phones – указывает контекст в котором данный номер работает.
- secret=password – указываем пароль к учетке с номером 100
- deny=0.0.0.0/0.0.0.0 – запрещаем подключение c любого IP
- permit=10.168.50.0/24 – разрешаем подключение к серверу только определенному диапазону сети (авторизация вкл. только для лок. сети)
- callerid=”Секретарша” – информация для Сaller*Id. То есть сам внут. номер 100
4. Подключение к провайдеру по протоколу SIP
Подключаем Asterisk к SIP провайдеру
# vi /etc/asterisk/sip.conf
Дописываем в секцию [general] регистрацию на провайдерском сервере:
- [general] – основная секция
- login1 – логин учетной записи с городским номером
- password – пароль от этой учетной записи
- sip.telecom.kz – провайдерский сервер
- 2755055 – здесь мы определили, что входящие звонки из города в asterisk должны приходить на внутреннею метку (номер) 2755055, которая будет описана в файле extensions.conf, если этого не сделать, все звонки будут приходит на служебный номер “s” или на шаблон .X_ контекста [incoming_calls]. Контекст с именем [incoming_calls], мы опишем в секции авторизации на провайдерском сервере [sip-provaider]. Эти настройки описаны внизу записки. Кстати, метка 2755055 меняет формирование поля Contact в SIP пакетах.
- ~3600 – таймаут регистрации
Стоит написать что, не всегда нужна регистрация на провайдерском сервере, некоторым операторам хватает только авторизации учетной записи без регистрации, например сотовый номер от мобильного оператора KCELL, не нуждается в регистрации. Важный момент – операторы могут делать привязку учетной записи с номером к IP адресу вашего сервера.
5. Входящие звонки
Принимаем входящие звонки на внутренний номер.
Сперва делаем тест с проигрыванием звукового сообщения “Hello World”.
# vi /etc/asterisk/extensions.conf
Описание:
- [general] – основная секция
- [globals] – секция для описания глобальных переменных
- [default] – секция с стандартным контекстом – по умолчанию сюда попадают все внешние звонки
- exten => _X.,1,Verbose(1,Получен звонок с внешней линии) – передаем произвольный текст в детальный вывод. Это требуется для отладки работы Asterisk. Это строка будет в логах Asterisk.
- exten => _X.,n,Answer() – поднимаем трубку
- exten => _X.,n,Playback(hello-world) – проигрываем звуковой файл “Hello World”
- exten => _X.,n,Hangup() – ложим трубку
Теперь соединим внешнего абонента с внутренним номером 100:
Описание:
- [general] – основная секция
- [globals] – глобальная секция
- [default] – секция с стандартным контекстом, по умолчанию сюда попадают все внешние звонки
- exten => _X.,1,Verbose(1,Получен звонок с внешней линии) – передаем произвольный текст в детальный вывод
- exten => _X.,n,Answer() – поднимаем трубку
- exten => _X.,n,Dial(SIP/100) – переводим вызов на внутреннего абонента с номером 100
- exten => _X.,n,Hangup() – ложим трубку
В этом примере входящие звонки поступают в контекст по умолчанию с именем [default], чтобы исправить это, можно указать другой контекст, например [incoming_calls], что мы и сделаем в примере внизу.
Настраиваем входящие и исходящие звонки через городскую телефонную линию с номером 2755-055
Редактируем /etc/asterisk/sip.conf
Добавляем настройки – секция авторизации на провайдерском сервере:
По сути с помощью строчки регистрации и секции авторизации, мы подключаем Asterisk к провайдеру вроде клиентского софтфона, например X-Lite. Если вы поменяете пароль к провайдерской учетной записи с городским номером, не забывайте менять пароль в строчке регистрации и в секции авторизации.
Описание секции авторизации:
- [sip-provaider] – секция описывающая настройки авторизации
- type=peer – указываем что при получении INVITE(вызов) будем сравнивать не имя поставщика сервисов а его IP адрес
- host=sip.telecom.kz – указываем от кого мы должны получать/отправлять INVITE
- fromuser=2755055 – имя пользователя для аутентификации
- defaultuser=2755055
- outboundproxy=sip.telecom.kz:5061 – сервер провайдера
- port=5060 – sip порт
- secret=password
- context=incoming_calls – задаем контекст, на него будем принимать звонки.
- dtmfmode=rfc2833 – метод генерации тонального DTFM-кода
- disallow=all – запрещаем все кодеки
- allow=gsm – разрешаем кодек GSM
- allow=ulaw – разрешаем кодек g711
- insecure=invite
Здесь, мы указали очень важный момент, все поступающие звонки по городскому номеру 2755055 будут приходить в контекст “incoming_calls” на метку 2755055 которую мы указали ранее в строке регистрации на провайдерском сервере файла sip.conf:
После описания этого номера в контекст “incoming_calls”, мы можем направить внешний звонок нашей любимой секретарше или проиграть звуковой файл “Пипец, шоб все было чики-пуки”.
И еще, здесь есть очень важный момент, мы указали имя для секции авторизации как “sip-provaider”, в дальнейшем когда нам потребуется сделать исходящие звонки с наших внутренних номеров в город, понадобиться использовать имя секции авторизации “sip-provaider” для осуществления звонков во внешнею сеть города, мобильных и т.д., смотрите пример исходящего звонка – Dial(SIP/sip-provaider/${EXTEN})).
Редактируем /etc/asterisk/extensions.conf
- [general] – головная секция
- [globals] – глобальная секция для переменных
- [default] – секция по умолчанию
- [incoming_calls] – контекст секция с входящими вызовами
- exten => _X.,1,Verbose(Получен вызов с внешней линии) – протоколируем что получен вызов
- exten => _X.,n,Dial(SIP/100) – принимаем вызов на номер 100
6. Исходящие звонки
Теперь сделаем исходящею связь:
# vi /etc/asterisk/extensions.conf
Описание:
- [outgoing_calls] – контекст для исходящих звонков
- exten => _X.,1,Verbose(Совершается исходящий вызов) – протоколируем исходящий вызов
- exten => _X.,n,Dial(SIP/sip-provaider/${EXTEN}) – соединяемся с провайдерским сервером и набираем номер.
- ${EXTEN} – это набранный номер внутреннего пользователя
Так вот, мы ранее дали имя секции авторизации вроде “sip-provaider”, теперь чтобы осуществить исходящий звонок, пишем команду соединить Dial и указываем имя секции авторизации + набранный номер на внут. телефоне в виде переменной ${exten}.
Теперь надо включить контекст [outgoing_calls] в конекст [phones] файла /etc/asterisk/extensions.conf
Источники:
Видео курс: Asterisk Made Easy: Learn to Install Asterisk and Linux
Взаимодействие клиентов SIP. Часть 1
Источник: https://yvision.kz/post/678088