Asterisk RealTime IAX


Настройка iax.conf

Вы можете описать Ваших iax пользователей в файле и использовать RealTime одновременно.

Настройки в файле extconfig.conf

Добавьте в этот файл нижеприведенную строку, заменяя название полей на те значения, которые Вам необходимы:



iaxusers => mysql,asterisk,iax_buddies
iaxpeers => mysql,asterisk,iax_buddies


Вы можете заменить mysql на odbc, если вы используете odbc.
Вы можете заменить поле asterisk на имя базы данных, которое у Вас используется.
Вы можете заменить iax_buddies на то имя таблицы, которая у Вас создана для хранения данных.

Таблица базы данных

Просто создадим необходимую нам таблицу:

Примечание: Вы можете использовать любое имя таблицы по Вашему желанию. Только проверяйте, чтоб имя таблицы соответствовало тому конфигурационному семейству (family), для которого Вы хотите ее использовать.


#
# Table structure for table `iax_buddies`
#

CREATE TABLE `iax_buddies` (
`name` varchar(30) primary key NOT NULL,
`username` varchar(30),
`type` varchar(6) NOT NULL,
`secret` varchar(200),
`md5secret` varchar(32),
`dbsecret` varchar(100),
`inkeys` varchar(100),
`outkey` varchar(100),
`adsi` enum('yes','no') default 'no',
`auth` varchar(100),
`accountcode` varchar(100),
`amaflags` varchar(100),
`callerid` varchar(100),
`codecpriority` varchar(10) default "host",
`cid_number` varchar(40) default NULL,
`fullname` varchar(40) default NULL,
`context` varchar(100),
`defaultip` varchar(15),
`encryption` varchar(12),
`jitterbuffer` enum('yes','no') default 'no',
`forcejitterbuffer` enum('yes','no') default 'no',
`host` varchar(32) NOT NULL default 'dynamic',
`language` char(5),
`mailbox varchar(80),
`maxauthreq` varchar(4),
`mohinterpret` varchar(100),
`mohsuggest` varchar(100),
`deny` varchar(95),
`permit` varchar(95),
`peercontext` varchar(100),
`qualify` varchar(4),
`qualifysmoothing` enum('yes','no') default 'no',
`qualifyfreqok` int(8) default 60000,
`qualifyfreqnotok` int(8) 10000,
`regexten` varchar(100),
`sendani` enum('yes','no') default 'no',
`setvar` varchar(100) NOT NULL default '',
`sourceaddress` varchar(15),
`timezone` varchar(100),
`transfer` enum('yes','no','mediaonly') default 'yes',
`trunk` enum('yes','no') default 'no',
`disallow` varchar(100),
`allow` varchar(100),
`ipaddr` varchar(15),
`port` integer default 0,
`regseconds` integer default 0
);
CREATE UNIQUE INDEX iax_buddies_username_idx ON iax_buddies(username);

Замечание:
Порядок следования полей `disallow` и `allow` в определении таблицы должен соответствовать Вашим требованиям,
если Вы хотите, сначала запретить ненужные кодеки, а потом разрешить нужные, то порядок их следования должен быть таким, как указано выше.

Замечания:
  • Для пользователя типа "user" поле "secret" может содержать несколько значений, все значения участвуют в проверке. Для пользователя типа "peer" будет использоваться только последнее указанное значение.
  • В версии 1.4.x параметр "notransfer" был объявлен устаревшим и удален из описания таблицы, вместо него используйте параметр transfer.

  • В версиях 1.4.x появились новые поля (может они, и раньше появились, но небыли описаны в таблице):
    • adsi - Включить (yes) или выключить (no) поддержку ADSI (Analog Display Services Interface).
    • codecpriority - Управление алгоритмом выбора кодека. Возможные значения: caller, host, disabled, reqonly. По умолчанию: "host". Только для типа "user".
    • fullname и cid_number - собственно части поля имени и номера из CallerID.
    • encryption - алгоритм для создания хеша.
    • jitterbuffer - Включить (yes) или выключить (no) поддержку "jitter buffer" для конкретного пользователя.
    • forcejitterbuffer - Включить (yes) или выключить (no) форсирование использования "jitter buffer" при работе asterisk в качестве транзитного узла.
    • maxauthreq - Максимальное число запросов на авторизацию, оставшихся без ответа. Только для типа "user".
    • mohinterpret - Назначение см. в iax.conf.
    • mohsuggest - Назначение см. в iax.conf.
    • peercontext - Назначение см. в iax.conf. Только для типа "peer".
    • qualifysmoothing - Использовать (yes) или нет (no) использование усредненного значения двух последних результатов ответных сообщений "PONG", для предотвращения ложных срабатываний недоступности хоста (LAGGED host). По умолчанию: no. Только для типа "peer".
    • qualifyfreqok - Значение в миллисекундах для ответа на IAX команду PING. Если в режиме мониторинга ответ приходит с задержкой меньше указанного времени, то хост считается доступным для связи. Только для типа "peer".
    • qualifyfreqnotok - Значение в миллисекундах для ответа на IAX команду PING. Если в режиме мониторинга ответ приходит дольше, чем указано в этом параметре, то хост отмечается как недоступный (LAGGED или UNAVAILABLE). Только для типа "peer".
    • regexten - Название екстеншена, для режима автоматического создания екстеншена при его регистрации. Только для типа "peer".
    • sendani - Включить (yes) или выключить (no) отправку 'ANI'. Только для типа "peer".
    • setvar - в значении указывается пара "переменная=значение" для переменной канала, при вызовах с данного девайса. (только для клиента типа "user" и, конечно "friend").
    • sourceaddress - адрес источника для конкретного пира, с которого будут пытаться отправляться данные. Только для типа "peer".
    • timezone - Временная зона. Только для типа "peer".
    • trunk - Включить (yes) или выключить (no) использование IAX2 транкинга с данным хостом.
    • transfer Режим перевода вызовов: Включить - "yes", выключить - "no", только медиапотоки - "mediaonly".

  • Поля ipaddr, port, regseconds может изменять сервер asterisk.


Примечание: В этой таблице создан индекс для поля 'name' потому что RealTime, делая запрос SELECT, всегда использует это поле. Естественно, что это поле должно иметь уникальное значение.

Вам, наверно, нет надобности во всех вышеприведенных полях. Если Вы хотите, то можете вообще удалить их из таблицы, если никогда не будете использовать их. Поля для каждого пользователя в Вашей таблице должны быть заполнены такими же значениями как, если бы Вы описывали его в файле sip.conf. Если какое-либо поле может иметь несколько определений для одной и той же записи (например, порядок выбора разрешенных кодеков), то они должны быть внесены в поле таблицы для этого пользователя разделенные точкой с запятой.

Например, нижеприведенная запись:

[foo]
host=dynamic
secret=bar
context=default
context=local



будет сохранена в таблице так:


namehostsecretcontextipaddrportregseconds
foodynamicbardefault;local127.0.0.145691096954152




Вам не нужно заносить в таблицу значения полей ipaddr, port или regseconds. Эти поля периодически устанавливаются самим механизмом RealTime.

Проверка работоспособности


Занесите необходимые данные в созданную Вами таблицу и попробуйте зарегистрировать экстеншен на asterisk. Если возникли проблемы, то для их детализации можно воспользоваться содержимым файла /var/log/asterisk/debug .



Ссылки по теме: