Есть вообще возможность отсылать DTMF не только в Local канал?
Для неверующих пример лога звонка Tt есть, перевод звонка при нажатии на телефонах *2 работают.
-- Executing [s@macro-dialout-one-predial-hook:1] MacroExit("IAX2/202-9540", "") in new stack
-- Executing [s@macro-dial-one:47] ExecIf("IAX2/202-9540", "0?Set(D_OPTIONS=trII)") in new stack
-- Executing [s@macro-dial-one:48] Dial("IAX2/202-9540", "SIP/200,,TtrIb(func-apply-sipheaders^s^1)") in new stack
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- SIP/200-00000002 Internal Gosub(func-apply-sipheaders,s,1) start
-- Executing [s@func-apply-sipheaders:1] NoOp("SIP/200-00000002", "Applying SIP Headers to channel") in new stack
-- Executing [s@func-apply-sipheaders:2] Set("SIP/200-00000002", "SIPHEADERKEYS=") in new stack
-- Executing [s@func-apply-sipheaders:3] While("SIP/200-00000002", "0") in new stack
-- Jumping to priority 7
-- Executing [s@func-apply-sipheaders:8] Return("SIP/200-00000002", "") in new stack
== Spawn extension (from-internal, 200, 1) exited non-zero on 'SIP/200-00000002'
-- SIP/200-00000002 Internal Gosub(func-apply-sipheaders,s,1) complete GOSUB_RETVAL=
-- Called SIP/200
-- Connected line update to IAX2/202-9540 prevented.
-- SIP/200-00000002 is ringing
-- Connected line update to IAX2/202-9540 prevented.
-- SIP/200-00000002 answered IAX2/202-9540
-- Channel SIP/200-00000002 joined 'simple_bridge' basic-bridge <d6f93d6f-b989-42e9-ac54-a783557a3eb5>
-- Channel IAX2/202-9540 joined 'simple_bridge' basic-bridge <d6f93d6f-b989-42e9-ac54-a783557a3eb5>
[2016-07-13 07:58:18] DTMF[124777][C-00000002]: channel.c:3944 __ast_read: DTMF end '1' received on IAX2/202-9540, duration 0 ms
[2016-07-13 07:58:18] DTMF[124777][C-00000002]: channel.c:3971 __ast_read: DTMF begin emulation of '1' with duration 100 queued on IAX2/202-9540
[2016-07-13 07:58:18] DTMF[124777][C-00000002]: channel.c:4108 __ast_read: DTMF end emulation of '1' queued on IAX2/202-9540
[2016-07-13 07:58:18] DTMF[124777][C-00000002]: channel.c:3944 __ast_read: DTMF end '1' received on IAX2/202-9540, duration 0 ms
[2016-07-13 07:58:18] DTMF[124777][C-00000002]: channel.c:3971 __ast_read: DTMF begin emulation of '1' with duration 100 queued on IAX2/202-9540
[2016-07-13 07:58:18] DTMF[124777][C-00000002]: channel.c:4108 __ast_read: DTMF end emulation of '1' queued on IAX2/202-9540
[2016-07-13 07:58:19] DTMF[124777][C-00000002]: channel.c:3944 __ast_read: DTMF end '2' received on IAX2/202-9540, duration 0 ms
[2016-07-13 07:58:19] DTMF[124777][C-00000002]: channel.c:3971 __ast_read: DTMF begin emulation of '2' with duration 100 queued on IAX2/202-9540
[2016-07-13 07:58:19] DTMF[124777][C-00000002]: channel.c:4108 __ast_read: DTMF end emulation of '2' queued on IAX2/202-9540
там есть при этом звонке 2 канала:
Channel Location State Application(Data)
SIP/200-00000002 (None) Up AppDial((Outgoing Line))
IAX2/202-9540 s@macro-dial-one:48 Up Dial(SIP/200,,TtrIb(func-apply
Через AMI функцией PlayDTMF ни в один канал DTMF не заходит, хотя АМИ отвечает что запрос выполнен упешно. Если генирируз звонок каналом Local то DTMF функцие plyaDTMF на канал Local заходят.
Возможно кто-то не понял вопроса. флаги TtWw мне не нужны если оператор позвонил клиенту и там у него IVR то оператору нужно нажать кнопку допустим 2 но не на телефоне а в каком-то приложении, которое через АМИ с помощью функции playAMI передает данное нажатие в канал пользователю. Если я генерирую Local канал на исходящую то в Local канал ДТМФ заходит, а если в SIP/ то не заходит.
Если создавать звонок с Local каналом то все DTMF, в этот канал, ходят через AMI нормально, если просто SIP/ то DTMF не заходят. Вот я и хочу понять что это баг или фича.
Мне это не мешает, но разобраться хочу.
PS: Разобрался.
Задан: Jul 13 '16
Просмотрен: 393 раз
Обновлен: Jul 28 '16
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
Подробнее вопрос. Не хочется опять играть в эту игру "пять вопросов за один ответ" .
zzuz (Jul 13 '16)editDTMF тоны обрабатываются только тогда когда в команде через AMI указываешь канал Local/{ноые}@test, а если указать прямой канал например SIP/{номер} то DTMF не отрабатывает.
romariosar (Jul 13 '16)editВедь в контексте test есть опции для Dial , а для SIP/{номер} их нет .
zzuz (Jul 13 '16)editА у меня везде отрабатывало. ЧЯДНТ? Тоесть это не вопрос. Возможность есть, навыков нет.
meral (Jul 13 '16)editzzuz вы про что имеете ввиду? какие опции влияют на обработку DTMF с помощью команды PlayDTMF через AMI?
romariosar (Jul 13 '16)editmeral у тебя DTMF обрабатывался через AMI когда ты отсылал в канал типа SIP/{num}? на какой версии это работало?
romariosar (Jul 13 '16)editОпции Dial такие как tTwW позволяют перехватывать dtmf в модуле features.c . Без них dmtf не анализируется.
zzuz (Jul 13 '16)editzzuz эти опции стоят звонко переводится успешно, я еще раз говорю через AMI заходят только в local канал. Поробуйте у себя https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+ManagerAction_PlayDTMF
romariosar (Jul 13 '16)editГде опции стоят ? При звонке через SIP/{num} ?
zzuz (Jul 13 '16)editzzuz да там стоят Tt и Когда нажимаю на кнопки у телефонов DTMF проходит, вопрос именно в функции PlayDTMF
romariosar (Jul 13 '16)edit" да там стоят Tt " - не верю
zzuz (Jul 13 '16)editВсе работает на всех версиях. Если вам надо передать dtmf дальше, вам надо ВЫКЛЮЧИТЬ features на эти направления.
meral (Jul 13 '16)editmeral, всмысле ВЫКЛЮЧИТЬ? мне надо чтобы между собой 2 канал когад разговаривают я мог в канал одному из ни загнать DTMF через AMI.
romariosar (Jul 13 '16)editУ вас есть выбор. Либо вы dtmf обрабатываете, либо пропускаете. Соответсвенно надо выставить флаги в каналах. Если чтото непонятно, вы, как декларируемый "эксперт", можете легко и быстро почитать исходники.
meral (Jul 13 '16)editmeral, вот вы на украние все чтоль такие, флаги TtWw мне не нужны если оператор позвонил клиенту и там у него IVR то оператору нужно нажать кнопку допустим 2 но не на телефоне а в какомто приложении, которое через АМИ с помощью функции playAMI передать данное нажатие в канал пользователю. Если я генерирую Local канал на исходящую то в Local канал ДТМФ заходит, а если в SIP/ то не заходит. Флаги вообще не причем.
romariosar (Jul 14 '16)edit