Asterisk + IVR
Добавлено: 19 июн 2015, 06:57
				
				Ребят в общем такая ситуация в Asterisk не очень силен, имеется 2 сервера телефонии - Asterisk и CUCM, на Asterisk настроено интерактивное голосовое меню:
extensions.ael
вызов поступает на внешний номер голосового шлюза и переадресовывается на 04959999 по h323, далее проигрывается приветствие с предложением нажать 1 для перехода в office_1 или 2 для перехода в office_2 ес переводом в office_1 и дальнейшим переводом с office_1 на внутренние номера office_1 и office_2 все отлично, если же нажимать 2 то происходит перевод по h323 на номер 9999 на CUCM и с него на группу номеров после снятие трубки и просьбе перевести на номера office_2 происходит сброс вызова (набранный Вами номер не доступен) если звонить с мегафона, с билайна все нормально работает (хотя может это разовые случаи), если звонить с мегафона и просто ждать окончания приветствия голосового меню должен произойти автоматический перевод на номер 9999 который на CUCM но он иногда нормально переводит, а иногда по прошествии секунд 5-10 отвечает "набранный Вами номер не доступен" как найти где косяк?
в голосовом меню 2 цифры, цифра 1 переадресация в office_1, цифра 2 переадрессация в office_2, если ничего не жать то вызов уходит в office_2
			extensions.ael
Код: Выделить всё
context incoming {
        _!      => {
                Hangup(21);
        };
};
context f_scs {
        _!      => {
                Ringing();
                Wait(1);
                Read(DTMF_INPUT,/usr/local/asterisk/data/sounds/ru/welcome-1-2,1,,1,5);
                switch (${DTMF_INPUT}) {
                        case 1:
                                goto office_1,1;
                        case 9:
                                goto test,1;
                        default:
                                goto office_2,1;
                };
        };
        office_1      => {
                Set(CALLERID(name)=${CALLERID(num)});
                Dial(H323/7000@scs1,,rt);
                if ("${DIALSTATUS}" = "CHANUNAVAIL")
                        Dial(H323/3000@scs2,,rt);
                Hangup();
        };
        test    => {
                Set(CALLERID(name)=${CALLERID(num)});
                Dial(H323/04951355@scs1,,rt);
                if ("${DIALSTATUS}" = "CHANUNAVAIL")
                        Dial(H323/03431304@scs2,,rt);
                Hangup();
        };
        office_2  => {
                Dial(H323/9999@office_2,,rt);
                if ("${DIALSTATUS}" = "CHANUNAVAIL" || "${DIALSTATUS}" = "BUSY" || "${DIALSTATUS}" = "NOANSWER")
                        goto office_1,1;
                Hangup();
        };в голосовом меню 2 цифры, цифра 1 переадресация в office_1, цифра 2 переадрессация в office_2, если ничего не жать то вызов уходит в office_2