Страница 1 из 1
перевод звонка в основной контекст
Добавлено: 01 окт 2011, 22:12
ssds
asterisk 1.8.5.0
feateres.c
функция builtin_atxfer
требуется вместо того, чтобы отправить /* Party A */ в /* Party С */, перевести обоих в основной контекст, когда /* Party B */ положил трубку.
просьба направить, какие функции для каналов использовать?
вопрос 2, как смотреть лог ast_debug( .... ) ?
asterisk -vvvvv и установка debug и verbose почему-то не помогли. может что-то делаю не так?
Re: перевод звонка в основной контекст
Добавлено: 01 окт 2011, 22:17
ded
1) CLI> features show
2) logger.conf
Re: перевод звонка в основной контекст
Добавлено: 01 окт 2011, 22:53
ssds
за logger.conf спасибо.
а CLI> features show совсем не то.
мне бы понять, есть ли где в исходниках, как чисто вернуть вызов в основной контекст, без висящих каналов и прочего мусора
Re: перевод звонка в основной контекст
Добавлено: 01 окт 2011, 23:26
ded
Все возможности трансферов определятся буквой t в команде Dial, и другими опциями там же.
Мне сложно ответить что-то на языке исходников, но стандартный attended transfer (средствами Астериска) выполняется в одном контексте, по крайней мере при условии /* Party A */ /* Party В */ и /* Party С */ являются внутренними extensions, AFAIK.
Какие каналы остаются висеть у Вас при attended transfer?
Люди спрашивают на asteriskguru.com
How can you add specific statements into Asterisk dialplan (extension.ael, ...) for attented transfers ?
I can see Asterisk sending Transfer or Masquerade events through AMI (in 1.6.1) but I could use an external program to catch those events but I would prefer to use dialplan instead.
И решение такое:
Today, Dial application M or U options allows macro execution when caller and callee are connected.
What if this same macro could be also launched during some later events (like attended transfer) ?
With features.conf, you could then specify :
- how lo launch an attended transfer (which key to type as today),
- if a given "feature" (attended transfer, parking, ...) should be supported by Dial macro option (for compatibilty, default could be set to none)
and with extension.conf, you could specify :
- which specific treatment (sending UserEvents, launching an external program, ...) to apply
In this puzzle, if Asterisk could support a few more standard variables like ATTENDED_TRANSFERER ATTENDED_TRANSFER_TARGET, you would everything to define and run attended transfers specific logic :
exten => 123,1,Dial(SIP/123,M(mymacro^arg1^arg2)) ; mymacro is launched upon connection and specified (in features.conf) events
[macro-mymacro]
GotoIf("x${ATTENDED_TRANSFERER}", ....
но оно базируется опять же таки на функционале features.conf
Re: перевод звонка в основной контекст
Добавлено: 02 окт 2011, 00:00
ssds
>> стандартный attended transfer
это вызов static int builtin_atxfer(struct ast_channel *chan, struct ast_channel *peer, struct ast_bridge_config *config, const char *code, int sense, void *data)
где-то ближе к концу данной функции осуществляется перевод звонка из А -> C (строка легко находится, там хорошие комментарии).
висящие каналы образуются легко, если меняется исходный код. надо чтобы все было корректно.
по поводу features.conf и логики стоит посмотреть, спасибо. может ничего ломать и не надо.
Re: перевод звонка в основной контекст
Добавлено: 02 окт 2011, 00:17
ded
Мне трудно говорить с Вами на языке Си.
IMHO - ничего ломать не надо.