Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

ami playDTMF НЕ в Local канал [закрыт]

0

Есть вообще возможность отсылать 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

romariosar Gravatar romariosar flag of Russian Federation
578 88 8 38
http://www.webunix.ru/

обновил 2016-07-28 11:07:24 +0400

Comments

Подробнее вопрос. Не хочется опять играть в эту игру "пять вопросов за один ответ" .

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 )редактировать

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2016-07-13 11:41:39 +0400

Просмотрен: 98 раз

Обновлен: Jul 28

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.