Письмо #19851 Списка Рассылки CGatePro@list.communigate.ru
От Кого: alex sss <CGatePro@mx.ru>
Кому: CommuniGate Pro Russian Discussions <CGatePro@mx.ru>
Тема: Re: [CGP] Исключение определенных номеров из донабора
Дата: Thu, 25 Jul 2013 00:17:29 +0400
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
при входящем звонке.

Заранее благодарю

> 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/
>
>
>
>
Подписаться (Прямо) Подписаться (Дайджест) Подписаться (Оглавление) Отписаться Написать Listmaster-у