Для начала скачиваем базу кодов:
wget -N
www.rossvyaz.ru/docs/articles/DEF-9x.html
wget -N
www.rossvyaz.ru/docs/articles/ABC-3x.html
wget -N
www.rossvyaz.ru/docs/articles/ABC-4x.html
wget -N
www.rossvyaz.ru/docs/articles/ABC-8x.html Создаем таблицу:
CREATE TABLE `abcdef` (
`def` smallint(6) NOT NULL,
`start` int(11) NOT NULL,
`finish` int(11) NOT NULL,
`count` int(11) NOT NULL,
`operator` varchar(64) NOT NULL DEFAULT '',
`region` varchar(128) NOT NULL DEFAULT '',
`region_last` varchar(64) DEFAULT NULL,
`region_first` varchar(64) DEFAULT NULL,
KEY `a_b` (`def`,`start`),
KEY `a` (`def`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Создаем хранимку:
CREATE DEFINER=`root`@`localhost` FUNCTION `abcdef_region`(n char(10)) RETURNS varchar(64) CHARSET utf8
BEGIN
DECLARE l VARCHAR(3);
DECLARE r VARCHAR(7);
DECLARE tmp VARCHAR(64);
DECLARE tmp2 VARCHAR(64);
DECLARE i INT;
SET l=LEFT(n, 3);
SET r=RIGHT(n, 7);
SELECT region_last INTO tmp FROM abcdef where `def`=l and `start`<=r and `finish`>=r;
IF (length(TRIM(tmp))=0 OR tmp like NULL) THEN
SET tmp='---';
END IF;
RETURN tmp;
END
Парсим скачанные файлы:КодПрописываем хп для использования в диалплане через odbc (мой случай):
func_odbc.conf:
[CALLREGION]
dsn=MySQL_asterisk_utf8
readsql=SELECT abcdef_region('${SQL_ESC(${ARG1})}');
Использование:
NoOp(${ODBC_CALLREGION(${CALLERID(num)})});