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

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

SIP

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

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

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

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

Наименования Значения Описание
[name] не может быть пустым Тип подключаемого канала.Устанавливается в зависимости от значения параметра `insecure`. В частности, если параметр `insecure` принимает значение "no", то данный параметр принимает значение "friend". В других случаях данный параметр принимает значение "peer".
type "peer", "friend", не может быть пустым "Домен", или адрес удалённого SIP узла, для которого создаётся канал, задаётся пользователем. Не может быть пустым.
host   Порт, на котором удалённый узел слушает входящие подключения. Не может быть пустым. Может быть в диапазоне 1000 - 65536
port   "Имя пользователя", используемое для аутентификации на удалённом узле. Задаётся пользователем. Может быть пустым.
defaultuser   "Пароль" используемый для аутентификации на удалённом узле. Задаётся пользователем. Может быть пустым.
secret   Пароль для регистрации на удалённом узле. Принимает значение равное значению параметра secret. Устанавливается только в том случае, если пользователь поставил галку "Регистрироваться в домене".
remotesecret   Номер, куда должны поступать входящие вызовы. Задаётся пользователем. Устанавливается только в том случае, если пользователь поставил галку "Регистрироваться в домене".
callbackextension   Параметр проверки аутентификации входящего запроса на подключение. Устанавливается пользователем. Может принимать значение "port,invite", "no", "port", "invite". Автоматически принимает значение "no", если параметру host устанавлно значенеи "dynamic".
insecure   Подстановка "номера" в адресе вызывающего при исходящем вызове. Задаётся пользователем. Может быть пустым.
fromuser   Подстановка "номера" в адресе вызывающего при исходящем вызове. Задаётся пользователем. Может быть пустым.
fromdomain   Подстановка "домена" в адресе вызывающего при исходящем вызове. Задаётся пользователем. Может быть пустым.
disallow   Прописывается для всех каналов перед списком разрешенных кодеков.
allow   Строка из списка разрешенных голосовых кодеков, по одной строке для каждого кодека. Значение не может быть пустым.
dtmfmode   Метод сигнализации DTMF, не может быть пустым, задаётся пользователем.
context   Часть номерного плана (контекст), в котором обрабатываются входящие вызовы по данному каналу. Задаётся пользователем, не может быть пустым.
nat "yes", "no", "force_rport", "comedia", "auto_force_rport" Параметр 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", остальное не важно.

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