Asterisk PJSIP: инструкция по настройке
Стандартная настройка
Для настройки подключения вам понадобятся данные из личного кабинета Novofon (Телефония → Пользователи АТС → Имя пользователя → Вкладка «ВАТС»)
Идентификационное имя: берем Логин из личного
кабинета.
Имя пользователя: тот же самый номер.
Пароль: Пароль, который находится на той же странице, что и логин, строчкой ниже.
SIP-сервер: sip.novofon.ru
Механизм работы заключается в следующем: исходящие звонки с номера 101 направляются в транк 1234567. Входящие же звонки принимаются по регистрации и направляются на внутренний номер 101.
Соответствующим образом отредактируем pjsip.conf
pjsip.conf:
[udp-transport]
type=transport
protocol=udp
bind=0.0.0.0
[1234567]
type=registration
transport=udp-transport
outbound_auth=1234567_auth
server_uri=sip:pbx.novofon.com
client_uri=sip:1234567@sip.novofon.ru
retry_interval=60
expiration=120
contact_user=1234567
[1234567_auth]
type=auth
auth_type=userpass
password=Password
username=1234567
[1234567]
type=aor
contact=sip:sip.novofon.ru
[1234567]
type=endpoint
transport=udp-transport
context=novofon-in
disallow=all
allow=alaw
allow=ulaw
outbound_auth=1234567_auth
aors=1234567
from_user=1234567
from_domain=sip.novofon.ru
direct_media=no
[1234567]
type=identify
endpoint=1234567
match=sip.novofon.ru
Теперь необходимо настроить внутренний номер 101, к которому будет подключаться софтфон (или ip-телефон):
pjsip.conf:
[101]
type=endpoint
transport=udp-transport
context=novofon-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
extensions.conf:
[novofon-in]
exten => 1234567,1, Dial(PJSIP/101) ; все входящие звонки с транка 1234567 направлены на внутренний номер 101
[novofon-out]
exten => _XXX,1,Dial(PJSIP/${EXTEN}) ; звонки на трехзначные внутренние номера aстериска
exten => _XXX.,1,Dial(PJSIP/${EXTEN}@1234567) ; звонки на номера в которых четыре и более цифр через транк 1234567
На этом стандартная настройка завершена. Но при необходимости вы можете включить шифрование.
Пример настройки по схеме SIP-URI.
Этот метод настройки подходит в случае, при котором ваш сервер с Asterisk имеет “белый” IP-адрес.
В качестве примера ниже:
- 711111111111 – ваш виртуальный номер в сервисе Novofon;
- 1.11.111.11 – IP-адрес вашего сервера с Asterisk.
Для начала необходимо направить все звонки с виртуального номера на внешний сервер. Данные необходимо указать в формате 711111111111@1.11.111.11. Сделать это можно в личном кабинете, в разделе “Настройки”, страница “Виртуальный номер”.
Теперь необходимо отредактировать файл pjsip.con:
pjsip.conf
[711111111111]
type=aor
contact=sip:sip.novofon.com
[711111111111]
type=endpoint
transport=udp-transport
context=novofon-in
disallow=all
allow=alaw
allow=ulaw
aors=711111111111
direct_media=no
[711111111111]
type=identify
endpoint=711111111111
match=sip.novofon.ru
Входящий маршрут задается в файле extensions.con:
extensions.conf
[novofon-in]
exten => 711111111111,1, Dial(PJSIP/101)
Настройка завершена.
Назначение имени номеру.
Если в работе вы используете несколько номеров, то можете каждому задать свое имя и настроить входящую маршрутизацию по этому параметру.
Эта информация передается в параметре CALLERID(name). Предположим, что у вас два номера и вы дали им имена “moscow” и “saintpetersburg”. И в первом случае вы хотите направлять все вызовы на внутренний номер 101, а во втором на 102. Другие звонки нужно отклонять сигналом “занято”. В таком случае в файле extensions.conf пишем:
extensions.conf
[novofon-in]
exten => _X.,1,GotoIf($["${CALLERID(name)}" = "moscow"]?2:3)
exten => _X.,2,Dial(PJSIP/101)
exten => _X.,3,GotoIf($["${CALLERID(name)}" = "saintpetersburg"]?4:5)
exten => _X.,4,Dial(PJSIP/102)
exten => _X.,5,Busy
Управление маршрутизацией по номеру.
Если вам необходимо звонки с номера направлять на определенный внутренний номер, то вы можете задать его в хедере CALLED_DID. Например, звонки с номера 74951111111 вы хотите принимать на 101, а 78121111111 на 102 (а все прочие отклонять с сигналом “занято”), то вам необходимо указать следующую информацию в файле extensions.con:
[novofon-in]
exten => _X.,1,GotoIf($["${PJSIP_HEADER(read,CALLED_DID)}" = "74951111111"]?2:3)
exten => _X.,2,Dial(PJSIP/101)
exten => _X.,3,GotoIf($["${PJSIP_HEADER(read,CALLED_DID)}" = "78121111111"]?4:5)
exten => _X.,4,Dial(PJSIP/102)
exten => _X.,5,Busy
Включение шифрования.
При необходимости вы можете включить шифрование голосового потока. Для этого в файл pjsip.conf необходимо дописать:
pjsip.conf
[transport-z]
type=transport
protocol=tls
verify_server=no
bind=0.0.0.0:7065
method=tlsv1_2
В server_uri после адреса необходимо добавить порт :5061