Базовая настройка asterisk после установки

Базовая настройка asterisk после установки

Это статья заметка, на случай если мне нужно будет вспомнить, как настроить Asterisk для приема и отправки вызовов. Этой заметки должно хватить для настройки офисной станции на ip pbx Asterisk.  До сих пор у меня не было сильного понятия и опыта, как настроить Asterisk для работы не используя FreePbx, то есть, используя только конфигурационные файлы и консоль. Да и сейчас я только учусь этому. В интернете все настройки сводятся к решению той или иной задачи, но я не увидел статьи способной дать хотя бы базу для минимальной настройки IP станции. Может плохо искал.

Итак, я собрал и установил asterisk в папке /etc/asterisk уйма конфигурационных файлов. Что же дальше ?

Далее, на листке бумаги или в уме начинаю составлять техническое задание. Что нам нужно получить от ИП АТС – в принципе тоже, что и от любой другой станции.

1. Возможность внутренним абонентам  совершать вызовы друг другу

2. Настройка внешних линий с целью получения станцией услуги выхода на городские, междугородние номера и приема входящих звонков

3. Настройка возможности совершать вызовы абонентам на городские и междугородние номера. И принимать вызовы из города.

Вот три основные задачи, которые нужно решить, естественно схема может быть разной. То есть абоненты могут объединяться в группы, внешних операторов связи может быть несколько, входящий вызов может быть отправлен на автоинформатор, очередь, а может быть на то и другое. Схема сервисов и услуг может различаться и усложняться, но три первых условия будут выполняться в любом случае.

Поэтому первое, что мы делаем - создаем внутренних абонентов (peer) в файле sip.conf

Абонент А будет иметь следующие настройки:

[101]
disallow=all
allow=ulaw
allow=alaw
type=friend
username=101
secret=password
qualify=yes
context=101
callerid=101
host=dynamic
call-limit=1
canreinvite=yes
accountcode=101
amaflags=billing
deny=0.0.0.0/0
permit=192.168.0.66

Где:
disallow=all , запрещаем использовать все кодеки кроме G.711
allow=ulaw
allow=alaw

type=friend, этот параметр может принимать три значения:

- peer, этот тип используется для совершения входящих и исходящих вызовов. Для входящих вызовов, никогда не будет проверяться соответствие имени пользователя и пароля, а только соответствие с IP адресом и номером порта источника вызова.

- user запись, которая может только совершать входящие вызовы

- friend запись, которая одновременно и peer и user
username=101
secret=password
Логин и пароль соответственно

qualify=yes

Периодически отправлять SIP сообщение типа Options, для проверки мониторинга доступности устройства для регистрации, полезно использовать при работе через NAT для сохранения значений в таблице трансляций

context=101

Имя контекста, с правилами маршрутизации

callerid=101

АОН нашего номера

host=dynamic
host ip с которого будет происходить регистрация

call-limit=1
(callcounter)
Ограничение одновременных вызов, здесь можно установить количество каналов

canreinvite=yes
(directmedia)

Этот параметр отвечает за процедуру RE-Invite, если no, то все вызовы будут проходить через Asterisk, если yes RTP поток будет отправляться между двумя устройствами минуя Asterisk

accountcode=101
amaflags=billing

CDR запись для поля accountcode будет иметь значение 101
Значение поля AMA flag для исходящих вызовов от этого SIP пользователя

deny=0.0.0.0/0
permit=192.168.0.66
ACL ip, кому разрешим регистрацию

Аналогично для абонента Б:

[102]
disallow=all
allow=ulaw
allow=alaw
type=friend
username=102
secret=password
qualify=yes
context=102
callerid=102
host=dynamic
call-limit=1
canreinvite=yes
accountcode=102
amaflags=billing
deny=0.0.0.0/0
permit=192.168.0.67

Еще часть опций в пире которая может быть полезна:

transport=tcp,udp
Могу работать не только используя udp, требует установки tcpenable=yes в general
rtptimeout=180
rtpholdtimeout=420

Полезно для SIP клиентов, которые не выполняют Hangup при закрытии или отключении. В данном случае RTP сессия сможет сброситься самостоятельно по таймауту, rtpholdtimeout – если вызов на удержании

nat=force_rport,comedia

Если устройство находится за NAT, то  фиксируем работу через rport, отправляем RTP пакеты обратно на IP адрес и порт, с которого они были получены, игнорируя информацию из SDP

defaultexpiry=60
Срок действия регистрации в секундах для входящих и исходящих регистраций

dtmfmode=rfc2833

Как будем работать с DTMF сигналами

1. Итак, задача один, настроить маршрутизацию между sip клиентами 101 и 102, в простейшем варианте решается одной строчкой в файле sip.conf и конфигах по include

[in_out_peer_local]
exten => _XXX,1,Dial(SIP/${EXTEN},20,T)

sip.conf удобно эксплуатировать вот так:

[101]
include => in_out_peer_local

Теперь абонент 101 сможет общаться с абонентом 102 и наоборот 102 сможет позвонить 101

2. Для создания условий, при которых внутренние абоненты смогут выходить на внешние линии, подключим станцию к оператору связи, используя все тот же sip

То есть создадим транк
[provider]
type=peer
host=XX.XXX.XXX.XX
port=5060
fromdomain=ip нашей станции
nat=no
disallow=all
allow=ulaw
allow=alaw
allow=gsm
canreinvite=no
;allow=g722
trustrpid=yes
sendrpid=yes
dtmfmode=rfc2833
qualify=yes
insecure=invite,port
deny=0.0.0.0/0.0.0.0
permit=XX.XXX.XXX.XX/255.255.255.255
context=provide

Настройки транка очень похожи на настройки пира, в принципе это и есть пир, важные опции
fromdomain – устанавливаем fromdomain в sip пакете, чтобы можно было понять, куда вернуть sip пакеты нашей станции
trustrpid=yes
sendrpid=yes

Доверять или нет полученному Remote-Party-ID

insecure=invite,port

Не требуем аутентификацию входящих сообщений INVITE, не проверяем номер порта только соответствие ip адреса

3. Дело за малым,  как только транк активирован, нужно прописать исходящую маршрутизацию для совершения  вызовов абонентам А и Б
Стандарт де факто как бы гласит всегда сначала настраивать исходящую связь

Создаем контекст для совершения исходящих вызовов

Для исходящих вызовов на город

[provider -gorod]
exten => _[2-3]XXXXXX,1,Dial(SIP/ provider /${EXTEN})
exten => _[2-3]XXXXXX,n,Hangup

Для исходящих вызовов на междугородние направления

[provider -mezgorod]
exten => _8.,1,Dial(SIP/ provider /${EXTEN})
exten => _8.,n,Hangup

После того как исходящая связь заработала, настраиваем входящую

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

[provider]
exten => 2466754,1,Dial(SIP/${EXTEN})
exten => 2466754,n,Hangup

Аналогичным образом настраивается любая станция по принципу рассмотренных пунктов

Поделиться:

Добавить комментарий

1 + 6 =
Решите простой математический пример. Например для "два плюс четыре =?" введите "6".