Пример настройки подключения Asterisk PJSIP к Zadarma.
Данные указанные в примере:
- 111111 Ваш sip-номер из личного кабинета.
- Password Ваш пароль от sip-номера, из раздела "Настройки-Подключение по SIP" личного кабинета.
- 1234-100 - Ваш внутренний номер АТС из личного кабинета
- Password - Ваш пароль внутреннего номера АТС личного кабинета
- 101 Внутренний номер Asterisk к которому подключается софтфон/ip-телефон для приема входящих и совершения исходящих звонков.
Стандартный пример настройки
Исходящие звонки с внутреннего номера 101 направляются в транк 111111 Входящие звонки принимаются по регистрации и направляются на внутренний номер 101
Исходящие звонки с внутреннего номера 101 направляются в транк 1234-100 Входящие звонки принимаются по регистрации и направляются на внутренний номер 101
Редактируем pjsip.conf
[udp-transport] type=transport protocol=udp bind=0.0.0.0 [111111] type=registration transport=udp-transport outbound_auth=111111_auth server_uri=sip:sip.zadarma.com client_uri=sip:111111@sip.zadarma.com retry_interval=60 expiration=120 contact_user=111111 [111111_auth] type=auth auth_type=userpass password=Password username=111111 [111111] type=aor contact=sip:sip.zadarma.com [111111] type=endpoint transport=udp-transport context=zadarma-in disallow=all allow=alaw allow=ulaw outbound_auth=111111_auth aors=111111 from_user=111111 from_domain=sip.zadarma.com direct_media=no [111111] type=identify endpoint=111111 match=sip.zadarma.com
[udp-transport] type=transport protocol=udp bind=0.0.0.0 [1234-100] type=registration transport=udp-transport outbound_auth=1234-100_auth server_uri=sip:pbx.zadarma.com client_uri=sip:1234-100@pbx.zadarma.com retry_interval=60 expiration=120 contact_user=1234-100 [1234-100_auth] type=auth auth_type=userpass password=Password username=1234-100 [1234-100] type=aor contact=sip:pbx.zadarma.com [1234-100] type=endpoint transport=udp-transport context=zadarma-in disallow=all allow=alaw allow=ulaw outbound_auth=1234-100_auth aors=1234-100 from_user=1234-100 from_domain=pbx.zadarma.com direct_media=no [1234-100] type=identify endpoint=1234-100 match=pbx.zadarma.com
Внутренний номер 101 к которому будет подключаться софтфон/ip-телефон для приема входящих и совершения исходящих звонков.
[101]
type=endpoint
transport=udp-transport
context=zadarma-out
disallow=all
allow=alaw
allow=ulaw
auth=101
aors=101
[101]
type=auth
auth_type=userpass
password=101
username=101
[101]
type=aor
max_contacts=10
Входящая и исходящая маршрутизация настраивается в файле extensions.conf
[zadarma-in] exten => 111111,1, Dial(PJSIP/101) ; все входящие звонки с транка 111111 направлены на внутренний номер 101 [zadarma-out] exten => _XXX,1,Dial(PJSIP/${EXTEN}) ; звонки на трехзначные внутренние номера aстериска exten => _XXX.,1,Dial(PJSIP/${EXTEN}@111111) ; звонки на номера в которых четрые и более цифр через транк 111111
[zadarma-in] exten => 1234-100,1, Dial(PJSIP/101) ; все входящие звонки с транка 1234-100 направлены на внутренний номер 101 [zadarma-out] exten => _XXX,1,Dial(PJSIP/${EXTEN}) ; звонки на трехзначные внутренние номера aстериска exten => _XXX.,1,Dial(PJSIP/${EXTEN}@1234-100) ; звонки на номера в которых четрые и более цифр через транк 1234-100
Стандартная настройка завершена.
P-Asserted-Identity (для опытных пользователей).
При исходящих звонках вы можете использовать SIP заголовок P-Asserted-Identity для выбора Callerid из списка подключенных в сервисе номеров.
Номер из заголовка P-Asserted-Identity будет использоваться в приоритете. Если заголовок не передан или установлен неправильный/неподключенный номер, будет использован заданный по умолчанию номер.
[zadarma-out]
exten => _XXX.,1,Set(_SET_PAI=)
exten => _XXX.,n,Dial(PJSIP/${EXTEN}@111111,,b(add_header_pai^add^1))
[add_header_pai]
exten => add,1,Set(PJSIP_HEADER(add,P-Asserted-Identity)=${SET_PAI})
exten => add,n,Return()
Если у Вас подключено несколько прямых номеров, для удобства каждому номеру можно назначить "имя" например manchester и london и настроить входящую маршрутизацию основанную на этом параметре. "Имя" виртуального номера передается в параметре CALLERID(name).
В следующем примере, звонки с номера manchester направлены на внутренний номер 101, звонки с номера london направлены на внутренний номер 102, а все другие звонки asterisk будет отклонять сигналом "Занято"
[zadarma-in]
exten => _X.,1,GotoIf($["${CALLERID(name)}" = "manchester"]?2:3)
exten => _X.,2,Dial(PJSIP/101)
exten => _X.,3,GotoIf($["${CALLERID(name)}" = "london"]?4:5)
exten => _X.,4,Dial(PJSIP/102)
exten => _X.,5,Busy
Ваш виртуальный номер, на который поступил звонок, передаётся в хедере CALLED_DID Вы можете настроить входящую маршрутизацию основанную на этом параметре.
В следующем примере, звонки с номера 442045770077 направлены на внутренний номер 101, звонки с номера 442037691880 направлены на внутренний номер 102, а все другие звонки asterisk будет отклонять сигналом "Занято"
[zadarma-in]
exten => _X.,1,GotoIf($["${PJSIP_HEADER(read,CALLED_DID)}" = "442045770077"]?2:3)
exten => _X.,2,Dial(PJSIP/101)
exten => _X.,3,GotoIf($["${PJSIP_HEADER(read,CALLED_DID)}" = "442037691880"]?4:5)
exten => _X.,4,Dial(PJSIP/102)
exten => _X.,5,Busy
Настройка завершена.
Пример настройки №2 (SIP URI)
Если сервер с Asterisk находится на "белом" IP адресе (Не за роутером, а например в дата-центре) входящие звонки можно принимать без регистрации по схеме SIP URI. Данные указанные в примере:
- 15555555555 - Ваш виртуальный номер подключенный в Zadarma.
- 2.20.190.41 - IP адрес Вашего сервера с Asterisk.
В личном кабинете, в разделе "Настройки/Виртуальный номер" направьте звонки с виртуального номера на внешний сервер (SIP URI) в формате 15555555555@2.20.190.41
Редактируем pjsip.conf
[15555555555]
type=aor
contact=sip:sip.zadarma.com
[15555555555]
type=endpoint
transport=udp-transport
context=zadarma-in
disallow=all
allow=alaw
allow=ulaw
aors=15555555555
direct_media=no
[15555555555]
type=identify
endpoint=15555555555
match=sipurifr.zadarma.com
match=sipde.zadarma.com
match=sipuriny.zadarma.com
Входящий маршрут в файле extensions.conf
[zadarma-in]
exten => 15555555555,1, Dial(PJSIP/101)
Настройка завершена.
Включение шифрования
1.В файле pjsip.conf добавляем следующее
[transport-z]
type=transport
protocol=tls
verify_server=no
bind=0.0.0.0:7065
method=tlsv1_2
2.В server_uri после адреса сервера нужно добавить :5061
Пример настройки при использовании авторизации по IP адресу.