Snussi's home in the web space
Блог
Ремонт
Анекдоты
Статьи
Нафигатор
Жесткая привязка номера
Динамическая жесткая привязка
Использование Asterisk DB
Использование MySQL
Настройка связи с MySQL
Использование MySQL в диалплане
Категории
сервер
(1)
телефоны
(3)
диалплан
(15)
sip.conf
(6)
extensions.conf
(14)
внутренние номера
(8)
постановка задачи
(1)
начальная настройка
(2)
mysql
(7)
iax.conf
(2)
внешние номера
(2)
биллинг
(2)
php
(4)
прочее
(2)
факс
(1)
очередь
(1)
конференц-колл
(1)
features.conf
(1)
Короткие номера и MySQL
25.04.2011
Следующий этап – предварительно проработать возможность набора по коротким номерам. Существует несколько вариантов (кстати, это вообще свойственно астериску) выполнить такой фокус.
Жесткая привязка номера
Тут все просто. Добавляем в диалплан правило набора жесткого номера и приписываем длинный номер.
В качестве примера – короткий номер
123
будет набирать длинный (хотя, в качестве примера я взял внутренний
1261
[internal_phones]
exten => 123,1,NoOp(Redirection 123)
exten => 123,n,Dial(SIP/1261)
exten => 123,n,Hangup()
Как говориться – дешево и сердито :)
Проблема наступает тогда, когда необходимо таких переадресаций сделать, скажем, 100. Соответственно, у нас добавится 300 строк в диалплан и редактировать их станет кошмаром. Более того, очень сложно будет, например, вписать одну дополнительную строку в каждый блок переадресации.
В общем, этот вариант хорош тогда, когда количество номеров переадресаций невелико. Ну и, пожалуй, в качестве плюса можно указать то, что этот вариант немного более устойчив от вшених изменений, чем дальнейшие, т.к. все жестко прописано в файле.
Динамическая жесткая привязка
Следующей моей идеей было:
вынести переадресации в отдельный файл, чтобы не загаживать основной диалплан (файл, разумеется, подключить при помощи include);
сам файл формировать программно на основании списка дополнительных номеров (эту задачу можно было бы запускать по Cron).
Сразу скажу – почему этот вариант я даже не стал пробовать (тоже в виде красивого списка :)
пришлось бы либо часто перегружать диалплан, либо смириться с добавлением новых номеров, скажем, раз в день;
"внутри" астериска диалплан был бы слишком большой, что усложняло бы отладку, да и увеличивало нагрузку;
нельзя было бы менять этот файл через сам астериск (например, набрав комбинацию
*123*1262*
на телефоне – установить новую переадресацию).
Из плюсов я бы отметил наглядность редактирования, да пожалуй и все.
Использование Asterisk DB
Так же не стал пробовать.
Здесь из плюсов:
возможность редактирования с телефона;
простой диалплан без необходимости перезагрузок.
Из минусов – нет наглядности. Т.е., сложно увидеть глазами – куда переадресовывается номер 123 или какие короткие номера сопоставлены номеру 1261.
Использование MySQL
Как вы уже догадались, именно этот вариант я и выбрал, т.к. он состоит из одних плюсов:
можно редактировать как из астериска, так и из любого средства работы с MySQL, плюс ко всему всегда можно дописать веб-интерфейс;
можно формировать список из внешних источников, делать запросы и тд;
сам диалплан достаточно простой.
В общем, это мой случай :)
Временно сформируем задачу так:
все четырехзначные номера, начинающиеся на
, искать в БД и пробовать набрать через SIP
Настройка связи с MySQL
Первым делом, я поставил
MySQL
. Эту часть я здесь расписывать не буду. Напомню только о необходимости добавить его в автозагрузку и создать пользователя для asterisk.
Создаем базу (я назвал ее
asterisk
) и в ней таблицу с двумя полями:
CREATE TABLE `asterisk`.`tbl_short_numbers` (
`short_number` varchar(10) NOT NULL,
`long_number` varchar(50) NOT NULL,
PRIMARY KEY (`short_number`)
Соответственно, в поле
short_number
(оно уникально) храниться короткий номер, а в
long_number
– номер для переадресации.
Сразу внесем номер для переадресации в тестовых целях (при наборе
6261
набрать
1261
):
insert ignore into tbl_short_numbers
(short_number,long_number)
values
('6261','1261')
Мы будем подключаться к MySQL через
ODBC
. На всякий случай – укажу как поставить ODBC через yum.
yum install -y unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel mysql-connector-odbc asterisk18-odbcКороткие номера и MySQL | Asterisk | Snussi's home in the web space
Материал перенесён из старой базы знаний ATC-IP и оформлен в едином стиле нового сайта.