Пример настроек для Asterisk — различия между версиями

Материал из wiki.sipnet.ru
Перейти к: навигация, поиск
м
м (Настройки транка c использованием chan_sip)
Строка 42: Строка 42:
  
 
''allow'' - дополнительно можно указать и другие кодеки из числа поддерживаемых сервером
 
''allow'' - дополнительно можно указать и другие кодеки из числа поддерживаемых сервером
 
  
 +
 +
Можно использовать любой транспорт - UDP (по умолчанию), TCP, TLS. Например:
 +
transport = tcp
 +
 +
Также можно использовать TLS с или без SRTP:
 +
transport = tls
 +
port = 5061
 +
encryption = yes
  
 
Некоторые важные параметры в файле sip.conf:  
 
Некоторые важные параметры в файле sip.conf:  

Версия 12:56, 9 августа 2019

Приглашаем принять участие в тестировании виртуальной АТС от SIPNET!

Пример настроек для Asterisk версии 1.6 и далее

Данный пример подходит для сервера, подключенного к Интернет как через NAT, так и напрямую, а также через VPN

При использовании разнообразных надстроек вроде FreePBX необходимо учитывать специфику этих продуктов - вводить данные из примера в правильные поля, использовать правильные имена контекстов и т.д. и т.п.

Обратите внимание

  • если по какой-то причине нужно настроить несколько транков между Asterisk и SIPNET, например, с использованием дочерних счетов, нет никакой необходимости делать SIP-регистрацию всех этих транков!
  • если нужно использовать разные номера АОН при исходящих звонках, настраивать для этого несколько транков не нужно, достаточно одного
  • если нужно принимать входящие звонки на несколько SIP ID, достаточно одного транка и одной SIP-регистрации, все дополнительные SIP ID достаточно переадресовать на один главный, для которого сделана SIP-регистрация, входящие вызовы можно маршрутизировать исходя из значения SIP-заголовка 'To', в котором передается вызываемый SIP ID (пример - ниже)
  • если нужно принимать входящие звонки через несколько виртуальных номеров, также достаточно одного транка и одной SIP-регистрации, входящие вызовы можно маршрутизировать исходя из значения SIP-заголовка 'Remote-Party-Id', в котором передается вызываемый номер телефона. За данное действие отвечает параметр context = from-trunk-rpid который необходимо указать в настройках транка (пример - ниже)
  • dialplan должен быть настроен так, чтобы при звонках в Телефонную Сеть вызываемый номер отправлялся в сторону SIPNET в правильном формате


Настройки транка c использованием chan_sip

[sipnet]
remotesecret = {пароль}
defaultuser = {SIP ID}
host = sipnet.ru
type = peer
context = from-trunk
insecure = invite
callbackextension = s
fromuser = {SIP ID}
fromdomain = sipnet.ru
disallow = all
allow = alaw&ulaw
nat = no
directmedia = no
dtmfmode = rfc2833

Комментарии к некоторым параметрам:

context - контекст с указанным именем должен существовать в dialplan’е (файл extensions.conf)

callbackextension - вместо 's' можно указать свой SIP ID или внутренний номер, на который нужно принимать вызовы; если не нужно принимать входящие вызовы, то использовать этот параметр не требуется; использование директивы register более не требуется

fromuser - не использовать, если планируется динамически передавать АОН при каждом звонке в поле 'From:'; следует использовать, если передавать свой номер в другом заголовке, например, "P-Asserted-Identity:'

allow - дополнительно можно указать и другие кодеки из числа поддерживаемых сервером


Можно использовать любой транспорт - UDP (по умолчанию), TCP, TLS. Например:

transport = tcp

Также можно использовать TLS с или без SRTP:

transport = tls
port = 5061
encryption = yes

Некоторые важные параметры в файле sip.conf:

[general]
;
localnet = 192.168.1.0/255.255.255.0; ваша внутренняя подсеть
;
; при работе за NAT можно использовать externip или externhost (что-то одно)
; ни то, ни другое не является обязательным и вообще может мешать
; Для работы с сервером SIPNET подмена внутреннего адреса на внешний не нужна!
;
;externip =  
; ваш внешний IP-адрес, если он является постоянным
;
;externhost =  
; ваше доменное имя вида host.domain.tld, если вы пользуетесь динамическим DNS
;
;externrefresh = 60 
; параметр актуален только если используется externip или externhost
;
nat = no


Пример получения информации о вызываемом SIP ID
(в FreePBX для этих целей есть готовый контекст "from-pstn-toheader")

В настройках транка:
callbackextension = s
context = from-trunk-toheader

В настройках dialplan'а:
[from-trunk-toheader]
exten =>  s,1,gotoif($["${CHANNEL(channeltype)}"="SIP"]?SIP)
exten =>  s,n,gotoif($["${CHANNEL(channeltype)}"="PJSIP"]?PJSIP)
exten =>  s,n,goto(from-trunk,${EXTEN},1))
exten =>  s,n(SIP),Goto(from-trunk,${CUT(CUT(SIP_HEADER(To),@,1),:,2)},1)
exten =>  s,n(PJSIP),Goto(from-trunk,${CUT(CUT(PJSIP_HEADER(read,To),@,1),:,2)},1)


Пример получения информации о вызываемом телефонном номере (DID)
(в FreePBX настройки можно сделать в файле /etc/asterisk/extensions_custom.conf)

В настройках транка:
callbackextension = s
context = from-trunk-rpid
 
В настройках dialplan'а:
[from-trunk-rpid]
exten =>  s,1,gotoif($["${CHANNEL(channeltype)}"="SIP"]?SIP)
exten =>  s,n,gotoif($["${CHANNEL(channeltype)}"="PJSIP"]?PJSIP)
exten =>  s,n,goto(from-trunk,${EXTEN},1))
exten =>  s,n(SIP),Goto(from-trunk,${CUT(CUT(SIP_HEADER(Remote-Party-Id,2),@,1),:,2)},1)
exten =>  s,n(PJSIP),Goto(from-trunk,${CUT(CUT(PJSIP_HEADER(read,Remote-Party-Id,2),@,1),:,2)},1)

В обоих примерах после извлечения нужной информации вызов вернется в контекст с именем 'from-trunk', который должен существовать в dialplan’е.