Asterisk настройка исходящих звонков. Корпоративная телефония часть №5

Asterisk поддерживает несколько сигнальных протоколов передачи информации: H.323, SIP, IAX. Они используются для установления соединения, чаще всего применяется SIP. Голос передается обычно по RTP. Представление об этих протоколах нужно иметь потому, что при настройке исходящих звонков в диалплане Asterisk указывается имя протокола.

 

 

Данный материал является логическим продолжением цикла статей по настройке офисной телефонии:

Установка Asterisk из исходников. Настройка корпоративной телефонии — часть №1
Asterisk настройка сети. Корпоративная телефония часть №2
Asterisk добавление пользователей. Корпоративная телефония часть №3
Asterisk добавление пользователей. Корпоративная телефония часть №4

 
 
 

Исходящий звонок Asterisk — базовая настройка

Настройку будем производить в /etc/asterisk/extensions.conf и /etc/asterisk/sip.conf

 

Сначала посмотрим информацию по приложению которое будем использовать

Переходим в консоль сервера телефонии

asterisk -rvvv

 

Выводим все приложения

core show applications

 

Теперь из списка выбираем dial и просматриваем информацию по нему

core show applications like dial

 

core show applications description dial

 

Информация при этом соотносится с используемой версией пакета

exit

 

Правим extensions.conf настроенный ранее

mcedit /etc/asterisk/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

 

asterisk -rvvv

 

Перезапускаем диалплан

dialplan reload

 

Сейчас можно звонить на extention 100 (т.е. авторизовавшись в программном телефоне или используя аппаратный телефон звонить на 100), при звонке в консоли Asterisk видно, что вызов проходит, но после окончания звонка можно увидеть такую ошибку:

«unable to reopen master file /var/log/asterisk//cdr-csv//Master:csv» :Permistion denied

 

Она вызвана существованием некорреткных прав и легко исправляется

touch /var/log/asterisk//cdr-csv//Master.csv

 

chown asterisk /var/log/asterisk//cdr-csv//Master.csv

 

asterisk -rvvv

 

Сейчас исходящий звонок должен проходить без ошибок.

 

Добавляем аналогичные строки в конфигурационный файл для второго пользователя

 

mcedit /etc/asterisk/extensions.conf

 

[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, что действительно для всех номеров кроме первого (который всегда указывается) — это является хорошей практикой и исключает возможность неправильного выполнения программы, например, при перестановке строк.

 

После перезапуска диалплана пользователи могут беспрепятственно звонить друг другу.

 

Проигрывание звукового файла при звонке

Добавим проигрывание определенного звукового файла при звонке на одно из расширений

mcedit /etc/asterisk/extensions.conf

 

[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

asterisk -rvvv

 

dialplan reload

 

Теперь при звонке на 200 сначала будет проигрываться один из стандартных звуковых фрагментов, потом будет совершаться вызов на user2.

 

Настроим возможность звонить во внешний мир

Строк с playback из предыдущего примера здесь нет, в остальном диалплан тот же.

 

mcedit /etc/asterisk/extentions.conf

[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)

Исходящий звонок Asterisk
Вводим новое расширение outgoing, а при звонках на 8888 вызовы будут перенаправляться пользователю outside из sip.conf — обычно это провайдер телефонии.

Теперь если user1 или user2 будут набирать 8888 телефон пользователя outside будет звонить.

 

Если мы хотим звонить не только на номер 8888 (а это обычно так, то используем регулярное выражение)

 

mcedit /etc/asterisk/extentions.conf

 

[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-ом ли клиент и сервер и скорректировать конфигурацию.