Настройка SIP Trunk в Asterisk от Укртелеком

Приведу пример настройки SIP Trunk в Asterisk, то есть Asterisk будет в роли SIP клиента.
От провайдера Укртелеком получены данные: номер, пароль и адрес сервера телефонии (sip.ukrtel.net).
SIP номер брался чтобы сделать многоканальность не обычном городском номере, путем переадресации в случае занятости линии.
Настраивать буду на Linux сервере с реальным IP без использования NAT, а также на другом с NAT (во втором случае нужно nat=no изменить на nat=yes и закомментировать canreinvite).

Читать далее «Настройка SIP Trunk в Asterisk от Укртелеком»

Частые сообщения «Remote UNIX connection» в Asterisk

Заметил однажды в консоли Asterisk, что часто отображаются следующие сообщения:

— Remote UNIX connection
— Remote UNIX connection disconnected
— Remote UNIX connection
— Remote UNIX connection disconnected
— Remote UNIX connection
— Remote UNIX connection disconnected

Читать далее «Частые сообщения «Remote UNIX connection» в Asterisk»

Решение ошибки «Unable to create channel of type ‘SIP’ (cause 20 — Subscriber absent)»

Заметил однажды при звонках в консоли Asterisk следующую ошибку:

dial_exec_full: Unable to create channel of type ‘SIP’ (cause 20 — Subscriber absent)

В контексте диалплана у меня выполняется звонок одновременно на два телефона:

exten => s,5,DIAL(SIP/204&SIP/203,19)

Иногда один из IP-телефонов выключен, в связи с чем и возникает эта ошибка, сообщающая что абонент отсутствует.
Для решения нужно просто включить IP-телефон.

Можно посмотреть информацию о SIP в консоли Asterisk:

asterisk -rvv
sip show peers
sip show peer НОМЕР
quit

Если вместо IP-адреса клиента отображается null, а expire равно -1, то SIP клиент не в сети:

Expire: -1
Addr->IP: (null)

Настройка FSK в Asterisk для определения номеров

Чтобы определялся номер, с аналоговых линий, нужно в контексте для каждого Trunk канала Dahdi указать:

Читать далее «Настройка FSK в Asterisk для определения номеров»

Увеличение громкости звонков в Asterisk

Чтобы увеличить громкость разговора при звонках, необходимо в файле /etc/asterisk/extensions.conf, в начале каждого диалплана добавить пару строк (на которых нужно увеличить громкость):

Читать далее «Увеличение громкости звонков в Asterisk»

Маршрутизация звонков по времени в Asterisk

Приведу пример маршрутизации звонков по времени в Asterisk.
Допустим в файле /etc/asterisk/extensions.conf есть настроенный контекст для транка со следующими параметрами:

[Trunk_2]
exten => s,1,DIAL(SIP/6004&SIP/6003,19)
exten => s,2,Hangup()

И чтобы разрулить звонки по времени на разные телефоны укажем для контекста этого транка только вложенные контексты:

[Trunk_2]
include => daytime,8:00-18:00,mon-sat,*,*
include => nighttime,18:00-8:00,mon-sun,*,*
include => sunday,8:00-22:00,sun,*,*

По сути daytime, nighttime, sunday это только названия контекстов, для которых прописано время в контексте [Trunk_2], их можно называть как угодно.

И потом в этих отдельных контекстах уже пропишем нужные екстеншены.
То есть, днем:

[daytime]
exten => s,1,DIAL(SIP/6004&SIP/6003,19)
exten => s,2,Hangup()

Ночью:

[nighttime]
exten => s,1,DIAL(SIP/6002,19)
exten => s,2,Hangup()

И в воскресенье:

[sunday]
exten => s,1,DIAL(SIP/6002,19)
exten => s,2,Hangup()

Можно также например создать контекст holiday с праздничными днями:

include => holiday,*,*,1,jan
include => holiday,*,*,8,mar

и т.д.

Для тех кто хочет расписать подробнее по дням, приведу список дней на английском:
mon — Monday — Понедельник
tue — Tuesday — Вторник
wed — Wednesday — Среда
thu — Thursday — Четверг
fri — Friday — Пятница
sat — Saturday — Суббота
sun — Sunday — Воскресенье

Аналогично сокращаются до трех букв и названия месяцев.

Решение ошибки при компиляции Asterisk «‘pjsip_tcp_transport_cfg’ has no member named ‘sockopt_params’»

Компилировал однажды Asterisk версии 13.13.1 и при выполнении make заметил следующую ошибку:

‘pjsip_tcp_transport_cfg’ has no member named ‘sockopt_params’

pjproject-2.2.1 уже был скомпилирован.

Решил проблему собрав поновее версию pjproject-2.4.5

cd /usr/src
wget http://www.pjsip.org/release/2.4.5/pjproject-2.4.5.tar.bz2
tar -xjvf pjproject-2.4.5.tar.bz2
cd pjproject-2.4.5
CFLAGS='-DPJ_HAS_IPV6=1' ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr
make dep
make
make install

После этого, ошибка исчезла.

Настройка TDM410P c asterisk

На тесте подключил китайскую плату TDM410P с четырьмя FXO-портами (красными) в PCI слот выключенного Ubuntu сервера.
Для удобства сразу переключимся на root пользователя:

Читать далее «Настройка TDM410P c asterisk»