rins
15.05.2003, 15:43
Привет всем !
Помогите pls с алгоритмом subj.
Исходные данные:
Есть PBX Definity.
Есть подключение по E1.
Есть логи станции.
В логах пишется номер вызывающего/вызываемого абонента.
Есть собств. программа учета звонков.
Есть БД, в которых прописаны коды городов наших филиалов.
Будет БД в которых прописаны коды других городов/стран.
Задача:
Программой определить из номеров 8551433992,4787890000 код города/страны.
Проблема в том, что коды городов в России имеют разную длину. Например:
Аксубаево - 244, Альметьевск - 8553 и тд.
Может кто-то решал такую задачу ?
Буду благодарен за любые идеи.

Oleg M.
15.05.2003, 16:15
Программа учета звонков должна иметь эту функцию. Естественно, базу данных кодов городов этой программы надо периодически обновлять. Какую программу для биллинга вы используете?

rins
15.05.2003, 16:32
Прграмма своя.
Лог имеет такой формат:
<pre>
140503 0839 8432763700 3274 00022 802
140503 0840 8555924086 3235 00107 802
140503 0840 2551282 3295 00245 802
140503 0840 8437320644 3226 00625 802
140503 0840 2438561 3256 00007 802
140503 0840 0 802 3264 420240 00553
140503 0840 801 3208 3340 00023
140503 0841 0 802 3295 827921723# 00022
140503 0841 0 802 3217 657118 00308
140503 0841 2438561 3265 00021 802
140503 0842 2458400 3235 00105 802
140503 0842 8553254303 3310 00154 802
</pre>
Четырехзначные - внутренние. По базе владельцев найду. Семи и шестизначные - наши городские. С ними то-же все ясно.
А вот из остальных нужно выдрать код города.

Oleg M.
15.05.2003, 16:46
Своей программой делом помочь сложно, лучше воспользоваться профессиональным решением. У нас также стоят 3 дефинити, объединенные по UDP и логи обсчитываются Фонэксом без проблем.

Если же делать своими руками - стандартный алгоритм: по первой цифре ПОЛНОГО номера выбираем диапазон кодов, начинающихся с этой цифры, потом вырезаем по 1 цифре из номера, добавляем к первой цифре и сравниваем с кодами городов. Если совпало с кодом города, то проверяем количество оставшихся цифр номера, если совпало с нумерацией того города, код которого вычислили, то ОК. Иначе берем следующую цифру и смотрим ее. Должна быть еще проверка на коды, отсутствующие в базе данных, чтобы программа не зациклилась.

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

TMC
15.05.2003, 19:08
Все таки необходимо исходить из того, что междугородний номер - это 10 цифр, причем первые три цифры - код зоны. Например Красноярский край - код 391, Норильск 3919 (нумерация в городе 6-знаков), Дудинка -39111 нумерация в городе 5-знаков). Цифры после кода зоны как правило определяют код города внутри зоны. Так при звонке из Норильска в Дудинку абонент набирает код 211, здесь "двойка" - признак зоновой связи, то же, что для звонка из Москвы в Подмосковье.

rins
16.05.2003, 07:38
Я полностью согласен насчет спец. ПО.

Олег, а вообще, где можно нарыть коды и планы нумераций городов РФ, что-бы импортировать в свою БД через DOM, text file, SOAP и т.д. ?

Спасибо.
P.S.
А что такое "Фонэкс " ? И где его нарыть ?