Перейти к содержанию

Поддержка DTMF

Описание

DTMF - Dual-Tone Multi-Frequency signaling, двухтональный многочастотный сигнал.

Этот метод передачи сигналов используется для обмена числовой информацией по аналоговым телефонным линиям на голосовых частотах между телефонами и другими коммуникационными устройствами и АТС, например, для реализации голосовых меню

Методы посылки DTMF

Существует три метода передачи DTMF сигналов в SIP телефонии:

  1. SIP INFO пакеты.
  2. Специальным образом отмеченные события в RTP потоке согласно RFC 2833.
  3. Inband - обычными звуками в RTP потоке без специального кодирования или пометок.

WCS поддерживает первые два метода.

Настройки DTMF

Использование SIP INFO пакетов

Для того, чтобы передавать DTMF сигналы в SIP INFO пакетах, в файле flashphoner.properties должен быть установлен следующий параметр

dtmf=INFO

Настройка АТС

Для того, чтобы получать DTMF сигналы в SIP INFO пакетах, АТС должна быть настроена следующим образом (на примере Asterisk)

[general]
bindport=5060
bindaddr=0.0.0.0
context=default
dtmfmode=info
allow=all

[2000]
type=friend
secret=2000
host=dynamic
canreinvite=no
dtmfmode=info

Отметим, что Asterisk по умолчанию использует метод inband, который не поддерживается WCS.

Передача DTMF согласно RFC2833

Для того, чтобы передавать DTMF сигналы как специально отмеченные события в потоке данных согласно RFC 2833, в файле flashphoner.properties должен быть установлен следующий параметр

dtmf=RFC2833

Кроме того, кодек telephone-event должен быть разрешен к использованию, например

codecs                   =opus,alaw,ulaw,g729,speex16,g722,mpeg4-generic,telephone-event,h264,vp8,flv,mpv
codecs_exclude_sip       =mpeg4-generic,flv,mpv,alaw,ulaw,g729,speex16,g722,vp8
codecs_exclude_streaming =telephone-event
codecs_exclude_sip_rtmp  =opus,g729,g722,mpeg4-generic,vp8,mpv

В данном примере, разрешены H264 для видео, opus для аудио и telephone-event для передачи DTMF.

Настройка АТС

Для того, чтобы получать DTMF сигналы согласно RFC 2833, АТС должна быть настроена следующим образом (на примере Asterisk)

[general]
bindport=5060
bindaddr=0.0.0.0
context=default
dtmfmode=rfc2833
allow=all

[2000]
type=friend
secret=2000
host=dynamic
canreinvite=no
dtmfmode=rfc2833

Отметим, что Asterisk по умолчанию использует метод inband, который не поддерживается WCS.