VoIP(русский)
FreenetIS позволяет управлять VoIP счетами. Система может быть подключена к Asterisk (или SER и его производным), а затем к биллингу.
Obsah
Общая информация
В системе FreenetIS каждый участник может зарегистрировать только один номер. Если вам нужны дополнительные платежи, требуется регистрация другого пользователя. Пользователь можете изменить информацию о счете VoIP такие как пароль и настройки голосовой почты. Если модуль биллинга активен, то можно отображать список звонков или погашений кредитов.
Установка
Для корректной работы VoIP важно установить в FreenetIS диапазон номеров, которые пользователь может зарегистрировать. Кроме того, можно настроить SIP-прокси-сервер, который будет отображаться в учетной записи пользователя VoIP. Если любой из диапазона чисел не может быть предложен для регистрации, то он должен быть определен из пропущенных номеров.
Интеграция с Asterisk
Установите необходимые пакеты (Debian и его производные).
apt-get install mysql asterisk asterisk-mysql
Для интеграции с Asterisk создайте представление таблицы voip_sips:
Прежде всего, необходимо создать базу данных для Asterisk:
MySQL> create database asterisk;
А потом представление в базе данных FreenetIS:
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `asterisk`.`sip` AS select `freenetis`.`voip_sips`.`id` AS `id`, `freenetis`.`voip_sips`.`name` AS `name`, `freenetis`.`voip_sips`.`amaflags` AS `amaflags`, `freenetis`.`voip_sips`.`accountcode` AS `accountcode`, `freenetis`.`voip_sips`.`callgroup` AS `callgroup`, `freenetis`.`voip_sips`.`callerid` AS `callerid`, `freenetis`.`voip_sips`.`canreinvite` AS `canreinvite`, `freenetis`.`voip_sips`.`context` AS `context`, `freenetis`.`voip_sips`.`defaultip` AS `defaultip`, `freenetis`.`voip_sips`.`dtmfmode` AS `dtmfmode`, `freenetis`.`voip_sips`.`fromuser` AS `fromuser`, `freenetis`.`voip_sips`.`fromdomain` AS `fromdomain`, `freenetis`.`voip_sips`.`fullcontact` AS `fullcontact`, `freenetis`.`voip_sips`.`host` AS `host`, `freenetis`.`voip_sips`.`insecure` AS `insecure`, `freenetis`.`voip_sips`.`language` AS `language`, `freenetis`.`voip_sips`.`mailbox` AS `mailbox`, `freenetis`.`voip_sips`.`md5secret` AS `md5secret`, `freenetis`.`voip_sips`.`nat` AS `nat`, `freenetis`.`voip_sips`.`deny` AS `deny`, `freenetis`.`voip_sips`.`permit` AS `permit`, `freenetis`.`voip_sips`.`mask` AS `mask`, `freenetis`.`voip_sips`.`pickupgroup` AS `pickupgroup`, `freenetis`.`voip_sips`.`port` AS `port`, `freenetis`.`voip_sips`.`qualify` AS `qualify`, `freenetis`.`voip_sips`.`restrictcid` AS `restrictcid`, `freenetis`.`voip_sips`.`rtptimeout` AS `rtptimeout`, `freenetis`.`voip_sips`.`rtpholdtimeout` AS `rtpholdtimeout`, `freenetis`.`voip_sips`.`secret` AS `secret`, `freenetis`.`voip_sips`.`type` AS `type`, `freenetis`.`voip_sips`.`username` AS `username`, `freenetis`.`voip_sips`.`disallow` AS `disallow`, `freenetis`.`voip_sips`.`allow` AS `allow`, `freenetis`.`voip_sips`.`musiconhold` AS `musiconhold`, `freenetis`.`voip_sips`.`regseconds` AS `regseconds`, `freenetis`.`voip_sips`.`ipaddr` AS `ipaddr`, `freenetis`.`voip_sips`.`regexten` AS `regexten`, `freenetis`.`voip_sips`.`cancallforward` AS `cancallforward`, `freenetis`.`voip_sips`.`setvar` AS `setvar`, `freenetis`.`voip_sips`.`auth` AS `auth` from `freenetis`.`voip_sips`;
Кроме того, мы создаем представление для голосовой почты: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `asterisk`.`voicemail_users` AS select `freenetis`.`voip_voicemail_users`.`id` AS `uniqueid`,
`freenetis`.`voip_voicemail_users`.`customer_id` AS `customer_id`, `freenetis`.`voip_voicemail_users`.`context` AS `context`, `freenetis`.`voip_voicemail_users`.`mailbox` AS `mailbox`, `freenetis`.`voip_voicemail_users`.`password` AS `password`, `freenetis`.`voip_voicemail_users`.`fullname` AS `fullname`, `freenetis`.`voip_voicemail_users`.`email` AS `email`, `freenetis`.`voip_voicemail_users`.`pager` AS `pager`, `freenetis`.`voip_voicemail_users`.`stamp` AS `stamp` from `freenetis`.`voip_voicemail_users` where (`freenetis`.`voip_voicemail_users`.`active` = _utf8'1');
=== Конфигурация MySQL ===
Asterisk может иметь непосредственный доступ к mysq.
В /etc/asterisk/res_mysql.conf добавьте
[general] dbhost = localhost dbname = asterisk dbuser = username dbpass = password dbport = 3306 dbsock = /var/run/mysqld/mysqld.sock
Конфигурация Asterisk
Все файлы находятся в /etc/asterisk/ В extconfig.conf некоторые установки читаются из базы данных - они должны быть pre
sippeers => mysql,asterisk,sip voicemail => mysql,asterisk,voicemail_users ;extensions => mysql,asterisk, extensions - not yet implemented in FreentIS!!
Для тестирования соединения с MySQL подключитесь к консоли
asterisk-rvvv
и запустите realtime mysql status
sip*CLI> realtime mysql status Connected to asterisk@localhost, port 3306 with username asterisk for 4 seconds.
Мы протестировали функционирование соединения.
Теперь asterisk интегрирован с FreentIS и после добавления VoIP аккаунта в FreenetIS вы можете подключаться к рабочему столу используя программное и техническое обеспечение клиентаt. Статус подключения может быть просмотрен в FreenetIS аккаунт в VoIP
Затем мы делаем установки Asterisk в зависимости от требований пользователя. Пример конфигурации для Prunk от NFX s.z.p.o.:
[general]
static=yes writeprotect=no userscontext=default [default]
;контекст по умолчанию, он перекрывает все установки других контекстов exten => s,1,Answer() exten => s,n,Wait(2) exten => s,n,Playback(slfree-cal-no-there) exten => s,n,Hangup() [internal] ;контекст по умолчанию для наших номеров
;Если мы вызываем 11 то мы попадаем на нашу почту exten => 11,1,Goto(mailbox,s,1) ;Если мы вызываем экстренную линию то мы попадаем в экстренный контекст exten => 112,1,Goto(emergency,${EXTEN},1) exten => 150,1,Goto(emergency,${EXTEN},1) exten => 155,1,Goto(emergency,${EXTEN},1) exten => 158,1,Goto(emergency,${EXTEN},1)
Billing API
Billing zapišťuje dobíjení kreditu, tarifikaci hovorů, výpis hovorů aj. Do FreenetISu bylo zaintegrováno LBilling API. LBilling API bylo vyvynuto pro potřeby NFX s.z.p.o. a jeho specifinace je dostupná na interních stránkách NFX. Samotný billing byl ale navržen tak, aby byl univerzální a pouze se měnil ovladač billungu.
Aktuálně je implementován pouze driver pro Lbilling API NFX. Další API lze dle potřeby doprogramovat.
Instalace synchronizačního skriptu
Synchronizační skript zproztředkovává pro FreenetIS dobíjení kreditu a synchronizaci VoIP uživatelů.
Před instalací zkontrolujte zda-li máte nainstalovaný na SIP serveru perl.
1) Vytvořte MySQL pojmenovanou lbilling na stejném DB serveru jako máte databázi FreenetISu.
2) Vytvořte pohledy do FreenetIS databáze (pokud se FreenetIS databáze nejmenuje freenetis, změňte všechny hodnoty `freenetis` na jméno Vaší databáze, popřípadě změňte i uživatele, který definuje pohledy).
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `transfers` AS select `freenetis`.`transfers`.`id` AS `id`,`freenetis`.`transfers`.`origin_id` AS `origin_id`,`freenetis`.`transfers`.`destination_id` AS `destination_id`,`freenetis`.`transfers`.`previous_transfer_id` AS `previous_transfer_id`,`freenetis`.`transfers`.`member_id` AS `member_id`,`freenetis`.`transfers`.`user_id` AS `user_id`,`freenetis`.`transfers`.`type` AS `type`,`freenetis`.`transfers`.`datetime` AS `datetime`,`freenetis`.`transfers`.`creation_datetime` AS `creation_datetime`,`freenetis`.`transfers`.`text` AS `text`,`freenetis`.`transfers`.`amount` AS `amount` from `freenetis`.`transfers`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `voip_lbilling_accounts` AS select `voip_lbilling_accounts`.`id` AS `id`,`voip_lbilling_accounts`.`userid` AS `userid`,`voip_lbilling_accounts`.`cid` AS `cid`,`voip_lbilling_accounts`.`state` AS `state`,`voip_lbilling_accounts`.`limit` AS `limit`,`voip_lbilling_accounts`.`tarif` AS `tarif`,`voip_lbilling_accounts`.`descr` AS `descr` from `freenetis`.`voip_lbilling_accounts`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `voip_lbilling_payments` AS select `voip_lbilling_payments`.`id` AS `id`,`voip_lbilling_payments`.`userid` AS `userid`,`voip_lbilling_payments`.`date` AS `date`,`voip_lbilling_payments`.`value` AS `value`,`voip_lbilling_payments`.`state` AS `state`,`voip_lbilling_payments`.`descr` AS `descr` from `freenetis`.`voip_lbilling_payments`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `voip_lbilling_users` AS select `voip_lbilling_users`.`id` AS `id`,`voip_lbilling_users`.`type` AS `type`,`voip_lbilling_users`.`state` AS `state`,`voip_lbilling_users`.`limit` AS `limit`,`voip_lbilling_users`.`currency` AS `currency`,`voip_lbilling_users`.`descr` AS `descr` from `freenetis`.`voip_lbilling_users`;
2) Na SIP server umístěte následující soubory lbilling-synchronization.pl a html.tt do složky /usr/local/bin/lbilling/
3) Nastavte práva pro synchronizační skript:
chmod a+x /usr/local/bin/lbilling/lbilling-synchronization.pl
4) Nakonfigurujte proměnné ve skriptu lbilling-synchronization.pl (sekce configuration).
nano /usr/local/bin/lbilling/lbilling-synchronization.pl
5) Přidejte synchronizační skript (následující řádky) do CRONu (/etc/crontab):
#lBilling synchronization 30 22 * * * root perl /usr/local/bin/lbilling/lbilling-synchronization.pl -s */5 * * * * root perl /usr/local/bin/lbilling/lbilling-synchronization.pl -p
?????А ДЕ ПЕРЕКЛАД “==Billing API==”???