Список форумов Asterisk Forum Asterisk Forum
The Asterisk Open Source PBX - Russian Community
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ПравилаПравила   ГруппыГруппы   ИзбранноеИзбранное    LinksСсылки   РегистрацияРегистрация 
 RSSRSS   ПрофильПрофиль   Войти и проверить личные сообщения   ВходВход 

как различать принадлежность номера к области?
На страницу Пред.  1, 2
 
Список форумов Asterisk Forum -> Asterisk IP PBX    вывод темы на печать
Предыдущая тема :: Следующая тема  
Автор Сообщение
koqep



Зарегистрирован:
26.01.2010
Сообщения: 221
Откуда: Челябинская обл.

Статус: Оффлайн 

СообщениеДобавлено: Чт Май 31, 2012 08:00    Заголовок сообщения:

нормально открывается, просто там html-ки по 4-е метра, вот и долго сам браузер их открывает.
_________________
Jabber конференция
сервер: conference.jabber.ru
комната: asterisk
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора Skype Name Jabber ID Телефон
awsswa



Зарегистрирован:
28.04.2012
Сообщения: 1642
Откуда: Russia, Пермь

Статус: Оффлайн 

СообщениеДобавлено: Пт Июл 13, 2012 04:35    Заголовок сообщения:

Скрипт для заливки в базу mysql был опубликован на страницу раньше. Вот тут мой вариант для запроса номера сотового телефона из справочника.
Приветствуется критика моего запроса в mysql. Имя базы сменил только на "codes"

Предположим что входящий звонок приходит сюда:

[incoming-gorod]
exten => 2009XXX,1,NoOp( == входящий звонок с номера == ${CALLERID(number)} == )
exten => 2009XXX,n,GotoIF($[${LEN($CALLERID(number)})} != 10 ]?nesotovik) ; номер не равен 10 знакам ? нафиг его
exten => 2009XXX,n,GotoIF($[${CALLERID(number):0:1} != 9 ]?nesotovik) ; начало номера не на 9 ? это не сотовый
exten => 2009XXX,n,macro(seekmobnumber,${CALLERID(number)})
exten => 2009XXX,n(nesotovik),NoOp( == обработка далее == )

[macro-seekmobnumber]
exten => s,1,Set(sql=SELECT `operator`,`region` FROM `codes` WHERE ${ARG1:3:9} BETWEEN `code_from` AND `code_to` AND `code_abcdef`=${ARG1:0:3})
exten => s,n,NoOp( == номер телефона == ${ARG1:0:3} == ${ARG1:3:9} == )
exten => s,n,MYSQL(Connect connid localhost login password asterisk utf8)
exten => s,n,GotoIf($["${connid}" = ""]?error,1) ;если ошибка то выход
exten => s,n,MYSQL(Query resultid ${connid} ${sql})
exten => s,n,MYSQL(Fetch foundRow ${resultid} operator region)
exten => s,n,MYSQL(Clear ${resultid})
exten => s,n,MYSQL(Disconnect ${connid})
exten => s,n,NoOp( == название == ${operator} == ${region} == )
exten => s,n,Set(CDR(userfield)=${operator},${region}) ;результат запроса сюда
exten => error,1,NoOp( == error ! == )
exten => error,n,MYSQL(Disconnect ${connid})
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Skype Name
awsswa



Зарегистрирован:
28.04.2012
Сообщения: 1642
Откуда: Russia, Пермь

Статус: Оффлайн 

СообщениеДобавлено: Вт Авг 21, 2012 08:43    Заголовок сообщения:

Поиск операторов начинающихся на 3 (по аналогии на страницу раньше)

Структура таблицы
Код:

DROP TABLE IF EXISTS `abc_codes_3`;
CREATE TABLE IF NOT EXISTS `abc_codes_3` (
  `code_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `code_abcdef` smallint(3) NOT NULL,
  `code_from` int(11) NOT NULL,
  `code_to` int(11) NOT NULL,
  `code_volume` int(11) NOT NULL,
  `operator` varchar(400) NOT NULL,
  `region` varchar(400) NOT NULL,
  UNIQUE KEY `code_id` (`code_id`),
  KEY `code_abcdef` (`code_abcdef`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=116182 ;


Заливка таблицы
Внимательно смотрим код (россвязь имеет таблицу за знаком | его необходимо заменить, я заменил на минус)
Цитата:

#!/bin/bash

DOWNFILE='http://www.rossvyaz.ru/docs/articles/ABC-3x.html';
TMPDIR='/tmp';
DB_USER='root';
DB_PASSWORD='ПАРОЛЬ';
DATABASE_NAME='asterisk';
DB_TABLE_NAME='abc_codes_3';

wget -c -q -O - $DOWNFILE | grep "^<tr>" | sed -e 's/<\/td>//g' -e 's/<tr>//g' -e 's/<\/tr>//g' -e 's/[\t]//g' -e 's/^<td>//g' -e 's/<td>/;/g' -e 's/|/-/g' | iconv -c -f WINDOWS-1251 -t UTF8 > $TMPDIR/$DB_TABLE_NAME
#Имя файла = имя таблицы
mysqlimport --user=$DB_USER --password=$DB_PASSWORD --columns "code_abcdef,code_from,code_to,code_volume,operator,region" --local --fields-terminated-by=";" --lines-terminated-by="\\n" $DATABASE_NAME $TMPDIR/$DB_TABLE_NAME



тоже самое делаем для
http://www.rossvyaz.ru/docs/articles/ABC-4x.html
http://www.rossvyaz.ru/docs/articles/ABC-8x.html
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Skype Name
h1Nt



Зарегистрирован:
24.03.2008
Сообщения: 4

Статус: Оффлайн 

СообщениеДобавлено: Вс Фев 24, 2013 09:55    Заголовок сообщения:

 awsswa @ Fri Jul 13, 2012 4:35 am писал(а):
... Вот тут мой вариант для запроса номера сотового телефона из справочника.
Приветствуется критика моего запроса в mysql...


Я сделал через коннектор OBDC + реалтайм, используя ваши наработки (спасибо вам за это).
Строка запроса func_odbc получилась такой:
Код:

[SEEKAREA]
dsn=asterisk
readsql=SELECT region FROM codes WHERE ${ARG1:3:9} BETWEEN code_from AND code_to AND code_abcdef=${ARG1:0:3}

Запрос из диалплана тоже в одну строку:
Код:

...
exten => _X.,n,Set(CDR(userfield)=${ODBC_SEEKAREA(${CALLERID(num):2})})
...

Я вообще показываю город/регион операторам в телефончики CALLERID(name), но тут уже дело хозяйское =)
Запрос выполняется гораздо быстрее, да и кода меньше.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
aven
Модератор


Зарегистрирован:
07.09.2007
Сообщения: 1887
Откуда: Ухта

Статус: Оффлайн 

СообщениеДобавлено: Вс Фев 24, 2013 11:31    Заголовок сообщения:

А есть база для международных номеров?
_________________
Gentoo Linux || Asterisk 13.1-cert2
Решения телефонии на базе Asterisk || http://it-need.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
h1Nt



Зарегистрирован:
24.03.2008
Сообщения: 4

Статус: Оффлайн 

СообщениеДобавлено: Пн Фев 25, 2013 06:09    Заголовок сообщения:

В таком виде, пожалуй, не будет.
Вот такая есть http://lynks.ru/file_download/9/destinations.sql
В принципе ничего не мешает в обработке исходящих/входящих международных звонков прописать отдельную функцию.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
h1Nt



Зарегистрирован:
24.03.2008
Сообщения: 4

Статус: Оффлайн 

СообщениеДобавлено: Ср Апр 10, 2013 18:46    Заголовок сообщения:

 aven @ Sun Feb 24, 2013 11:31 am писал(а):
А есть база для международных номеров?

Код:
[CHECK_WORLD_NUM]
dsn=asterisk
readsql=SELECT name FROM destinations WHERE prefix IN ('${ARG1:0:1}', '${ARG1:0:2}', '${ARG1:0:3}', '${ARG1:0:4}', '${ARG1:0:5}', '${ARG1:0:6}', '${ARG1:0:7}') ORDER BY LENGTH (prefix) DESC

Код:
exten => _X.,1,Set(CDR(userfield)=${ODBC_CHECK_WORLD_NUM(${EXTEN})})
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
awsswa



Зарегистрирован:
28.04.2012
Сообщения: 1642
Откуда: Russia, Пермь

Статус: Оффлайн 

СообщениеДобавлено: Сб Сен 21, 2013 06:25    Заголовок сообщения:

Ну что продолжаем ?
Теперь варианты для продвинутых - те же запросы но через AGI

Прежде всего меняем структуры таблиц - запрос с сайта делаем с разделением на города и области
да, бывает кривой запрос, когда город выглядит не верно, когда таблица выглядит как
Правильно выглядящая таблица: city Пермь region Пермский край
Не правильно выглядящая таблица: city Пермский край region пусто
Ну уж так набит справочник - тут или город или регион - и я выбрал поле город город - потому как регион Ханты Мансийский Автономный Округ пришедший на телефон вообще никуда не влезет


AGI возвращает два значения по русски и в транслите по английски city=Пермь и cityeng=perm
можете использовать который вам подходит


Код:

root@voip:/var/lib/asterisk/agi-bin# cat callerid3.agi
#!/usr/bin/php -q
<?php

require "phpagi.php";
$agi = new AGI();

$ca1 = $argv[1];
$ca2 = $argv[2];

//$ca1 = '343';
//$ca2 = '3794910';
//abc_codes_3 - имя таблицы из базы

$agi->verbose("Код города равен  : ".$ca1);
$agi->verbose("Номер равен       : ".$ca2);

$db = 'asterisk';
$dbuser = 'asterisk';
$dbpass = 'password';
$dbhost = 'localhost';

$connection = mysql_connect($dbhost,$dbuser,$dbpass) or die("Could not connect $db :".mysql_error());
mysql_select_db($db, $connection ) or die("Could not select:".mysql_error());
$sql = "SELECT city FROM abc_codes_3 WHERE '$ca2' BETWEEN code_from AND code_to AND code_abcdef='$ca1' ";
$agi->verbose("Запрос: ".$sql);
mysql_query ("SET NAMES utf8");
$queryResult = mysql_query ($sql) or die("Invalid query: " . mysql_error());
$data = mysql_fetch_array( $queryResult );
$agi->verbose($data['city']);
//обрезаем пробелы в начале и в конце
$cityfull = trim($data['city']);
//берем только первое слово из названия
$city = strstr($cityfull,' ',true);


function GetInTranslit($string) {
        $replace=array(
                "'"=>"",
                "`"=>"",
                "а"=>"a","А"=>"a",
                "б"=>"b","Б"=>"b",
                "в"=>"v","В"=>"v",
                "г"=>"g","Г"=>"g",
                "д"=>"d","Д"=>"d",
                "е"=>"e","Е"=>"e",
                "ж"=>"zh","Ж"=>"zh",
                "з"=>"z","З"=>"z",
                "и"=>"i","И"=>"i",
                "й"=>"y","Й"=>"y",
                "к"=>"k","К"=>"k",
                "л"=>"l","Л"=>"l",
                "м"=>"m","М"=>"m",
                "н"=>"n","Н"=>"n",
                "о"=>"o","О"=>"o",
                "п"=>"p","П"=>"p",
                "р"=>"r","Р"=>"r",
                "с"=>"s","С"=>"s",
                "т"=>"t","Т"=>"t",
                "у"=>"u","У"=>"u",
                "ф"=>"f","Ф"=>"f",
                "х"=>"h","Х"=>"h",
                "ц"=>"c","Ц"=>"c",
                "ч"=>"ch","Ч"=>"ch",
                "ш"=>"sh","Ш"=>"sh",
                "щ"=>"sch","Щ"=>"sch",
                "ъ"=>"","Ъ"=>"",
                "ы"=>"y","Ы"=>"y",
                "ь"=>"","Ь"=>"",
                "э"=>"e","Э"=>"e",
                "ю"=>"yu","Ю"=>"yu",
                "я"=>"ya","Я"=>"ya",
                "і"=>"i","І"=>"i",
                "ї"=>"yi","Ї"=>"yi",
                "є"=>"e","Є"=>"e"
        );
        return $str=iconv("UTF-8","UTF-8//IGNORE",strtr($string,$replace));
}

$cityeng = GetInTranslit ("$city") ;

$agi->verbose("Город: ".$city);
$agi->verbose("City: ".$cityeng);

$agi->set_variable('city', $city);
$agi->set_variable('cityeng', $cityeng);

?>



Заливка таблицы с сайта

Код:

root@voip:/etc/asterisk/script# cat abc-code-3x.sh
#!/bin/bash

DOWNFILE='http://www.rossvyaz.ru/docs/articles/ABC-3x.html';
TMPDIR='/tmp';
DB_USER='root';
DB_PASSWORD='password';
DATABASE_NAME='asterisk';
DB_TABLE_NAME='abc_codes_3';

wget -c -q -O - $DOWNFILE | grep "^<tr>" | sed -e 's/<\/td>//g' -e 's/<tr>//g' -e 's/<\/tr>//g' -e 's/[\t]//g' -e 's/^<td>//g' -e 's/<td>/;/g' -e 's/|/;/g' | iconv -c -f WINDOWS-1251 -t UTF8 > $TMPDIR/$DB_TABLE_NAME

#Сохраню для истории другой вариант
#wget -c -q -O - $DOWNFILE > $TMPDIR/ABC-3x.html
#cat $TMPDIR/ABC-3x.html | grep "^<tr>" | sed -e 's/<\/td>//g' -e 's/<tr>//g' -e 's/<\/tr>//g' -e 's/[\t]//g' -e 's/^<td>//g' -e 's/<td>/;/g' -e 's/|/;/g' | iconv -c -f WINDOWS-1251 -t U
#TF8 > $TMPDIR/abc_codes_31
#cat $TMPDIR/abc_codes_31 | sed 's/;/;;/5' >> $TMPDIR/abc_codes_32
#cat $TMPDIR/abc_codes_32 | sed 's/;//8' | sed 's/;//7' >> $TMPDIR/abc_codes_33
#cat $TMPDIR/abc_codes_33 | sed 's/\r//g' >> $TMPDIR/$DB_TABLE_NAME
#Имя файла = имя таблицы

mysqlimport --user=$DB_USER --password=$DB_PASSWORD --columns "code_abcdef,code_from,code_to,code_volume,operator,city,region" --local --fields-terminated-by=";" --lines-terminated-by="\\n" $DATABASE_NAME $TMPDIR/$DB_TABLE_NAME


Структура таблицы, добавлено еще одно поле - city

Код:

DROP TABLE IF EXISTS `abc_codes_3`;
CREATE TABLE IF NOT EXISTS `abc_codes_3` (
  `code_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `code_abcdef` smallint(3) NOT NULL,
  `code_from` int(11) NOT NULL,
  `code_to` int(11) NOT NULL,
  `code_volume` int(11) NOT NULL,
  `operator` varchar(400) NOT NULL,
  `city` varchar(400) NOT NULL,
  `region` varchar(400) NOT NULL,
  UNIQUE KEY `code_id` (`code_id`),
  KEY `code_abcdef` (`code_abcdef`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=116182 ;



Теперь как все это вызывать:

exten => s,n,GotoIf($[${CALLERID(number):0:1} != 3 ]?nobasetel3) ; номер начинается не на 3 ?
exten => s,n,AGI(callerid3.agi,${CALLERID(number):0:3},${CALLERID(number):3:9})
exten => s,n,NoOp( == ${cityeng} == )
exten => s,n,NoOp( == ${city} == )
exten => s,n,Set(CALLERID(name)=${cityeng})
exten => s,n(nobasetel3),NoOp( === Номер телефона начинается не на 3 === )

Как проверит что agi отрабатывает ?
Убираете комментарии и ставите их в другом месте, во так

//$ca1 = $argv[1];
//$ca2 = $argv[2];

$ca1 = '343';
$ca2 = '3794910';

потом
php callerid3.agi
И стучите по клавише Enter несколько раз, чтоб увидеть выход с отладчика

Если все успешно
получите город по русски и английски в формате UTF8

Все успешно функционирует уже несколько месяцев
не забываем, что для полного справочника страны надо заливать 4 таблицы, на 3, 4, 8, и 9

Передаем пламенный привет лучшему региону нашей страны в формате транлит
hanty - mansiyskiy-yugra avtonomnyy okrug

Спонсорская помощь в виде инвайта на habr приветствуется

В связи с тем что уже поступают вопросы как прикрутить это к FreePBX отвечаем:
Прежде всего редактируем extensions_custom.conf добавляя

[from-trunk-custom]
exten => _X!,1,Noop(== Определение номера ==)
exten => _X!,n,GotoIf($[${CALLERID(number):0:1} != 3 ]?nobasetel3)
exten => _X!,n,AGI(callerid3.agi,${CALLERID(num):0:3},${CALLERID(num):3:9})
exten => _X!,n,NoOp( == ${cityeng} == )
exten => _X!,n,NoOp( == ${city} == )
exten => _X!,n,Set(CDR(userfield)=${cityeng})
exten => _X!,n(nobasetel3),NoOp( === Номер телефона начинается не на 3 === )
exten => _X!,n,Goto(from-trunk,${EXTEN},1)

Потом идем во FreePBX Trunks выбираем наш рабочий транк и в PEER Details
меняем
context=from-trunk на context=from-trunk-custom

Перезагружаем диалплан в asterisk и звонок уже приходит на наш контекст и идет дальше
Теперь в Отчетах CDR Report уже появились поля с Именем города от куда пришел звонок


Последний раз редактировалось: awsswa (Пн Июн 30, 2014 04:18)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Skype Name
alexsun



Зарегистрирован:
29.11.2011
Сообщения: 46

Статус: Оффлайн 

СообщениеДобавлено: Пт Дек 20, 2013 03:17    Заголовок сообщения:

Tele2 запустил онлайн-сервис для определения принадлежности номера мобильного телефона к сотовому оператору и региону России.
http://mnp.tele2.ru/whois.html . Запрос идет типа http://mnp.tele2.ru/gateway.php?9136502088
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Alextransit



Зарегистрирован:
27.10.2008
Сообщения: 187
Откуда: Perm

Статус: Оффлайн 

СообщениеДобавлено: Пт Дек 20, 2013 06:22    Заголовок сообщения:

скормил ему 3 номера. (http://mnp.tele2.ru/gateway.php?)
два определил, а на одном обламался.
а вот когда вбил на http://mnp.tele2.ru/whois.html
то отработал.

интересно.
а в паблике, будет доступна эта информация?
просто лучше это у себя хранить, и обновлять по мере необходимости.

_________________
Алексей Милько
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Телефон
xmaster83



Зарегистрирован:
02.02.2012
Сообщения: 132

Статус: Оффлайн 

СообщениеДобавлено: Сб Мар 01, 2014 05:28    Заголовок сообщения:

А у меня ответ такой Connection timed out:110
на
http://mnp.tele2.ru/gateway.php?921280****

кстати и через http://mnp.tele2.ru/whois.html тоже не работает видать нагнули сервис ))

_________________
FreeBSD X.XX - Asterisk X.XX
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
alexsun



Зарегистрирован:
29.11.2011
Сообщения: 46

Статус: Оффлайн 

СообщениеДобавлено: Вт Сен 02, 2014 08:49    Заголовок сообщения:

Тут в очередной раз обновил с россвязи данные, и посмотрел статистику звонков один номер не определился +797881662** куда идет звонок. А мнп теле2 отработал мтс краснодарский край. Вот такие пироги у россвязи не все так четко - как-то странно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Leon77



Зарегистрирован:
15.09.2008
Сообщения: 756

Статус: Оффлайн 

СообщениеДобавлено: Сб Сен 06, 2014 05:33    Заголовок сообщения:

Госорган, чего ыв хотите-то от них... Всё становится ясно тогда, когда разок исполнителям их позвонить... Им можно только посочувствовать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
whoim



Зарегистрирован:
29.05.2014
Сообщения: 49

Статус: Оффлайн 

СообщениеДобавлено: Вт Мар 24, 2015 09:22    Заголовок сообщения:

Поднял свою mysql-базу для создания апи, обновляется с сайта россвязи, раз в сутки. Перенесенные не учитывает.
Если кому надо - дам доступ, апи простое, ответ в json.
Прикручивал клиентам для "расбрасывания" звонков по менеджерам в зависимости от региона.

Партнеры дают похожий доступ, 2$ месяц, но учитываются перенесенные номера.
Так что вопрос на самом деле прост..
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора Skype Name
andrey1969



Зарегистрирован:
18.01.2010
Сообщения: 109
Откуда: 3/9 царство

Статус: Оффлайн 

СообщениеДобавлено: Вс Июн 28, 2015 17:05    Заголовок сообщения:

Не совсем там по крыму есть ???
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
whoim



Зарегистрирован:
29.05.2014
Сообщения: 49

Статус: Оффлайн 

СообщениеДобавлено: Пн Авг 24, 2015 14:48    Заголовок сообщения:

где именно?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора Skype Name
Zoleg



Зарегистрирован:
21.03.2010
Сообщения: 106

Статус: Оффлайн 

СообщениеДобавлено: Пт Ноя 20, 2015 09:53    Заголовок сообщения:

Для учета перемещения блоков, создал еще mtt_exceptions куда вкидываются блоки исключенные из правил MTT. То есть номера или блоки номеров, которые не актуальны в основной БД MTT.

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

Код Си впихнут в исходник Астера. На выходе получаем кличку оператора и подсовываем любой свободный канал на него с его же симки или верёвки - в общем гоним по каналам этого ОПСОСа.

Код:
    sprintf(query, "SELECT operators.`name` AS operator FROM `mtt_exceptions` AS ex INNER JOIN `mtt_operators` AS operators ON operators.id = ex.operator WHERE `def` =%s AND %s <= `to` AND %s >= `from`",digphone,opcode,opcode);
    debug("QUERY = %s",query);
    ret = msql_get(query);
    debug("Выводим ret=%i в reusable_opsos_separator  ",ret);
    if (ret < 0)
    {
         debug("Ошибка запроса SELECT operators.`name` AS operator FROM `mtt_exceptions в reusable_opsos_separator QUERY = %s",query);
         return -1;
    }   
   
    if (ret == 0)
    {
        sprintf(query, "SELECT operators.`name` AS operator  FROM `mtt_codes` AS ex INNER JOIN `mtt_operators` AS operators ON operators.`id` = ex.operator WHERE `def` =%s AND %s <= `to` AND %s >= `from`",digphone,opcode,opcode);
        debug("QUERY = %s",query);
        ret = msql_get(query);
       
        if (ret < 0)
        {
            debug("Ошибка запроса SELECT operators.`name` AS operator FROM `mtt_codes в reusable_opsos_separator QUERY = %s",query);
            return -1;
        }


Отслеживание изменений такое. Старая БД сравнивается с новой БД. Все отличия кидаются в mtt_exceptions + наши ручные правки. Когда mtt_exceptions станет больше половины можно просто поменять названия mtt_exceptions на mtt и наоборот И цикл замкнется. При такой схеме ежедневные обновления MTT не нужны - они сами не каждый день обновляются.

_________________
АВТОМАТИЗАЦИЯ ДИСПЕТЧЕСКИХ ТАКСИ

УНИКАЛЬНАЯ ТЕХНОЛОГИЯ "ТАКСИ БЕЗ ДИСПЕТЧЕРОВ" - без Java и/или Интренет (только телефоны) http://tet-a-tet.mobi
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Dep3kuu



Зарегистрирован:
03.01.2016
Сообщения: 2

Статус: Оффлайн 

СообщениеДобавлено: Вс Янв 03, 2016 19:20    Заголовок сообщения:

Может я проглядел, в каких-то из скриптов это поправили.
В общем, до открытия этой ветки, сам пилил экспорт из csv файла россвязи в Mysql. Потом увидел здесь готовые скрипты, запустил, сверил - "не бьет".
Проверил коды ответа сервера - данные по http://www.rossvyaz.ru/docs/num/DEF-9x.html обновлялись последний раз в 2012 году.

Свежие данные здесь: http://rossvyaz.ru/docs/articles/DEF-9x.html

Себе буду пилить проверку даты изменения файла перед загрузкой данных и уведомлялку об отсутствии обновлений более 3х месяцев.

ЗЫ: За скрипты спасибо, еще не все осилил, но явно будет проще, чем пилить все с нуля)

UPD: И чет я не понял - либо раньше файлы у них были в 1251, либо непонятно мне зачем вы конвертите кодировки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Wapo



Зарегистрирован:
08.05.2009
Сообщения: 1363
Откуда: СПб.

Статус: Оффлайн 

СообщениеДобавлено: Вс Янв 03, 2016 21:18    Заголовок сообщения:

Уважаемый. Вы, совсем случайно, не заметили что ГОДЫ-ВЕКА меняются? У них (россвязь) все меняется исключительно по плану: с первого..... и т.д.
А скоро .... у них от виндоУз останется что-то национальное..... Smile

_________________
P4 3.0 + 1Gb CentOS 5.8 Aster 1.8.16
Не люблю gui-сборки: натуральный продукт вкуснее.
И еще: я ПРОФИ так как НЕ ЛЕНЮСЬ читать литературу.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора Skype Name
awsswa



Зарегистрирован:
28.04.2012
Сообщения: 1642
Откуда: Russia, Пермь

Статус: Оффлайн 

СообщениеДобавлено: Вт Янв 12, 2016 07:13    Заголовок сообщения:

Убрал перекодировку - разбил скрипт на части

DOWNFILE='http://rossvyaz.ru/docs/articles/DEF-9x.html';
TMPDIR='/tmp';
DB_USER='логин';
DB_PASSWORD='пароль';
DATABASE_NAME='имя-базы';
DB_TABLE_NAME='abc_codes_9';

wget -c -q -O - $DOWNFILE > $TMPDIR/DEF-9x.html
cat $TMPDIR/DEF-9x.html | grep "^<tr>" | sed -e 's/<\/td>//g' -e 's/<tr>//g' -e 's/<\/tr>//g' -e 's/[\t]//g' -e 's/^<td>//g' -e 's/<td>/;/g' -e 's/|/;/g' > $TMPDIR/abc_codes_91
cat $TMPDIR/abc_codes_91 | sed 's/;/;;/5' >> $TMPDIR/abc_codes_92
cat $TMPDIR/abc_codes_92 | sed 's/;//8' | sed 's/;//7' >> $TMPDIR/abc_codes_93
cat $TMPDIR/abc_codes_93 | sed 's/\r//g' >> $TMPDIR/$DB_TABLE_NAME

#Имя файла = имя таблицы

mysqlimport --user=$DB_USER --password=$DB_PASSWORD --columns "code_abcdef,code_from,code_to,code_volume,operator,city,region" --local --fields-terminated-by=";" --lines-terminated-by="\\n" $DATABASE_NAME $TMPDIR/$DB_TABLE_NAME

_________________
платный суппорт по мере возможностей
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Skype Name
Dep3kuu



Зарегистрирован:
03.01.2016
Сообщения: 2

Статус: Оффлайн 

СообщениеДобавлено: Пн Фев 01, 2016 11:33    Заголовок сообщения:

 Wapo @ Пн Янв 04, 2016 03:18 писал(а):
Уважаемый. Вы, совсем случайно, не заметили что ГОДЫ-ВЕКА меняются? У них (россвязь) все меняется исключительно по плану: с первого..... и т.д.
А скоро .... у них от виндоУз останется что-то национальное..... Smile


Заметил, потому и обратил внимание на даты. А написал просто чтобы другие (как я), кто зайдут сюда из гугла, сразу видели в чем может вылезти ошибко)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
whoim



Зарегистрирован:
29.05.2014
Сообщения: 49

Статус: Оффлайн 

СообщениеДобавлено: Ср Сен 28, 2016 01:36    Заголовок сообщения:

кто может мнп делится, в обмен на что нибудь?
_________________
облачные сервера asterisk/freepbx/a2billing/espocrm с полной техподдержкой, от 1490-мес. skype: whoim2, whoim@asterisk.ru
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора Skype Name
Список форумов Asterisk Forum -> Asterisk IP PBX На страницу Пред.  1, 2 Ответить на тему
Страница 2 из 2

Добавить в Избранное

 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
You cannot attach files in this forum
You cannot download files in this forum