Тект программы:
function callNumber(phoneNumber,timeOut) forward; function callerLeg(parameters,callPending) external; function bridgedLoopHash(peerLeg) external;
entry main is
group = Vars().startParameter;
timeOut = 20;
if not isArray(group) or else Length(group) < 2 then
syslog("Expecting the array of extensions, timeout as the first
value");
RejectCall("500-Invalid parameters"); end if;
timeOut = group[0]; RemoveElement(group, 0);
count = Length(group);
called = false;
if count > 0 then
index = 0; //shift = RandomNumber() % count; shift = 0; while index < count and then timeOut > 0 loop member = group[(index + shift) % count]; started = LocalTime(); called = callNumber(member, timeOut); exitif called; timeTaken = LocalTime() - started; if timeTaken <= timeOut then timeOut = timeOut - timeTaken; end if; index = index + 1; end loop;
function callNumber(phoneNumber,timeOut) is
parameters = NewDictionary();
if FindSubString(phoneNumber, "@") == -1 then
phoneNumber = phoneNumber + "@" + MyDomain();
end if;
parameters.("") = "sip:" + phoneNumber + ";services=no"; parameters.activeSide = false; parameters.From = RemoteURI(); parameters.("Expires") = (timeOut != null) ? number(timeOut): 10; parameters.bridgedCall = true; parameters.("Call-ID") = PendingRequestData("Call-ID") + ".gr_ser"; parameters.("Max-Forwards") = PendingRequestData("Max-Forwards")-1;
syslog("Params: " + ObjectToString(parameters)); peerLeg = callerLeg(parameters,true); if not IsTask(peerLeg) then
//PlayFile("Failure"); return false; else syslog("Result: " + ObjectToString(peerLeg));end if;
Dmitry Akindinov wrote:
> Здравствуйте,
>
> Никитин Андрей wrote:
>>> Здравствуйте, >> >>>> Никитин Андрей wrote: >>>> День добрый! >>>> >>>> Сталкнулся с такой проблеммой, есть задача трансфера по списку >>>> номеров, т.е. если номер не отвечает, то >>пробуем трансферить на >>>> следующий и так далее. >>> >>> А как вы это делаете сейчас? >> функция connectTo возвращает true, false (удачный, неудачный трансфер) >>
>> функцию взял из примера, не модифицировал >> >>> >>>> Все нормально если номер занят или отключен, но если на той стороне >>>> просто не берут трубку, то CGP >>пытается дозвониться до победного. >>>> >>>> Есть ли возможность считать такие соединения неудачными по таймауту >>>> (минута например) и переходить к >>следующему номеру? >> >>> С помощью B2BUA приложения - можно. Только это будет не трансфер, а >>> имеено бридж между двумя >программками (одна принимает звонок, вторая >>> дозванивается.)
-- Best regards, Dmitry AkindinovПолучено Mon Apr 16 12:28:57 2007
Этот архив был сгенерирован hypermail 2.1.8 : Mon 16 Apr 2007 - 17:13:30 MSD