Письмо #19852 Списка Рассылки CGatePro@list.communigate.ru
От Кого: Dmitry Akindinov <CGatePro@mx.ru>
Кому: CommuniGate Pro Russian Discussions <CGatePro@mx.ru>
Тема: Re: [CGP] Исключение определенных номеров из донабора
Дата: Thu, 25 Jul 2013 01:17:30 +0400
Здравствуйте,

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


Подписаться (Прямо) Подписаться (Дайджест) Подписаться (Оглавление) Отписаться Написать Listmaster-у