Новый Год — не единственный повод любить зиму! Дарим +10% ко всем пополнениям до 17 января 2025 года.
Введите промокод NY2025 в личном кабинете. С наступающими праздниками!

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