Asterisk Realtime SIP
Введение В данной статье будет рассказано как настроить механизм астериска Realtime, заводить Realtime SIP пользователей, а также Realtime SIP транки с регистрацией и без регистрации. Настройка Asterisk Realtime Необходимо создать файл /etc/asterisk/extconfig.conf и добавить несколько параметров Создадим файл Внесем изменения, предварительно нажав клавишу «i» Рассмотрим подробнее данные значения sippeers — общее имя (family) для […]
Введение
В данной статье будет рассказано как настроить механизм астериска Realtime, заводить Realtime SIP пользователей, а также Realtime SIP транки с регистрацией и без регистрации.
Настройка Asterisk Realtime
Необходимо создать файл /etc/asterisk/extconfig.conf и добавить несколько параметров
Создадим файл
vim /etc/asterisk/extconfig.conf
Внесем изменения, предварительно нажав клавишу «i»
[settings] sippeers => odbc,asteriskcdrdb,sipfriends
Рассмотрим подробнее данные значения
sippeers — общее имя (family) для понимания для чего используется конфигурация
odbc — коннектор, через который астериск будет связан БД
asteriskcdrdb — db конфиг в /etc/asterisk/res_odbc_additional.conf
sipfriends – таблица с конфигурацией
Таблица для SIP пиров и регистраций
Теперь создадим таблицу sipfriends в базе данных 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;
Заведение Пользователей и Транков
Для заведения пользователей на астериске необходимо в консоле 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 – указываются сети, которые будут запрещены.
permit – Указываеются сети, с которых разрешено подключаться
secret – указывается пароль экстеншена для регистрации
allow – указываются разрешенные кодеки
disallow – указываем кодеки, которые запрещены
Также необходимо указать параметр 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.
Для того, чтобы постоянно не заходить в mysql и оттуда смотреть данные по заведенным пользователям, в консоле астериска есть специальные команды по созданию, удалению, изменению и просмотру заведенных пользователей Realtime
- realtime load <family> <col_name> <peer>
Отображает не нулевую информацию по заведенному realtime пиру.
- realtime destroy <family> <col_name> <peer>
Удаляет заведенный ранее realtime пир
- realtime store <family> <col_name1> <data1> [<col_name2> <data2> [… <col_name5> <data5>]]
Заведение нового realtime пира в указанной ранее таблице.
Остались вопросы?
Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.