Есть вообще возможность отсылать 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: Разобрался.
Задан: 2016-07-13 11:41:39 +0400
Просмотрен: 391 раз
Обновлен: Jul 28 '16
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
Подробнее вопрос. Не хочется опять играть в эту игру "пять вопросов за один ответ" .
zzuz ( 2016-07-13 13:58:26 +0400 )редактироватьDTMF тоны обрабатываются только тогда когда в команде через AMI указываешь канал Local/{ноые}@test, а если указать прямой канал например SIP/{номер} то DTMF не отрабатывает.
romariosar ( 2016-07-13 14:08:15 +0400 )редактироватьВедь в контексте test есть опции для Dial , а для SIP/{номер} их нет .
zzuz ( 2016-07-13 14:31:39 +0400 )редактироватьА у меня везде отрабатывало. ЧЯДНТ? Тоесть это не вопрос. Возможность есть, навыков нет.
meral ( 2016-07-13 16:40:38 +0400 )редактироватьzzuz вы про что имеете ввиду? какие опции влияют на обработку DTMF с помощью команды PlayDTMF через AMI?
romariosar ( 2016-07-13 16:41:41 +0400 )редактироватьmeral у тебя DTMF обрабатывался через AMI когда ты отсылал в канал типа SIP/{num}? на какой версии это работало?
romariosar ( 2016-07-13 16:43:44 +0400 )редактироватьОпции Dial такие как tTwW позволяют перехватывать dtmf в модуле features.c . Без них dmtf не анализируется.
zzuz ( 2016-07-13 16:57:29 +0400 )редактироватьzzuz эти опции стоят звонко переводится успешно, я еще раз говорю через AMI заходят только в local канал. Поробуйте у себя https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+ManagerAction_PlayDTMF
romariosar ( 2016-07-13 17:19:02 +0400 )редактироватьГде опции стоят ? При звонке через SIP/{num} ?
zzuz ( 2016-07-13 17:28:26 +0400 )редактироватьzzuz да там стоят Tt и Когда нажимаю на кнопки у телефонов DTMF проходит, вопрос именно в функции PlayDTMF
romariosar ( 2016-07-13 18:14:00 +0400 )редактировать" да там стоят Tt " - не верю
zzuz ( 2016-07-13 18:18:54 +0400 )редактироватьВсе работает на всех версиях. Если вам надо передать dtmf дальше, вам надо ВЫКЛЮЧИТЬ features на эти направления.
meral ( 2016-07-13 19:22:06 +0400 )редактироватьmeral, всмысле ВЫКЛЮЧИТЬ? мне надо чтобы между собой 2 канал когад разговаривают я мог в канал одному из ни загнать DTMF через AMI.
romariosar ( 2016-07-13 19:26:24 +0400 )редактироватьУ вас есть выбор. Либо вы dtmf обрабатываете, либо пропускаете. Соответсвенно надо выставить флаги в каналах. Если чтото непонятно, вы, как декларируемый "эксперт", можете легко и быстро почитать исходники.
meral ( 2016-07-13 21:44:02 +0400 )редактироватьmeral, вот вы на украние все чтоль такие, флаги TtWw мне не нужны если оператор позвонил клиенту и там у него IVR то оператору нужно нажать кнопку допустим 2 но не на телефоне а в какомто приложении, которое через АМИ с помощью функции playAMI передать данное нажатие в канал пользователю. Если я генерирую Local канал на исходящую то в Local канал ДТМФ заходит, а если в SIP/ то не заходит. Флаги вообще не причем.
romariosar ( 2016-07-14 12:04:41 +0400 )редактировать