Изменение логики работы тарификатора телефонии

 

Для каждого вызова процедуры регистрации можно дополнительно обработать передаваемые данные от парсера, тем самым менять логику регистрации данных. Рекомендуется использовать данную возможность в случае, если нельзя изменить парсер, или в парсере "неудобно" делать логику предобработки.

Дополнительная обработка выполняется с помощью вызова функции preprocess_cdr. АРМ «Платежные документы» может самостоятельно изменять логику регистрации ПТД. При плановом обновлении системы функция preprocess_cdr не обновляется.

create or replace function preprocess_cdr(
  call_dt_   in out date,     -- дата/время
  duration_  in out integer,  -- длительность в сек.
  source_    in out varchar,  -- код источника
  hwa_       in out varchar,  -- hardware address
  flags_     in     varchar,  -- флаги
  line_      in out varchar,  -- входящая линия
  trunk_     in out varchar,  -- исходящая линия
  phone_     in out varchar,  -- телефон
  direction_ in out varchar   -- направление вызова
) return integer
as
begin
  -- default code
  return 1;
end;

В функции предварительной обработки можно:

сказать, что данные регистрировать не нужно, в этом случае необходимо вернуть любое число неравное 1;

изменить: направление, hwa, вх./исх. линии, длительность.

 

Процедура preprocess_jt_reg_calls вызывается 1 раз перед работой тарификатора по буферу ПТД. Процедура не имеет вх. и исх. параметров. Рекомендуется использовать процедуру, если требуется предварительная обработка всего буфера перед тем как будет выполнена тарификация.

Процедура также не обновляет обновление системы.

 

В процесс тарификации также можно вмешаться, а именно добавить логику поиска входящего ресурса, если не найден ресурс. В этом случае вызывается процедура process_notfound_wire.

create or replace procedure process_notfound_wire(
  call_dt_          in date,      -- дата/время
  wire_in_          in varchar,   -- вх. линия
  source_id_        integer,      -- id источника (из таблицы sources)
  hwa_              in varchar,   -- hardware address
  flags_            in varchar,   -- flags
  value_            in float,     -- длительность в сек.
  is_blocked_       out boolean,  -- признак того, что ресурс заблокирован (попадает в неизвестные с признаком заблокирован)
  wire_id_          out integer,  -- найденный  wire_id  из таблицы client_wires
  wire_type_        out varchar,  -- тип ресурса (из таблицы client_wires по wire_id)
  service_group_id_ out integer,  -- группа услуг (из таблицы client_wires по wire_id)
  ext_              out varchar,  -- полное наименование ресурса как указано в первичке
  account_id_       out integer,  -- ссылка на балансовый счет (обычно таблицы client_wires по wire_id)
  is_trans_         out integer   -- признак того, что ресурс транзитный и не нужно считать стоимость
)
as
begin
  null;
end;

В процедуре можно добавить логику поиска ресурса, которая не реализована в поставляемом тарификаторе. Процедуру также не обновляет обновление системы.

 

В случае, если вы не смогли реализовать свою логику обработки/тарификации звонков обращайтесь в службу технической поддержки системы АСР Platex®. Возможно по вашей просьбе будет изменена логика работы тарификатора или добавлены пользовательские процедуры.