artem
20.02.2019
365

Asterisk Realtime SIP

Введение              В данной статье будет рассказано как настроить механизм астериска Realtime, заводить Realtime SIP пользователей, а также Realtime SIP транки с регистрацией и без регистрации. Настройка Asterisk Realtime Необходимо создать файл /etc/asterisk/extconfig.conf и добавить несколько параметров Создадим файл Внесем изменения, предварительно нажав клавишу «i» Рассмотрим подробнее данные значения sippeers — общее имя (family) для […]

Введение

             В данной статье будет рассказано как настроить механизм астериска Realtime, заводить Realtime SIP пользователей, а также Realtime SIP транки с регистрацией и без регистрации.

Все настройки проводятся в системе FreePBX 13.0.192.19, Asterisk 13.21.0 Centos 6.9,mysql  Ver 15.1 Distrib 10.1.33-MariaDB

Настройка Asterisk Realtime

Необходимо создать файл /etc/asterisk/extconfig.conf и добавить несколько параметров

Создадим файл

    vim /etc/asterisk/extconfig.conf   

Внесем изменения, предварительно нажав клавишу «i»

   [settings]   sippeers   => odbc,asteriskcdrdb,sipfriends  
Если вы читали статью Asterisk_queue_log то вам нужно будет добавить строку sippeers => odbc,asteriskcdrdb,sipfriends
Чтобы выйти из режима редактирования в редакторе vim используется клавиша «Esc» Сохраним конфигурацию и закроем файл комбинацией Shift+ZZ или :wq+Enter

Рассмотрим подробнее данные значения

sippeers — общее имя (family) для понимания для чего используется конфигурация

odbc — коннектор, через который астериск будет связан БД

asteriskcdrdb — db конфиг в /etc/asterisk/res_odbc_additional.conf

sipfriends – таблица с конфигурация

Таблица для SIP пиров и регистраций

Теперь создадим таблицу queue_log в базе данных asteriskcdrdb

CREATE TABLE IF NOT EXISTS `sipfriends` (       `id` int(11) NOT NULL AUTO_INCREMENT,       `name` varchar(40) NOT NULL,       `ipaddr` varchar(45) DEFAULT NULL,       `port` int(11) DEFAULT NULL,       `regseconds` int(11) DEFAULT NULL,       `defaultuser` varchar(40) DEFAULT NULL,       `fullcontact` varchar(80) DEFAULT NULL,       `regserver` varchar(20) DEFAULT NULL,       `useragent` varchar(20) DEFAULT NULL,       `lastms` int(11) DEFAULT NULL,       `host` varchar(40) DEFAULT NULL,       `type` enum('friend','user','peer') DEFAULT NULL,       `context` varchar(40) DEFAULT NULL,       `permit` varchar(95) DEFAULT NULL,       `deny` varchar(95) DEFAULT NULL,       `secret` varchar(40) DEFAULT NULL,       `md5secret` varchar(40) DEFAULT NULL,       `remotesecret` varchar(40) DEFAULT NULL,       `transport`   enum('udp','tcp','tls','ws','wss','udp,tcp','tcp,udp') DEFAULT NULL,       `dtmfmode` enum('rfc2833','info','shortinfo','inband','auto')   DEFAULT NULL,       `directmedia` enum('yes','no','nonat','update') DEFAULT NULL,       `nat` varchar(29) DEFAULT NULL,       `callgroup` varchar(40) DEFAULT NULL,       `pickupgroup` varchar(40) DEFAULT NULL,       `language` varchar(40) DEFAULT NULL,       `disallow` varchar(200) DEFAULT NULL,       `allow` varchar(200) DEFAULT NULL,       `insecure` varchar(40) DEFAULT NULL,       `trustrpid` enum('yes','no') DEFAULT NULL,       `progressinband` enum('yes','no','never') DEFAULT NULL,       `promiscredir` enum('yes','no') DEFAULT NULL,       `useclientcode` enum('yes','no') DEFAULT NULL,       `accountcode` varchar(40) DEFAULT NULL,       `setvar` varchar(200) DEFAULT NULL,       `callerid` varchar(40) DEFAULT NULL,       `amaflags` varchar(40) DEFAULT NULL,       `callcounter` enum('yes','no') DEFAULT NULL,       `busylevel` int(11) DEFAULT NULL,       `allowoverlap` enum('yes','no') DEFAULT NULL,       `allowsubscribe` enum('yes','no') DEFAULT NULL,       `videosupport` enum('yes','no') DEFAULT NULL,       `maxcallbitrate` int(11) DEFAULT NULL,       `rfc2833compensate` enum('yes','no') DEFAULT NULL,       `mailbox` varchar(40) DEFAULT NULL,       `session-timers` enum('accept','refuse','originate') DEFAULT   NULL,       `session-expires` int(11) DEFAULT NULL,       `session-minse` int(11) DEFAULT NULL,       `session-refresher` enum('uac','uas') DEFAULT NULL,       `t38pt_usertpsource` varchar(40) DEFAULT NULL,       `regexten` varchar(40) DEFAULT NULL,       `fromdomain` varchar(40) DEFAULT NULL,       `fromuser` varchar(40) DEFAULT NULL,       `qualify` varchar(40) DEFAULT NULL,       `defaultip` varchar(45) DEFAULT NULL,       `rtptimeout` int(11) DEFAULT NULL,       `rtpholdtimeout` int(11) DEFAULT NULL,       `sendrpid` enum('yes','no') DEFAULT NULL,       `outboundproxy` varchar(40) DEFAULT NULL,       `callbackextension` varchar(40) DEFAULT NULL,       `timert1` int(11) DEFAULT NULL,       `timerb` int(11) DEFAULT NULL,       `qualifyfreq` int(11) DEFAULT NULL,       `constantssrc` enum('yes','no') DEFAULT NULL,       `contactpermit` varchar(95) DEFAULT NULL,       `contactdeny` varchar(95) DEFAULT NULL,       `usereqphone` enum('yes','no') DEFAULT NULL,       `textsupport` enum('yes','no') DEFAULT NULL,       `faxdetect` enum('yes','no') DEFAULT NULL,       `buggymwi` enum('yes','no') DEFAULT NULL,       `auth` varchar(40) DEFAULT NULL,       `fullname` varchar(40) DEFAULT NULL,       `trunkname` varchar(40) DEFAULT NULL,       `cid_number` varchar(40) DEFAULT NULL,       `callingpres` enum('allowed_not_screened','allowed_passed_screen','allowed_failed_screen','allowed','prohib_not_screened','prohib_passed_screen','prohib_failed_screen','prohib')   DEFAULT NULL,       `mohinterpret` varchar(40) DEFAULT NULL,       `mohsuggest` varchar(40) DEFAULT NULL,       `parkinglot` varchar(40) DEFAULT NULL,       `hasvoicemail` enum('yes','no') DEFAULT NULL,       `subscribemwi` enum('yes','no') DEFAULT NULL,       `vmexten` varchar(40) DEFAULT NULL,       `autoframing` enum('yes','no') DEFAULT NULL,       `rtpkeepalive` int(11) DEFAULT NULL,       `call-limit` int(11) DEFAULT NULL,       `g726nonstandard` enum('yes','no') DEFAULT NULL,       `ignoresdpversion` enum('yes','no') DEFAULT NULL,       `allowtransfer` enum('yes','no') DEFAULT NULL,       `dynamic` enum('yes','no') DEFAULT NULL,       `path` varchar(256) DEFAULT NULL,       `supportpath` enum('yes','no') DEFAULT NULL,       PRIMARY KEY (`id`),       UNIQUE KEY `name` (`name`)   ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=cp1251   ROW_FORMAT=DYNAMIC;    
Таблица взята с официального документации в директории с исходниками асткриска в моем случае /usr/src/asterisk-13.21.0/contrib/realtime/mysql/mysql_config.sql

Заведение Пользователей и Транков

Для заведения пользователей на астериске необходимо в консоле mysql ввести следующее

   insert into sipfriends   (`deny`, `permit`, `name`, `port`, `regseconds`, `defaultuser`, `host`,   `type`, `context`, `secret`, `transport`, `dtmfmode`, `directmedia`, `nat`,   `allow`, `disallow`, `qualify`, `qualifyfreq`, `call-limit`, `dynamic`)   VALUES('0.0.0.0/0.0.0.0', '0.0.0.0/0.0.0.0', '106', '5060', 1800, '106',   'dynamic', 'friend', 'from-internal', '106', 'udp', 'rfc2833', 'yes', 'yes',   'alaw;ulaw', 'all', 'yes', 60, 5, 'yes');   

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

name – имя пользователя

defaultuser – указываются аутентификационные данные для регистрации

regexten – указывается extension при регистрации.

port – порт для регистрации этого пользователя

host – указываем dynamic. Т.к. данный пир может регистрироваться с разных источников

type – указывается тип экстеншена (только для входщих, только для исходящих, ито и другое), для указываем friend

context – указывается контекст, в котором будут обрабатываться звонки с этого номера

deny – указываются сети, которые будут запрещены.

По стандарту указывается „0.0.0.0/0.0.0.0“

permit – Указываеются сети, с которых разрешено подключаться

Если сотрудник удаленный и у него динамический IP адрес указываете „0.0.0.0/0.0.0.0“. Для безопасности воспользуйтесь нашей статьей (https://voxlink.ru/kb/asterisk-configuration/connect_sipclients_in_Asterisk/)

secret – указывается пароль экстеншена для регистрации

allow – указываются разрешенные кодеки

disallow – указываем кодеки, которые запрещены

По стандарту в параметре disallow указывается значение all

Также необходимо указать параметр dynamic – указывается, если пользователь динамический. Выставляем в значение yes“.

Для заведения Транка, также в консоле mysql вводим следующее:

   insert into sipfriends   (`name`, `ipaddr`, `port`, `regseconds`, `defaultuser`, `regserver`, `host`,   `type`, `context`, `secret`, `transport`, `dtmfmode`, `directmedia`, `nat`,   `allow`, `disallow`, `insecure`, `fromdomain`, `fromuser`, `qualify`,   `callbackextension`, `qualifyfreq`, `auth`, `trunkname`, `call-limit`)   VALUES('YOUR_PROVIDERS_LOGIN',   '1PROVIDERS_HOST',   '5060', 1800, 'YOUR_PROVIDERS_LOGIN',   'PROVIDERS_HOST', 'PROVIDERS_HOST', 'peer',   'from-trunk', 'PROVIDERS_SECRET',   'udp', 'rfc2833', 'yes', 'yes', 'alaw;ulaw', 'all', 'port,invite', 'PROVIDERS_HOST',   '74954781025', 'yes', 'EXTENSION_FOR   INBOUND_CALLS', 60, 'YOUR_PROVIDERS_LOGIN:PROVIDERS_SECRET@PROVIDERS_HOST', 'TRUNK_NAME', 5);   

Для настроек транка необходимо указать следующие параметры

name – имя экстеншена

port – порт для приема SIP сообщений

regserver – хост регистрации у оператора (IP адрес или доменное имя)

host – хост оператора (IP адрес или доменное имя)

type – указывается тип экстеншена (только для входщих, только для исходящих, ито и другое), для указываем peer

context – указывается контекст, в котором будут обрабатываться звонки с этого номера

secret – указываем, пароль, который вам прислал оператор связи

insecure – разрешаем проверку пира по соответствию ip адреса и порта (занчение port,invite)

allow – указываются разрешенные кодеки

disallow – указываем кодеки, которые запрещены

fromdomain – указывается хост провайдера. Значение подставляется в поле From

fromuser – указывается логин который предоставляет оператор связи

callbackextension – указывается экстеншн, на который будет приходить вызов.

trunkname – указываем имя транка

auth – указывается регистрационная строка в формате <user>:<secret>@<realm>

dynamic – указывается, если пользователь динамический. Выставляем в значение „no“.

Проверим заведенных пользователей. Для этого нам помогут команды sip show peers и sip show registry.

При выводе подключенных пиров для пользователей Realtime появляется дополнительная секция Realtime. Для заведенных пользователей через RT добавляется запись Cached RT

Для того, чтобы постоянно не заходить в mysql и оттуда смотреть данные по заведенным пользователям, в консоле астериска есть специальные команды по созданию, удалению, изменению и просмотру заведенных пользователей Realtime

  • realtime load <family> <col_name> <peer>

Отображает не нулевую информацию по заведенному realtime пиру.

Аналогично Mysql команде select * from sipfriends where &lt;col_name> = &lt;peer>
  • realtime destroy <family> <col_name> <peer>

Удаляет заведенный ранее realtime пир

Аналогично Mysql команде delete from sipfriends where &lt;col_name> = &lt;peer>
  • realtime store <family> <col_name1> <data1> [<col_name2> <data2> [… <col_name5> <data5>]]

Заведение нового realtime пира в указанной ранее таблице.

При заведении пира необходимо указать необходимы поля для заполнения. В созданной nаблице они показаны NOT NULL. Чтобы посмотреть какие это поля в консоле mysql выберите базу, где у вас хранится ваша таблица с пирами и введите команду show create table sipfriends.
После заведения пользователя можно добавить информацию по нему через команду <strong>realtime update</strong>
 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Кондрашин Игорь, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices