Transfer: Вернуть звонок тому, кто перевел.
Сообщений: 12
|
Re: Transfer: Вернуть звонок тому, кто перевел.
Нашел где брать DIALEDPEERNAME.Она появляется только в
EXTEN => h
причем при выполнении трансфера DIALEDPEERNAME обнуляется. Там же в h присваиваю
exten => h,1,Set(ddpn_temp=${DIALEDPEERNAME})
и эта временная переменная уже передается дальше.
2. Почему в 1.6 не пользоваться atxfer? Он автоматически возвращает звонок, плюс на мой взгляд он более удобен чем просто переадресация вслепую
хм.. никогда не пользовался. А можно в двух словах как? Или ткни в доку.
И еще хотел спросить:
Это все работает и всегда работало если A звонит В, В трансферит на С, и при недоступности С возвращает на В.
Но как сделать когда А звонит В, А трансферит на С, и при недоступности С возвращает на А ????????
|
Откуда: Москва
Сообщений: 3421
|
Re: Transfer: Вернуть звонок тому, кто перевел.
IgorG: 1. Нужно проследить почему DIALEDPEERNAME не устанвливается
2. Почему в 1.6 не пользоваться atxfer? Он автоматически возвращает звонок, плюс на мой взгляд он более удобен чем просто переадресация вслепую
Игорь, не в курсе, в 1.6 флаг t на Qeueue какой xfer вызывает? В 1.4 blind, что не удобно.
|
Откуда: Омск
Сообщений: 478
|
Re: Transfer: Вернуть звонок тому, кто перевел.
Oleg78, выход один, сохранять и отслеживать всё течение звонка (допустим по uniqueid). Затем при необходимости возврата анализировать эти данные.
litnimax, а вообще я всегда считал, что t в Dial и Queue разрешают оба вида переадресации? Только сейчас проверил - в 1.6 работает atxfer из очереди.
OpenSUSE 11.2 / Asterisk 1.6.x / Vicidial / UniMRCP
|
Сообщений: 12
|
Re: Transfer: Вернуть звонок тому, кто перевел.
выход один, сохранять и отслеживать всё течение звонка (допустим по uniqueid).
Эксперементировал. Дело в том что когда трансферит А, то для трансфера создается новый uniqueid и никакие переменные не передаются. Пока не могу решить задачу. Подскажите если есть идеи.
|
Откуда: Уфа
Сообщений: 5856
|
Re: Transfer: Вернуть звонок тому, кто перевел.
новый uniqueid создается, но у него первая часть (до точки) такая же что и у родительского звонка
|
Сообщений: 12
|
Re: Transfer: Вернуть звонок тому, кто перевел.
Ну одинаковые uniqueid в первой части, по-моему бывают часто. А что если два одновременно трансфера совершаются?
Кстати а хотел уточнить: А как вытащить $CHANNEL по конкретному uniqueid с диалплана?
|
Откуда: Москва
Сообщений: 3421
|
Re: Transfer: Вернуть звонок тому, кто перевел.
Oleg78: <...> А как вытащить $CHANNEL по конкретному uniqueid с диалплана?
Не думаю, что такая функция есть в готовом виде.
|
Откуда: Москва
Сообщений: 4
|
Re: Transfer: Вернуть звонок тому, кто перевел.
Собственно проблема.
Трансфер звонков осуществляется так:
exten => _[124]XX,1,GotoIf($[${LEN(${BLINDTRANSFER})}=0]?50)
exten => _[124]XX,2,Set(BLDT=${BLINDTRANSFER})
exten => _[124]XX,3,Dial(SIP/${EXTEN},30,tm)
exten => _[124]XX,4,GotoIf($[ ${DIALSTATUS} = ANSWER ]?6)
exten => _[124]XX,5,Dial(SIP/${BLDT:4:3},120,tm)
exten => _[124]XX,6,Hungup
exten => _[124]XX,50,Dial(SIP/${EXTEN},30,tg)
exten => _[124]XX,51,Hungup
Естественно все замечательно работало, до перехода в новую версию (1.4)
происходит следущее
звонок поступает на железный телефон (ulaw) после чего переадресуется с него на номер (hold -> номер -> transfer) и кладется трубка. (т.к. соединение разорвано. т.е. звонок полностью передан на другой номер)
но после того как кладем трубку с телефона с которого переводили происходит повторный звонок.
с телефона 1 на телефон 2 трансфер на 3. 3-й звонит. на 2 кладем трубку. звонит 2.
Может кто сталкивался? Есть идеи куда копать хотя бы т.к. я зашел в тупик.
P.S. На Sip все работает как нада.
|
Откуда: Москва
Сообщений: 4
|
Re: Transfer: Вернуть звонок тому, кто перевел.
litnimax: Oleg78: <...> А как вытащить $CHANNEL по конкретному uniqueid с диалплана?
Не думаю, что такая функция есть в готовом виде.
Если я правильно понял то это PickUpChan()
Вытаскивает звонок с $CHANNEL по названию канала
|
Откуда: Kiev
Сообщений: 801
|
Re: Transfer: Вернуть звонок тому, кто перевел.
hpflash:
exten => _[124]XX,1,GotoIf($[${LEN(${BLINDTRANSFER})}=0]?50)
exten => _[124]XX,2,Set(BLDT=${BLINDTRANSFER})
exten => _[124]XX,3,Dial(SIP/${EXTEN},30,tm)
exten => _[124]XX,4,GotoIf($[ ${DIALSTATUS} = ANSWER ]?6)
exten => _[124]XX,5,Dial(SIP/${BLDT:4:3},120,tm)
exten => _[124]XX,6,Hungup
exten => _[124]XX,50,Dial(SIP/${EXTEN},30,tg)
exten => _[124]XX,51,Hungup
Естественно все замечательно работало, до перехода в новую версию (1.4)
и
hpflash:
P.S. На Sip все работает как нада.
что-то не стыкуется. Вы как-раз и показали участок, где "На Sip все работает как нада".... Тогда покажите, как происходит набор на аппаратные телефоны (кстати не ясно, чем вы их цепляете к Астериску ). Другими словами то место, где глючит. ИМХО, а может и я чего не увидел....
Лучший способ предвидеть будущее - изобрести его (Алан Кей, "Apple")
|
|