Техническое руководство > Регистрация ПТД в системе > Изменение логики работы тарификатора телефонии [●] | « пред. | след. » |
Для каждого вызова процедуры регистрации можно дополнительно обработать передаваемые данные от парсера, тем самым менять логику регистрации данных. Рекомендуется использовать данную возможность в случае, если нельзя изменить парсер, или в парсере "неудобно" делать логику предобработки.
Дополнительная обработка выполняется с помощью вызова функции 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®. Возможно по вашей просьбе будет изменена логика работы тарификатора или добавлены пользовательские процедуры.