Настройка исходящих звонков
Сообщений: 104
|
Настройка исходящих звонков
У меня на город стоят два Dynanix, имеющих номера (по линиям) 1001, 1002, 1003, 1004 и 2001, 2002, 2003, 2004
Задача намбер 1. Мне нужно, чтобы при исходящем звонке использовались только линии 1001, 1002, 1003, 2001 и 2004, из
них выбиралась первая свободная и на нее отдавался звонок. Решил следующим методом:
exten => _XXXXXXX, 1, Dial(SIP/${EXTEN}@1001&SIP/${EXTEN}@1002&SIP/${EXTEN}@1003&SIP/${EXTEN}@2001&SIP/${EXTEN}@2004,60, Tr);
Вопрос - есть ли методы более изящные? А то как-то кривенько получается...
Вопрос №2 - Как вот эту длинную строку запхать в переменную, чтобы потом везде использовать ее (переменную)?
Такой вариант:
[globals]
ALLOUTGOING = SIP/${EXTEN}@1001&SIP/${EXTEN}@1002&SIP/${EXTEN}@1003&SIP/${EXTEN}@2001&SIP/${EXTEN}@2004
Не помог :(
|
Сообщений: 37
|
Re: Настройка исходящих звонков
А такой вариант прокатит ??? ;-)
-------
GOUT1=SIP/${EXTEN}@1001
GOUT2=SIP/${EXTEN}@1002
GOUT3=SIP/${EXTEN}@1003
GOUT4=SIP/${EXTEN}@1004
[PSTN]
exten => _XXXXXXX,1,ChanIsAvail(${DOUT1}&${DOUT2}&${DOUT3}&${DOUT4})
exten => _XXXXXXX,2,Cut(theChannel=AVAILCHAN,,1)
exten => _XXXXXXX,3,Dial(${theChannel}/${EXTEN},60,Tr)
--------
---
Валерий
|
Сообщений: 37
|
Re: Настройка исходящих звонков
Ошибочка в названиях переменных ;-)
-------
GOUT1=SIP/${EXTEN}@1001
GOUT2=SIP/${EXTEN}@1002
GOUT3=SIP/${EXTEN}@1003
GOUT4=SIP/${EXTEN}@1004
[PSTN]
exten => _XXXXXXX,1,ChanIsAvail(${GOUT1}&${GOUT2}&${GOUT3}&${GOUT4})
exten => _XXXXXXX,2,Cut(theChannel=AVAILCHAN,,1)
exten => _XXXXXXX,3,Dial(${theChannel}/${EXTEN},60,Tr)
--------
---
Валерий
|
Сообщений: 104
|
Re: Настройка исходящих звонков
Не канает. ChanIsAvail возвращает первый доступный канал, а не свободный :-( Мне он всегда возвращает SIP/1001, а он занят больше всего :-( Тыкаюсь в него звонить и получаю 486 "Busy here"
|
Сообщений: 569
|
Re: Настройка исходящих звонков
мне понравился перебор вот тут: http://www.voip-info.org/wiki/view/LCDial.sh+AGI+script
звоним по маршруту с минимальной ценой; не получилось - звоним по следующему и т.д.
в данном случае надо или для всех маршрутов (1001, 1002,...) прописать одинаковые цены (0 например) или отсортировать порядок занимания внешних линий с помощью цены.
|
Сообщений: 569
|
Re: Настройка исходящих звонков
хотя не факт что будет работать, ${DIALSTATUS} что возвращает?
|
Сообщений: 104
|
Re: Настройка исходящих звонков
Настроил перебор. Получилось несколько громоздко, но зато теперь * не колбасит при каждом звонке. Выглядит примерно так:
[h323-dialout]
exten => _X., 1, Dial(SIP/${EXTEN}@1001, 60, Tr);
exten => _X., 2, Dial(SIP/${EXTEN}@1002, 60, Tr);
exten => _X., 3, Dial(SIP/${EXTEN}@1003, 60, Tr);
exten => _X., 4, Dial(SIP/${EXTEN}@1004, 60, Tr);
...
exten => _X., 200, Goto(${PRIORITY}+1);
|
Сообщений: 569
|
Re: Настройка исходящих звонков
я бы всё-таки анализировал ${DIALSTATUS} после звонка: http://www.voip-info.org/wiki/index.php?page=Asterisk+variable+DIALSTATUS
|
Сообщений: 104
|
Re: Настройка исходящих звонков
Пока нет смысла. В любом лучае, кроме корректного завершения звонка, после отработки Dial * переходит либо к следующему приоритету в контексте, либо вылетает за +101. Меня не интересует, ПОЧЕМУ не дозвонился абонент по конкретному peer, меня интересует, чтобы он дозвонился ВООБЩЕ. Звонок должен быть принят/отправлен в максимальном количестве случаев (в абсолюте - во всех, чтобы небыло претензий ко мне/гейтам/астериску). ОСОБЕННО принят:
упущеный звонок = потеряный клиент/заказ = - деньги
|
Откуда: Киев
Сообщений: 749
|
Re: Настройка исходящих звонков
шото типа такого
дарю)
[macro-sip-retry-out]
;первый аргумент номера каналов через :
;второй аргумент - что набирать )
;зы не проверялось но должно работать - у меня редко ошибки вылезают))
exten => s,1,SetVar(a=${ARG1})
;записываем номера в буфер
exten => s,2,setVar(num=${a:0:4})
;берем первый - 4 цыфры
exten => s,3,setVar(a=${a:5})
;из буфера он ушел
exten => s,4,Dial(SIP/${ARG2}@${num},,rgo)
;звоним... флаги по желанию (g - надо!!!)
exten => s,5,GOTO(s-${DIALSTATUS},1)
;обработка статуса
exten => s-BUSY,1,goto(s,2)
exten => s-CHANUNAVAIL,1,goto(s,2)
;переходим к следующиму если занято или недоступно.. можно добавить еще если хотите
exten => s-NOANSWER,1,hangup
;не судьба...
exten => s-ANSWER,1,Playback(spasibo)
; говорим спасибо за использование астериска)
exten => s-ANSWER,2,hangup
юзать так
exten => _X.,1,MACRO(sip-retry-out,1111:1112:1113,${EXTEN})
|
|