Разработчик и интегратор VoIP решений
Работаем по всей России и СНГ
Заказать звонок

Техническая база знаний

SIP

Параметры протокола

НаименованиеПо-умолчаниюОписание
RTP Timeout60Устанавливает ограничение по времени ожидания активности потока RTP в секундах. Если нет активности потока RTP (т.е. не передаются пакеты в течении указанного количества секунд), соединение разрывается.
Timer B32000Устанавливает ограничение по времени ожидания ответа от вызываемой стороны при инициализации вызова (INVITE) в миллисекундах. Если не был получен ответ на отправленный пакет INVITE в течении указанного времени, попытка вызова узла прекращается, канал имеет статус CONGESTION.
FromuserasteriskУказывает значение, которое будет подставляться в качестве "номера" абонента А (вызывающего), при вызове удалённого узла.
DefaultuserasteriskУказывает имя пользователя, которое будет использоваться при ответе сервером телефонии на запрос авторизации от оператора связи.

Параметры канала связи

Если параметр имеет пустое значение, то его не нужно писать в конфигурационный файл.

НаименованиеЗначенияОписание

[name]

не может быть пустым

Имя канала. Также используется для аутентификации входящих запросов, соответствует имени пользователя при проверке аутентификации удалённого узла.

type

"peer", "friend", не может быть пустым

Тип подключаемого канала.Устанавливается в зависимости от значения параметра `insecure`. В частности, если параметр `insecure` принимает значение "no", то данный параметр принимает значение "friend". В других случаях данный параметр принимает значение "peer".

host

 

"Домен", или адрес удалённого SIP узла, для которого создаётся канал, задаётся пользователем. Не может быть пустым.

port

 

Порт, на котором удалённый узел слушает входящие подключения. Не может быть пустым. Может быть в диапазоне 1000 - 65536

defaultuser

 

"Имя пользователя", используемое для аутентификации на удалённом узле. Задаётся пользователем. Может быть пустым.

secret

 

"Пароль" используемый для аутентификации на удалённом узле. Задаётся пользователем. Может быть пустым.

remotesecret

 

Пароль для регистрации на удалённом узле. Принимает значение равное значению параметра secret. Устанавливается только в том случае, если пользователь поставил галку "Регистрироваться в домене".

callbackextension

 

Номер, куда должны поступать входящие вызовы. Задаётся пользователем. Устанавливается только в том случае, если пользователь поставил галку "Регистрироваться в домене".

insecure

 

Параметр проверки аутентификации входящего запроса на подключение. Устанавливается пользователем. Может принимать значение "port,invite", "no", "port", "invite". Автоматически принимает значение "no", если параметру host устанавлно значенеи "dynamic"

fromuser

 

Подстановка "номера" в адресе вызывающего при исходящем вызове. Задаётся пользователем. Может быть пустым.

fromdomain

 

подстановка "домена" в адресе вызывающего при исходящем вызове. Задаётся пользователем. Может быть пустым.

disallow

 

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

allow

 

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

dtmfmode

 

Метод сигнализации DTMF, не может быть пустым, задаётся пользователем.

context

 

Часть номерного плана (контекст), в котором обрабатываются входящие вызовы по данному каналу. Задаётся пользователем, не может быть пустым.

nat

"yes", "no", "force_rport", "comedia", "auto_force_rport", "auto_comedia", "force_rport,comedia"

Параметр NAT, указывает, является ли соединение между узлами за NAT. Устанавливается пользователем, не может быть пустым.

  • no - не выполнять никакой специальной обработки NAT, кроме той что указана в RFC 3581.
  • force_rport - даже если ни одного параметра rport не было указано, действовать, так, как если бы он был.
  • comedia - отправлять RTP пакеты обратно к порту с которого они были получены, игнорируя требуемый порт в SDP заголовке.
  • auto_force_rport - если Asterisk сможет определить, что устройство находится за NAT, установить опцию force_rport. Значение по умолчанию, если не указана опция nat.
  • auto_comedia - если Asterisk сможет определить, что устройство находится за NAT, установить опцию comedia.
  • force_rport,comedia - опция заменяющая nat=yes в более новых версия Asterisk.

t38pt_udptl

"yes", "no"

Параметр "Факсы в Т.38", принимает значения yes или no. Устанавливается пользователем, не может быть пустым.

Отладка в asterisk

Команда CLIНазначение
sip set debug ip 192.168.1.5

Включить в CLI отладку по SIP протоколу для IP 192.168.1.5.

После выполнения этой команды в CLI будут отображаться пакеты, которыми обменивается твой сервер с 192.168.1.5 по SIP протоколу (на уровне приложения, конечно, а не ядра системы, т.е. те пакеты, которые были обработаны сервисом asterisk).

sip set debug offОтключить отладку по протоколу SIP.

 

При входящем звонке в CLI отображается множество информации, простыня будет начинаться со строк:

<--- SIP read from UDP:192.168.1.5:5060 --->
INVITE sip:198@192.168.1.79:5060 SIP/2.0

Сообщение "SIP read from" пишет asterisk о том, что получил входящий пакет от 192.168.1.5 Начиная со строки INVITE идёт описание самого полученного пакета.

Пакет INVITE говорит о том, что инициируется звонок. По заголовкам можно понять откуда и куда (From:, To:) - всё довольно читаемо, очень схоже с HTTP заголовками.  

Всё что идёт после строк пакета INVITE

Content-Type: application/sdp
Content-Length: 261

называется SDP информацией (session description protocol), тут отображены сведения куда и на какой порт нужно слать голосовой трафик, по каким кодекам, какой длительностью голос в одном пакете и т.п. Нам пока это не интересно.

Итересно то, что после пакета INVITE, который заканчивается строкой <-------------> идёт процесс парсинга астериском полученных данных. В частности, сразу после окончания INVITE пакета Asterisk пишет, какому описанному каналу он определил этот входящий вызов

Found peer 'trunk1' for '104' from 192.168.1.5:5060

А затем и пишет то, что он будет искать и где по входящему звонку:

Looking for 198 in incoming (domain 192.168.1.79)

 

Нужна строка "Found peer", остальное не важно.

Задаётся пользователем, не может быть пустым.