Jump to content

Recommended Posts

Posted
20 часов назад, Andrei сказал:

И получаю ошибку по непонятной причине. Вроде формат точно такой же как в приведенном на скриншоте примере. И в чем проблема - не понятно

Полдня экспериментировал - так и не понял в чем проблема.

 

update: проблема оказалась в  кодировке загружаемого файла, я его готовлю на компе с виндой и кодировка получается win1251, так что перед загрузкой в биллинг его надо обязательно конвертнуть в utf-8.

Иначе биллинг его не понимает:

Цитата

12.12.2024 12:42:05 ERROR   LWP32669 [json_session.cpp:94:Read]
Token exception: syntax error on input: "{"id":1,"method":"importPhoneCategories",
"params":{"tar_id":93,"cat_id":10,"timefrom ":"2024-11-01 14:58:00","phone_categories":[{"zone_num":"8",
"zone_descr":,"class_name":,
"cat_descr":,"above":3.3443,"perm_above":0.0,"round_seconds":1,"free_seconds":0,"includes":0,"direction":1}]}}"

 

 

  • 1 month later...
  • Replies 500
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Posted
В 11.12.2024 в 23:33, dereiff сказал:

чтобы тарифицировать

А вы не практиковали парсер cdr-ок, который умел бы преобразовывать дату-время звонка из вида "Sun Dec 01 14:58:51 2024" в вид, который переваривает телефонный агент ЛБ?

Posted
15 часов назад, Andrei сказал:

А вы не практиковали парсер cdr-ок, который умел бы преобразовывать дату-время звонка из вида "Sun Dec 01 14:58:51 2024" в вид, который переваривает телефонный агент ЛБ?

 

На первый взгляд формат вполне себе разбираемый через текстовый парсер биллинга, 

dateformat = %a %b %d %H:%M:%S %Y

https://cplusplus.com/reference/ctime/strftime/

 

Posted
1 час назад, dereiff сказал:

через текстовый парсер

Я только никак не пойму - как устанавливается связь между парсером из /usr/local/billing/parsers/ и конфигами из /usr/local/billing/parsers-configs/
Просто имена должны быть одинаковы, например asterisk.conf и asterisk.pl ?
В настройках агента можно выбрать только парсер:
image.thumb.png.1e1ae75813b3695950e258a75872a337.png

 

Для начала пытаюсь разобрать дату.

В cdr только дата и время (20241201.cdr)  :

Sun Dec 01 14:58:51 2024
 

Сделал файл asterisk.conf

pattern = ([A-Za-z]{3})+[[:space:]]+([A-Za-z]{3})+[[:space:]]+([0-9]{2})+[[:space:]]+([0-9]{2})\:([0-9]{2})\:([0-9]{2})+[[:space:]]+([0-9]{4})
datetime = 1
dateformat = %a %b %d %H:%M:%S %Y


Пробую:

 cat 20241201.cdr | ./asterisk.pl
Error: cannot parse line Sun Dec 01 14:58:51 2024


В чем ошибка не понятно и как это вообще отлаживать?

Posted
31 минуту назад, pppoetest сказал:

asterisk.pl

Там ничего не трогал

 

#!/usr/bin/perl

$|++;

## Uncoment the following block if PBX requires authentication. #######
#open (OUT,">&3")
#print OUT "Reguired-Login\n"
#print OUT "Required-Password\n"
## End of the block ##

while(<STDIN>)
{
  if( $_ =~ m/^(\d+);(\d+);(\d{4}-\d{2}-\d{2}T\d\d:\d\d:\d\d);
  ([^;]*);([^;]*);([^;]*);([^;]*);(\d*);(\d*);$/ )
  {
    if( $2 eq "0" )
    {
      next;
    }
    print "direction=$1;duration=$2;timefrom=$3;numfrom=$4;numto=$5;trunk_in=$6;
    trunk_out=$7;uniqueid=$8;cause=$9;\n";
  }
  else
  {
    print STDERR "Error: cannot parse line $_\n";
  }
}

 

Posted
31 минуту назад, Andrei сказал:

(\d{4}-\d{2}-\d{2}T\d\d:\d\d:\d\d)

Тут формат времени жёстко прописан в регулярке

 

1 час назад, Andrei сказал:

Error: cannot parse line Sun Dec 01 14:58:51 2024

В строке файла одна дата, а не стандартный csv? Напишите свой конвертер, все необходимые поля тут видны.

Posted
13 минут назад, ixi сказал:

Тут формат времени жёстко прописан в регулярке

т.е. надо перловый скрипт тоже перелопатить под свой формат cdr?

 

13 минут назад, ixi сказал:

В строке файла одна дата, а не стандартный csv?

Конечно в строке cdr-ки не одна дата, это я начал отладку с разбора даты. На самом деле строка cdr длинная и там много всего.

13 минут назад, ixi сказал:

Напишите свой конвертер, все необходимые поля тут видны.

Конвертор чего куда? Конвертировать cdr-ки под эти скрипты из поставки ЛБ - не вариант, т.к. эти же cdr-ки используются и в других системах помимо биллинга. Ну и в целом - куча конверторов в разные форматы мне видится порочной практикой. ИМХО правильней настроить парсер биллинга.

 

13 минут назад, ixi сказал:

поля тут видны

Опыта у меня в регулярках почти никакого, поэтому конструкции вида

/^(\d+);(\d+);(\d{4}-\d{2}-\d{2}T\d\d:\d\d:\d\d);
  ([^;]*);([^;]*);([^;]*);([^;]*);(\d*);(\d*);$/

мне не очень понятны.

Почитал тут https://www.riwkus.ru/notes/web/content/regulyarnyie-vyirazheniya-standard-posix-uskoryaem-rabotu-s-dokumentami/ но пока ясность не наступила

(\d+) - это любое колво цифр?

(\d{4}-\d{2}-\d{2}T\d\d:\d\d:\d\d) - это более-менее понятно, дата и время в формате YYYY-MM-DD THH:MM:SS

([^;]*) - это любое кол-во любых символов?

Posted

Вроде примитивно скорректировал перловый скрипт.

Вот такую cdr-ку

Sun Dec 01 14:58:51 2024,1733047131,1733047133,2,83517297240,83517297240,83517297240,var,73512103892,----,188.130.171.67,Yate,188.130.171.25,1,188.130.171.67,188.130.171.25,80BFE688-38AE-EF
11-A6FF-AFF972DA84E3@192.168.0.103,7D643027-00186965-59c45f8-00228b@188.130.171.23,16

 

Вот такой скрипт

while(<STDIN>)
{
  if( $_ =~ m/^([^;]*),([^;]*),([^;]*),([^;]*),([^;]*),([^;]*),([^;]*),([^;]*),([^;]*),([^;]*),([^;]*),([^;]*),([^;]*),([^;]*),([^;]*),([^;]*),([^;]*),([^;]*),([^;]*)$/)
  {
    if( $2 eq "0" )
    {
      next;
    }
    print "duration=$4;timefrom=$1;numfrom=$9;numto=$6;trunk_in=$11;
    trunk_out=$13;cause=$19;\n";
  }
  else
  {
    print STDERR "Error: cannot parse line $_\n";
  }
}

 

разбирает до:

duration=2;

timefrom=Sun Dec 01 14:58:51 2024;

numfrom=73512103892;

numto=83517297240;

trunk_in=188.130.171.67;
trunk_out=188.130.171.25;

cause=16

 

Вопрос - как это соотносится с astrerisk.conf - в нем надо прописать форматы получивших после разбора полей и их последовательность?

 

И при запуске агент LBphone пишет, что он будет использовать совсем другой парсер:

23.01.2025 17:01:20 INFO        0x7fb112fab700  [lb2]   ##################### Run parser ########################
23.01.2025 17:01:20 INFO        0x7fb112fab700  [lb2]   Source: ./cdr
23.01.2025 17:01:20 INFO        0x7fb112fab700  [lb2]   Parser: './parsers/text_parser.bin ./parsers-configs/asterisk.conf'
23.01.2025 17:01:20 INFO        0x7fb112fab700  [lb2]   Directory for save: '/usr/local/billing/cdr'
23.01.2025 17:01:20 INFO        0x7fb112fab700  [lb2]   Phone station ID: 1
23.01.2025 17:01:20 INFO        0x7fb112fab700  [lb2]   AgentId: '5'
23.01.2025 17:01:20 INFO        0x7fb112fab700  [lb2]   Config: '/etc/billing.conf.LBphone'
23.01.2025 17:01:20 INFO        0x7fb112fab700  [lb2]   Log file: '/usr/local/billing/log/lbphone.log'
23.01.2025 17:01:20 INFO        0x7fb112fab700  [lb2]   Log level: 'info'
23.01.2025 17:01:20 INFO        0x7fb112fab700  [lb2]   #########################################################

 

И как его переубедить (если это надо конечно) - не понятно.

Ну и где смотреть причины, по которым cdr-ка не распарсилась биллингом? lbphone в режиме debug запускал, но в лог ничего про парсинг cdr-ок не пишется.

Posted

@Andrei вы смотрите разные парсеры. asterisk.conf это конфиг для стандартного текстового парсера,  в нем только регулярка по разбору строки и соответствие полей указывается, плюс преобразование даты.

asterisk.pl - это целый отдельный парсер, который на stdin получает строки CDR, а в stdout кидает строки для биллинга

т.е. asterisk.conf и asterisk.pl не связаны, это два разных способа разобрать информацию из CDR

 

Надо для начала выбрать что из этого вы хотите править. Ну а потом добавить свой измененный конфиг или парсер в  биллинг - https://docs.lanbilling.ru/50/agents/lbphone/set_parsers/

Posted
21 час назад, dereiff сказал:

asterisk.conf и asterisk.pl не связаны, это два разных способа разобрать информацию из CDR

Да, это я уже понял.

В логе

Parser: './parsers/text_parser.bin ./parsers-configs/asterisk.conf'

Поскольку у меня тесктовые cdr, то их будет обрабатывать именно парсер text_parser.bin на основании конфига с регулярками из asterisk.conf.  asterisk.pl я ковырял зря, он тут не участвует.

Пробую этот конфиг править, но пока безуспешно.

CDR:

Sun Dec 01 14:58:51 2024,1733047131,1733047133,2,83517297240,83517297240,83517297240,var,73512103892,----,188.130.171.67,Yate,188.130.171.25,1,188.130.171.67,188.130.171.25,80BFE688-38AE-EF
11-A6FF-AFF972DA84E3@192.168.0.103,7D643027-00186965-59c45f8-00228b@188.130.171.23,16

 

Паттерн в конфиге:

pattern = (([A-Za-z]{3})+[[:space:]]+([A-Za-z]{3})+[[:space:]]+([0-9]{2})+[[:space:]]+([0-9]{2})\:([0-9]{2})\:([0-9]{2})+[[:space:]]+([0-9]{4})),+

pattern = ([0-9]*)  , ([0-9]*)  ,([0-9]*), ([0-9]*)    , ([0-9]*)    , ([0-9]*)   , ([^;]*) , ([0-9]*)    , ([^;]*) , ([^;]*)        , ([^;]*) , ([^;]*)       ,+

pattern = ([0-9]*) , ([^;]*)        , ([^;]*)        , ([^;]*)                                            , ([^;]*)                                         , ([^;]*)

datetime = 1
ani = 9
dnis = 6
duration = 4
trunk_in = 11
trunk_out = 13
dateformat = %a %b %d %H:%M:%S %Y

 

Основывался на  https://docs.lanbilling.ru/48/agents/lbphone/set_parsers/#text_example

 

При попытке скормить эту cdr биллингу  в /usr/local/billing/cdr/arc получаю 3 файла

20241202.cdr_20250123T204514.403834.log - пустой

20241202.cdr_20250123T204514.403834.parsed - пустой (не распарсило?)

20241202.cdr_20250123T204514.403834.raw - тут cdr-ка

 

В статистике звонков тестовой учетки пусто - не распарсило? не смотгло сопоставить номерА с учеткой? не смогла протарифицировать не найдя направление? Из доки все это не понятно. Как провести диагностику? Запуск lbphone в режиме debug ничего не дает.

 

Posted
В 23.01.2025 в 18:48, dereiff сказал:

парсеры

Парсинг cdr-ок победил, но с  нелогичным для меня результатом.

Начало cdr выглядит так:

Sun Dec 01 14:58:51 2024,1733047131,1733047133,2,83517297240,83517297240,83517297240,var,73512103892 ,----,188.130.171.67,Yate, 188.130.171.25 ....

(Dec 01 14:58:51 2024 абонент 73512103892  звонил на 83517297240 и длительность разговора 2 сек)

Паттерн в конфиге

pattern = (([A-Za-z]{3})+[[:space:]]+([A-Za-z]{3})+[[:space:]]+([0-9]{2})+[[:space:]]+([0-9]{2})\:([0-9]{2})\:([0-9]{2})+[[:space:]]+([0-9]{4})),+
pattern = ([0-9]*),([0-9]*),([0-9]*),([0-9]*),([0-9]*),([0-9]*),([^;]*),([0-9]*),([^;]*),([^;]*),([^;]*),([^;]*),+
pattern = ([0-9]*),([^;]*),([^;]*),([^;]*),([^;]*),([^;]*)

 

дата-время - 1е поле, понятно

длительность - должна бы быть 4м полем, но по указанному паттерну она парсится в поле номер 11

номер Б - должен бы быть 7м полем, но по указанному паттерну она парсится в поле номер 14

и т.д.

Но ладно, распарсилось, уже хорошо.

 

Но звонок не соотнесся ни с один абонентом (хотя телефонная учетка с номером 73512103892  у меня создана) и не протарифицировался, хотя тариф учетке назначен (абонентская плата по нему списывается корректно) и  направления и категории в биллинг загружены, в этот тариф добавлены, категория с кодом 83512 в назначенном тарифе есть.

 

В логе ядра:

24.01.2025 22:46:58 WARNING LWP1014 [phonecalc.cpp:899:CalculateCall]   Call tel00520241201:2 is not calculated. Cannot find vgroups for numbers, numfrom: 73512103892[188.130.171.67], numto: 83517297240[188.130.171.25]

 

Не понятно - почему, т.к. парсинг отработал вот так (файл parsed):

cause=16;direction=1;duration=2;numfrom=73512103892;numto=83517297240;timefrom=2024-12-01T15:58:51;trunk_in=188.130.171.67;trunk_out=188.130.171.25;uniqueid=;

  • 5 months later...
Posted

Люди, кто пользуется ланбиллингом, не поделитесь какой-нибудь свежей версией 2.0.50+, желательно для rhel8/9? Надо бы протестировать работу с СОРМ, прежде чем заказывать доработки под себя. Если кому не жалко, в ПМ, в идеале бы все версии за 2024/2025, если там обновления должны быть последовательны

Posted
3 часа назад, msa сказал:

Люди, кто пользуется ланбиллингом, не поделитесь какой-нибудь свежей версией 2.0.50+, желательно для rhel8/9? Надо бы протестировать работу с СОРМ, прежде чем заказывать доработки под себя. Если кому не жалко, в ПМ, в идеале бы все версии за 2024/2025, если там обновления должны быть последовательны

А вы ее активировать сможете? 🙂

Posted
2 часа назад, msa сказал:

Насколько я помню, в лицензии нет ограничений по максимальной версии. А какая-то старая лицензия есть

При переходе на новую версию генерят новый лицензионный ключ, который надо активировать у разработчиков.

  • 2 months later...
Posted

ЛанБиллинг походу меняет формат работы, на сайте теперь висит "Подписка на обновления": 140 000 / год (и туда не входит поддержка)

 

 

Posted

На сайт ведёт ссылка.

Мы кстати не очень довольны, что у них теперь версия только на 6 месяцев, потом они выводят бесячую плашку, что ваша версия устарела

А я не хочу обновляться каждые 6 месяцев :E

 

image.thumb.png.53b95a0814f8b0ba9bc57e308fe81580.png

Posted
57 минут назад, Urs_ak сказал:

"Подписка на обновления": 140 000 / год (и туда не входит поддержка)

Преподносится как забота он нас: если не нужна техподдержка, то можно и не покупать.
Для нас, как пользователя ЛБ, это существенное ухудшение условий.

Я понимаю, что им хочется бутерброд не только с маслом, но и икоркой, но... 😞

 

7 минут назад, Urs_ak сказал:

бесячую плашку

Меня тоже бесит, я спрашивал "как отключить", но разработчики отмалчиваются.

Posted
Цитата

"Подписка на обновления": 140 000 / год (и туда не входит поддержка)

Однако.

Т.е. я так понял обнову качай - вопросы не задавай.

Придётся тогда пока откладывать обновление 8(

 

Posted
1 час назад, No_name сказал:

Т.е. я так понял обнову качай - вопросы не задавай.

Поддержка отдельно продаётся.

Теперь пакет ТП минимум 3 месяца. 

Т.е. теперь если надо в этом году обновиться нормально, это 170-180 тыс. плати

 

Posted
10 часов назад, TheUser сказал:

В складчину уже начали покупать?

Обновления покупать в складчину смысла не имеет - ключ активации только один.

А вот техподдержку вскладчину - вполне. Если не пускать саппорт на сервера для анализа, а только задавать вопросы в HelpDesk 🙂

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...