Страница 1 из 1

feature во время dial не срабатывает до ответа

Добавлено: 24 сен 2014, 13:16
Glukinho
Всем привет.

Мне нужно, чтобы во время выполнения Dial (во время гудков) можно было нажать звездочку, тогда вызов автоматом пойдет на мобильный (удобно, если точно знаешь, что человека на месте нет, не нужно ждать всё время до автоматической переадресации).

Проблема в том, что нужное мне приложение не срабатывает, пока вызов в Dial не будет отвечен. Нужный DTMF прилетает, это видно в консоли, но реакции на него нет.

features.conf:

Код: Выделить всё

[applicationmap]

tomobile => *,self/caller,Macro,tomobile
extensions.conf:

Код: Выделить всё

[globals]

DYNAMIC_FEATURES => tomobile
Лог нажатия * во время дозвона, feature не срабатывает: http://pastebin.com/2uU54btN

Лог нажатия *, когда звонок отвечен, feature сработала: http://pastebin.com/VbBDiSK8

Asterisk 11.8.1. На 1.4 feature срабатывала и во время дозвона, то есть так, как мне надо.

Есть у кого-нибудь идеи, как заставить Asterisk активировать feature в процессе дозвона по Dial, а не только после ответа?

Re: feature во время dial не срабатывает до ответа

Добавлено: 25 сен 2014, 08:48
virus_net
Сам это пока никогда не пользовал, доку ранее читал, но не вчитывался ибо не нужно было.
Если смотреть в доку:
Asterisk config features.conf
Можно увидеть:
The syntax for declaring a dynamic feature is the following (Asterisk 1.8+):
;<FeatureName> => <DTMF_sequence>,<ActivateOn>[/<ActivatedBy>], \
; <Application>[(<AppArgument1>,<AppArgument2>)][,MOH_Class]
The syntax for declaring a dynamic feature is the following (Pre-1.8):
;<FeatureName> => <DTMF_sequence>,<ActivateOn>[/<ActivatedBy>], \
; <Application>[,<AppArgument1>|<AppArgument2>[,MOH_Class]]
Т.е. различие между 1.4 и 11 в этом плане уже точно есть.
Так же из этого получается что в вашем случае "tomobile" оказывается на месте указания MOH_Class
Получается что по идее, исходя из Application:
[Syntax]
Macro(name[,arg1[,arg2[,...]]])
То на мой взгляд должно было бы быть так:

Код: Выделить всё

tomobile => *,self/caller,Macro(tomobile),default
Могу оказаться не прав - нужно проверять

Так же я бы попробовал бы использовать:
New in 11
Two new functions have been added: FEATURE and FEATUREMAP. FEATURE lets you set some of the configuration options from the [general] section of features.conf on a per-channel basis. FEATUREMAP lets you customize the key sequence used to activate built-in features, such as blindxfer, and automon.
The FEATURE and FEATUREMAP dialplan functions allow you to set some features.conf options on a per channel basis.
а не указание в globals, дабы проверить будет ли разница в поведении.
У меня какие то такие мысли.

Re: feature во время dial не срабатывает до ответа

Добавлено: 25 сен 2014, 12:44
Glukinho
Спасибо!

Разницы между двумя вариантами никакой:

Код: Выделить всё

tomobile => *,self/caller,Macro(tomobile)
или

Код: Выделить всё

tomobile => *,self/caller,Macro,tomobile
Оба валидны и оба срабатывают, когда Dial отвечен и не срабатывают, когда дозвон еще идет.

Функции FEATURE и FEATUREMAP касаются только встроенный фич (automon, parkcall и так далее), а не созданных отдельно.

Задавать переменную DYNAMIC_FEATURES я пробовал и в процессе обработки звонка, а не в globals, и __ ее предварял, поведение не меняется.

Re: feature во время dial не срабатывает до ответа

Добавлено: 25 сен 2014, 17:11
virus_net
Ну тогда остается или гуглить далее или смотреть в исходники, т.к. то что разница точно есть очевидно уже сейчас.

Re: feature во время dial не срабатывает до ответа

Добавлено: 01 окт 2014, 18:06
Glukinho
Подсказали на forums.asterisk.org: http://forums.asterisk.org/viewtopic.ph ... 35&start=0
Работает!

Re: feature во время dial не срабатывает до ответа

Добавлено: 02 окт 2014, 07:59
virus_net
Набор через Local и вставка Answer перед Dial, как говорится "вот оно!". Зачастую гениальное решение самое простое :)

Re: feature во время dial не срабатывает до ответа

Добавлено: 02 окт 2014, 10:14
Wapo
Только мне одному показалось, что изначально нужно было answer не давать?

Re: feature во время dial не срабатывает до ответа

Добавлено: 02 окт 2014, 12:05
Glukinho
Так изначально никто и не давал...

Re: feature во время dial не срабатывает до ответа

Добавлено: 30 июн 2015, 18:23
Glukinho
По-настоящему спасла опция d команды Dial:
d: Allow the calling user to dial a 1 digit extension while waiting
for a call to be answered. Exit to that extension if it exists in the
current context, or the context defined in the ${EXITCONTEXT} variable,
if it exists.
NOTE: Many SIP and ISDN phones cannot send DTMF digits until the
call is connected. If you wish to use this option with these phones,
you can use the 'Answer' application before dialing.
В том же контексте сделал:

Код: Выделить всё

exten => *,1,Macro(tomobile)
Получилось именно то, что нужно.