udvnl

<<< Back

Установка VoIP сервера FreeSWITCH с частичной интеграцией в систему MajorDoMo

Небольшая инструкция по установке, первоначальной настройки и интеграции SIP сервера FreeSWITCH на систему Majordomo (базовый образ для RPi) для создания домашней АТС с возможностью видео вызовов.

FreeSWITCH – это программно-определяемый телекоммуникационный стек, позволяющий осуществлять цифровое преобразование проприетарных телекоммуникационных коммутаторов в универсальную программную реализацию, которая работает на любом стандартном оборудовании. Разработчики FreeSWITCH в качестве эталонной операционной системы рекомендуют использовать Debian 10.

Установка VoIP сервера

1) Устанавливаем freeswitch из пакетов на сайте freswitch есть корректная инструкция по установке для Raspberry Pi:
И для Debian 10:
Установка (у меня RPi 3B) на базовом образе 4_44, приведу свой алгоритм:
Входим под пользователем sudo

sudo -i
apt-get update && apt-get install -y gnupg2 wget lsb-release
wget -O - https://files.freeswitch.org/repo/deb/rpi/debian-release/freeswitch_archive_g0.pub | apt-key add -
echo "deb http://files.freeswitch.org/repo/deb/rpi/debian-release/ `lsb_release -sc` main" > /etc/apt/sources.list.d/freeswitch.list
echo "deb-src http://files.freeswitch.org/repo/deb/rpi/debian-release/ `lsb_release -sc` main" >> /etc/apt/sources.list.d/freeswitch.list
apt-get update && apt-get install -y freeswitch-meta-all

Установка длится около получаса. По окончании перегрузим малинку.
Для проверки работоспособности зайдем в консоль freeswitch:
sudo fs_cli

Выход из консоли quit или же CTRL+D

Первоначальная настройка FreeSWITCH

После установки FreeSWITCH почти готов к работе, в нём по умолчанию есть 20 абонентов с номерами 1000-1019. пароль по умолчанию для абонентов VoIP указан в файле /usr/local/freeswitch/conf/vars.xml и равен 1234.
В директории /usr/local/freeswitch/conf/derectory/default находятся 20 xml файлов, каждый из которых отвечает за абонента с соответствующим номером. Можем добавлять абонентов копированием файлов с подстановкой данных.

Из коробки freeswitch частично работоспособен.
При наборе номера идёт задержка 10 секунд, после установки соединения, через 30 секунд разговорное состояние прерывается.
Исправим это, оттредактирова пару конфигурационных файлов:
Символы <!-- --> начало и конец комментариев,

Редектируем файл c глобальными переменными vars.xml
sudo nano /etc/freeswitch/vars.xml

Изменим пароль по умолчанию с 1234 на 1111 (устраняем задержку в 10 секунд при наборе номер), там же поменяем профиль с external на internal, приведя строки к следующему виду:

 <X-PRE-PROCESS cmd="set" data="default_password=1111"/>
……
….
  <X-PRE-PROCESS cmd="set" data="use_profile=internal"/>

Перейдём к sip профилям. Сейчас мы будм использовать профиль internal (внутренний). Причина срывов связи у меня заключается в неправильной настройки сети SIP сервера. отредактируем его заменив пару строк:

sudo nano /etc/freeswitch/sip_profiles/internal.xml
<!-- закомментируем:   
<param name="ext-rtp-ip" value="$${external_rtp_ip}"/>
    <param name="ext-sip-ip" value="$${external_rtp_ip}"/> 
-->
    <param name="ext-rtp-ip" value="auto-nat"/>
    <param name="ext-sip-ip" value="auto-nat"/>

Freeswitch имеет модульную структуру, подключаемые модули можно посмотреть в файле modules.conf.xml

Отредактируем его, подключив mod_xml_rpc, включающий поддержку WEB API, расскоментировав строку с этим модулем.

sudo nano /etc/freeswitch/autoload_configs/modules.conf.xm

Подробнее о модуле
Описание команд можно найти здесь:
Большинство команд в домашнем использовании не нужно.
На этом можно сказать первоначальная настройка SIP сервера закончена.
Перезапустим FreeSWITCH

        sudo systemctl restart freeswitch.service

Попробуем организовать воздействие на SIP сервер с целью внешнего (со стороны сервера УД MajorDoMo) управления вызовами.

Проверка работы SIP сервера, организация видеовызова и небольшая интеграция с MajorDoMo

Попробуем организовать проверку работы нашей VoIP АТС.
Для начала я использую на ПК с Windows Sip клиенты MicroSIP (мне больше всех сипфонов понравился) и Linphone. На смартфоне с Android Linphone и ряд других.
На Raspberry Pi консольный клиент Linphonec (но в нём на данный момент ограниченная работоспособность)
Приведу для примера настройки MicroSIP:


Сетевый настройки, настройки нат и прочее пока не рассматриваю, для начала всё делаем в своей локальной сети.
Приблизительно такие же настройку и у других SIP клиентов.
Внимание! Старайтесь в настройке кодеков, особенно видео, чтоб предпочтительные были одинаковы. У меня установлен VP8.

Сделаем видеовызов с одного клиента на другой:

В качестве иллюстрации, я сделал звонок на одном ПК с двух sip клиентов. Включена отладочная информация
Так же можно и с двух ПК провести набор и ПК-Смартфон. Главное чтоб они были в одной сети.

Перейдем к небольшой интеграции с системой "Умного Дома"
Проверим работу WEB API
Набрав в браузере http://IP_RASPBERRY:8080/ попадаем на заглушку вебстраницы.
Запустить вебстраницу мне не удалось, но я особо и не пробовал, т.к. это не влияет на работоспособность voip сервера. Внешние команды просмотра и управления через API вполне работают.
О модуле xml_rpc

Набрав в браузере запрос получаем отображение статуса FS:

http://freeswitch:works@IP_RASPBERRY:8080/webapi/sofia?status%20profile%20internal

Откроем консоль MajorDoMo и выполним этот запрос консоли:

GetURL("http://freeswitch:works@IP_RASPBERRY:8080/webapi/sofia?status%20profile%20internal")

Получаем:

Сейчас сделаем вызов с инициатором которого будет наша система "Умного Дома":
Идея в том, чтобы инициировать звонок (с помощью функции originate) со стороны «MajorDomo» абоненту с номером 1003 (MicroSip), а потом состоявшийся вызов переводить в план набора для исходящих вызовов на абонента 1007 (смартфон Android sip клиент Linphone). Команда API выглядит так: originate user/1003 1007 XML default инициирование вызов в консоли номер 1003, после поднятия (или автоподнятия) трубки вызывается номер 1007 из плана набора default и видеозвонок поступает на смартфон.

Переводим её в понятный вид для MajorDoMo и браузера:

GetURL("http://freeswitch:works@192.168.1.99:8080/webapi/originate?user/1003%201007%20XML%20default")

Вначале звонит один софтфон, спустя несколько секунд идёт звонок на второй. Ради эксперемента, последний вызов я поставил оба sip клиента в режим автоответа.
Видеовызов установился автоматически.

Эту же команду можно поставить и в сценарии, действия и т.д.
На этом заканчиваю эту часть, единственное отмечу полу деятельности для последующей как настройки так и интеграции, довольно большое.
Этот способ довольно лёгкий, можно сделать и использовать Websocket, и управление по DTMF с мобильного телефона, так же имеется возможность использования технологии WebRTC и прикрутить к Web серверу УД SIP клиент.

Discuss (3) (5)

See also:
2020-06-19 Raspberry Pi: немного о резервном копировании и актуальной копии системы
2020-04-28 Установка базового образа MajorDoMo на Raspberry Pi. Начало первые шаги.
2019-10-07 Возможность создания видео звонков у MajorDoMo (RPI +WebCam)
2019-09-11 Создание голосового оповещения MajorDoMo
2019-08-21 Установка USB аудиокарты и настройка звука в Raspberry Pi
2019-04-04 Сертификация в Z-Wave
2019-03-11 RPI Monitor полезное ПО для Raspberry PI и Orange Pi
2019-02-04 Тестирование пропускной способности канала Ethernet (Wi-Fi) с помощью утилиты IPerf
2018-12-23 Пошаговая инструкция с картинками по установки MajorDoMo на Raspberry Pi 3 с помощью скрипта от Immortal
2018-10-20 Установка Freeswitch 1.8.2 на Debian 9 (Raspbian Stretch) на базовый образ системы «Умного дома» MajorDomo
2018-08-14 Создание беспроводного «умного дома». На основе технологии Linux, Z-Wave и ПО MajorDoMo. Включение первого устройства Z-Wave и первые шаги по автоматизации
2018-07-08 Создание беспроводного «умного дома». На основе технологии Linux, Z-Wave и ПО MajorDoMo. Включение контроллера RaZberry и первые шаги по Z-Wave
2018-06-29 Пошаговая инструкция по установке образа Majordomo на Raspberry Pi
2018-06-21 Удаленное наблюдение за близкими, но к сожалению, больными людьми.

Минск, Беларусь

На форуме: udvnl