|
Здравствуйте,
On 2013-07-25 00:17, alex sss wrote:
16.07.13, Dmitry Akindinov<CGatePro@mx.ru> написал(а):
Здравствуйте,
On 2013-07-16 21:26, alex sss wrote:
Доброго времени суток!
Есть инстанция коммунигейта 6.0.5. Входящий звонок обрабатывается
аккаунтом pbx. В процессе обработки входящего звонка есть возможность
донабрать внутренний номер.
Возникла необходимость исключить часть внутренних номеров из донабора.
Как это сделать?
1. Решение "в лоб": подправить reception.sppi, определив массивчик
запрещённых "экстеншенов" в начале скрипта (в начале функции doSwitchBoard)
forbidden = TextToObject("(222,252,267)");
и потом в строках 119-120
if IsString(command) then
toCall = prefix + command;
добавить
if Find(toCall,forbidden) >= 0 then toCall = "error"; end if;
Попробывал. Не поехало.
Вставил:
procedure doSwitchBoard(targetAccount,prefs) is
customPrompt =
ReadStorageFile(fullName("receptionprompt.wav",targetAccount));
forbidden = TextToObject("(102,103)");
if customPrompt != null then
....
и
if IsString(command) then
toCall = prefix + command;
if Find(toCall,forbidden) >= 0 then toCall = "error"; end if;
elif command == null then // time-out w/o any digit
toCall = "error"; command = "";
end if;
Более, того. В логе я не вижу вызова файлика reception.sppi. Из sppi
есть только:
callerleg.sppi(bridgeCaller) started
при входящем звонке.
reception.sppi - часть pbx.sppr, котороая, собственно, проигрываеит меню и предлагает ввести экстеншен. Ну вставьте ещё
syslog("About to call " + String(toCall) + ", looking for it in " + ObjectToString(forbidden));
if Find(toCall,forbidden) >= 0 then toCall = "error"; end if;
Это должно выдать строчку в лог при донаборе экстеншена.
Заранее благодарю
2. Чуть красивее: определить группу forbidden, запретить почту и звонки
в неё, добавить в неё аккаунты, на которые нельзя звонить через
автосекретаря. В reception.sppi поправить функцию
function connectTo(toWhom) is
добавив в её начало код:
forbidden = ReadGroupMembers("forbidden@" + MyDomain());
if isArray(forbidden) then
index = Length(forbidden);
toWhomRoute = RouteAddress(toWhom,"signal");
while index > 0 loop
index -= 1;
if RouteAddress(forbidden[index],"signal") == toWhomRoute then
return false;
end if;
end loop;
end if;
Заранее благодарю.
Не проверял, но должно сработать.
--
Best regards,
Dmitry Akindinov
##################################################################
Вы получили это сообщение потому, что подписаны на список рассылки
<CGatePro@mx.ru>.
Чтобы отписаться, отправьте сообщение на адрес <CGatePro-off@mx.ru>
Чтобы переключиться в режим дайджеста - mailto:<CGatePro-digest@mx.ru>
Чтобы переключиться в индексный режим - mailto:<CGatePro-index@mx.ru>
Для административных запросов адрес <CGatePro-request@mx.ru>
Архив списка: http://mx.demos.su/lists/cgp-russian/
##################################################################
Вы получили это сообщение потому, что подписаны на список рассылки
<CGatePro@mx.ru>.
Чтобы отписаться, отправьте сообщение на адрес <CGatePro-off@mx.ru>
Чтобы переключиться в режим дайджеста - mailto:<CGatePro-digest@mx.ru>
Чтобы переключиться в индексный режим - mailto:<CGatePro-index@mx.ru>
Для административных запросов адрес <CGatePro-request@mx.ru>
Архив списка: http://mx.demos.su/lists/cgp-russian/
--
Best regards,
Dmitry Akindinov
|
|