udvnl

<<< Назад

Установка 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 клиент.

Обсуждение (3) (10)

Смотрите так же:
23.09.2021 Второй раз в первый класс. Часть 1: начало работы c базовым образом для RPi.
31.12.2020 Возможность создания канала управления через телефонные сети для системы домашней автоматизации.
06.07.2020 Чтение файлов из образа img Операционной системы. Возможность записи образа на меньшую по размеру SD карту памяти
19.06.2020 Raspberry Pi: немного о резервном копировании и актуальной копии системы
28.04.2020 Установка базового образа MajorDoMo на Raspberry Pi. Начало первые шаги.
07.10.2019 Возможность создания видео звонков у MajorDoMo (RPI +WebCam)
11.09.2019 Создание голосового оповещения MajorDoMo
21.08.2019 Установка USB аудиокарты и настройка звука в Raspberry Pi
04.04.2019 Сертификация в Z-Wave
11.03.2019 RPI Monitor полезное ПО для Raspberry PI и Orange Pi
04.02.2019 Тестирование пропускной способности канала Ethernet (Wi-Fi) с помощью утилиты IPerf
23.12.2018 Пошаговая инструкция с картинками по установки MajorDoMo на Raspberry Pi 3 с помощью скрипта от Immortal
20.10.2018 Установка Freeswitch 1.8.2 на Debian 9 (Raspbian Stretch) на базовый образ системы «Умного дома» MajorDomo
14.08.2018 Создание беспроводного «умного дома». На основе технологии Linux, Z-Wave и ПО MajorDoMo. Включение первого устройства Z-Wave и первые шаги по автоматизации
08.07.2018 Создание беспроводного «умного дома». На основе технологии Linux, Z-Wave и ПО MajorDoMo. Включение контроллера RaZberry и первые шаги по Z-Wave
29.06.2018 Пошаговая инструкция по установке образа Majordomo на Raspberry Pi
21.06.2018 Удаленное наблюдение за близкими, но к сожалению, больными людьми.

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

На форуме: udvnl