Installation de FreeSWITCH 1.8 sur Debian 9 (Raspbian Stretch, l'image de base du système Smart Home de MajorDoMo sur Rasbperri Pi)

Je continue une courte série d'articles sur la création de "Smart Home" et des instructions étape par étape pour l'auto-installation / configuration.

Mais maintenant, il s'agira principalement de Freeswitch et de la téléphonie IP.

En août, Signalwire, développeur de la plate-forme de téléphonie IP VoIP ouverte FreeSWITCH, a publié une version publique de la nouvelle version du logiciel - 1.8. (1.8.2 a déjà été publié).
Dans le cadre de la sortie de cette version de la plate-forme de téléphonie IP Freesfitch 1.8, il a été décidé de l'installer sur Raspberry 3 avec l'image de base du système de maison intelligente MajorDoMo installée, sous le système d'exploitation Raspbian (Debian 9 Stretch) avec certains éléments domotiques.



Sous la coupe, une description de l'installation d'une plate-forme VoIP Ă  partir de la source avec quelques notes et explications.

Trois mois après la sortie et l'annonce de la sortie publique de la version 1.8 dans le guide d'installation de Debian 9 sur le site officiel, FreeSWITCH a actuellement publié des instructions d'installation.

→ Installer FreeSWITCH 1.8

Cependant, je n'ai pu installer aucune des options des instructions sur mon Rasberry. Il n'y a pas si longtemps, il y avait un avertissement concernant les incompatibilités et devait être installé à partir des codes source. Dans la documentation officielle, vous pouvez également trouver l'installation sur le Raspberry Pi, mais elle est déjà obsolète. Par conséquent, je décrirai mon option d'installation sur le Raspberry P, en faisant une petite instruction étape par étape. Dans les articles précédents, j'ai essayé de décrire comment et où commencer à travailler avec le terminal et la ligne de commande, donc si c'est un peu incompréhensible, je recommande de lire les articles précédents (des liens seront donnés à la fin de l'article). Le principe est le même, il l'a fait - cela a fonctionné, revérifié, préparé des instructions pour que le fils aîné puisse répéter et comprendre un peu ce qu'il faisait et comment il le faisait.

Installer FreeSWITCH 1.8.2 Ă  partir de la source


Connectez-vous Ă  Raspberry via Putty.

Pour éviter de taper sudo avant chaque commande, exécutez la commande sudo –i. Après cela, nous travaillons avec les droits de l'administrateur système, ils sont automatiquement passés au répertoire racine. Pour savoir dans quel répertoire vous vous trouvez, vous pouvez exécuter la commande Pwd.

Mise à jour du système:

apt-get update apt-get upgrade 

Accédez au répertoire personnel, puis téléchargez la version 1.8.2 de freeswitch:

 cd /home/pi git clone https://freeswitch.org/stash/scm/fs/freeswitch.git -bv1.8.2 freeswitch 

Une fois le téléchargement terminé, le dossier source Freswitch apparaît dans le répertoire personnel. Allez-y (chemin complet: / home / pi / freeswitch) et installez les programmes nécessaires pour la construction à partir des sources et allez dans le répertoire freeswitch:

 cd freeswitch apt-get install autoconf libtool libtool-bin 

Avant de compiler un programme à partir des sources, vous devez d'abord assembler le configurateur, exécuter:

 ./bootstrap.sh –j 

La plateforme Freeswitch a une structure modulaire, donc avant d'installer, éditez la liste des modules nécessaires:

 nano /freeswitch/modules.conf 

Pour la plupart, la liste est restée comme par défaut, j'ai désactivé certains codecs vidéo, opale, png.
Module de langue russe connecté, points de terminaison curl mod, mod_portaudio,
Installez les dépendances pour la configuration et l'assemblage du serveur. Nous utilisons l'indicateur –y pour que l'équipe réponde automatiquement Oui à toutes les questions du système:

 apt-get install -y g++ zlib1g-dev libjpeg9 pkg-config sqlite3 libsqlite3-dev libcurl4-openssl-dev libpcre3 libpcre3-dev libspeexdsp-dev libldns-dev libedit-dev libtiff-dev apt-get install -y yasm lua5.2 lua5.2-dev libsndfile-dev portaudio19-dev 

Les packages que vous installez dépendent des plug-ins. Si un package est manquant, une erreur peut apparaître dans les deux étapes suivantes.

Configuration et installation du serveur FreeSWITCH


Après cela, vous devez exécuter le configurateur pour vérifier toutes les dépendances et installer des options de génération supplémentaires. Le configurateur construira le Makefile sur la base des connaissances acquises et du fichier makefile.am.

Nous exécutons la commande:

 ./configure --enable-system-lua 

Si tout s'est bien passé, nous obtenons le message suivant:



Passons Ă  l'installation elle-mĂŞme:

 make make install 

Si le résultat est positif, Freeswitch est installé par défaut dans le /usr/local/freeswitch ; à la fin de la configuration, nous pouvons voir la liste et l'emplacement des répertoires FS.


Si une erreur s'est produite pendant l'installation ou la configuration, comme mod_lua.cpp: 37: 17: erreur fatale: lua.h: Aucun fichier ou répertoire #include "lua.h", vous devez installer les bibliothèques nécessaires à l'aide de la commande de recherche. Je n'ai pas pu installer freeswitch avec les packages liblua5.3-0 liblua5.3-dev, j'ai dû installer la version 5.2.

 Apt search lua 



Installez des fichiers audio avec prise en charge de la langue russe:

 make cd-sounds-install make cd-sounds-ru-install cd-moh-install 

Le processus d'installation peut être terminé.

Pour empêcher l'écriture de petits fichiers de base de données dans la mémoire flash et augmenter sa durée de vie, nous ajoutons la ligne dans le fichier / etc / fstab:

tmpfs /usr/local/freeswitch/db tmpfs defaults 0 0


Après le redémarrage, les fichiers temporaires créés par FS seront écrits dans la RAM.

Configuration du système après l'installation de FreeSWITCH.


Il y a un avertissement dans la documentation de FreeSWITCH, donc je ne recommande pas d'essayer d'exécuter FS immédiatement après l'installation.

** Attention! Si vous avez installé FreeSWITCH à partir des sources, vous devez définir des autorisations sur les répertoires et les fichiers. Si vous exécutez FreeSWITCH après l'installation, il démarrera par défaut en tant que 'root'. Les autorisations de répertoire doivent être modifiées avant le lancement initial. **

Créer un nouvel utilisateur et définir des autorisations et changer les propriétaires en fichiers FreeSwitch

 cd /usr/local groupadd freeswitch adduser --quiet --system --home /usr/local/freeswitch --gecos "FreeSWITCH open source softswitch" --ingroup freeswitch freeswitch --disabled-password chown -R freeswitch:freeswitch /usr/local/freeswitch/ chmod -R ug=rwX,o= /usr/local/freeswitch/ chmod -R u=rwx,g=rx /usr/local/freeswitch/bin/* 

Ensuite, copiez le fichier de lancement automatique sur systemd, renommez-le, modifiez les droits d'accès.
FreeSWITCH est fourni avec un fichier systemd qui, s'il est correctement configuré au démarrage, surveille FreeSWITCH et le démarre en tant que démon, le redémarre si FS ne fonctionne pas.

 cp /home/pi/freeswitch/debian/freeswitch-systemd.freeswitch.service /etc/systemd/system/freeswitch.service chmod +x /etc/systemd/system/freeswitch.service 

Nous faisons un lien vers le fichier de lancement et créons un lien vers le fichier de lancement de la console FS:

 ln -s /usr/local/freeswitch/bin/freeswitch /usr/bin/freeswitch ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin/fs_cli 

Ajoutez le service de commutation gratuite au chargement automatique:

 systemctl enable freeswitch systemctl daemon-reload systemctl start freeswitch 

Après cela, mon FS n'a toujours pas démarré, j'ai eu une erreur avec un fichier * .pid, je viens de modifier le fichier de démarrage automatique nano /etc/systemd/system/freeswitch.service
Commentant la ligne suivante dans le fichier: # PIDFile = / run / freeswitch / freeswitch.pid.



Juste au cas oĂą, nous surcharger Raspberry (comme vous vous en souvenez, pendant que nous travaillons depuis root): reboot

Après le redémarrage, nous donnons à nouveau la commande que nous entrons via sudo -i, exécutons htop et voyons les processus FreeSWITCH en cours d'exécution.

Un peu sur les paramètres initiaux:

Après l'installation, FreeSWITCH est prêt à fonctionner, par défaut il y a 20 abonnés avec les numéros 1000-1019. Le mot de passe par défaut pour les abonnés VoIP est spécifié dans le fichier /usr/local/freeswitch/conf/vars.xml et est 1234. Le répertoire / usr / local / freeswitch / conf / derectory / default contient 20 fichiers xml, chacun étant responsable de l'abonné avec le numéro correspondant. Nous pouvons définir un mot de passe pour chaque abonné, changer le nom du fichier et les données dans son contenu, nous pouvons changer la numérotation et la capacité.

Si vous devez le faire, après avoir édité les fichiers, vous devez démarrer la console fs_cli : fs_cli et dans la fenêtre de la console, nous donnons la commande reloadxml . Avec cette commande, FS relit les fichiers XML et accepte les modifications.



Quittez la console: ctrl+D ou en tapant /exit ou /quit

Essayons maintenant de connecter les abonnés IP. Pour vérifier la connexion, j'ai utilisé sur un PC sous Windows: des softphones MicroSIP et PhonerLite et sur un téléphone portable sous Android CSipSimle OS, les paramètres sont les suivants (nom du compte - numéro de téléphone, serveur SIP - l'adresse de notre Raspberry:
Une icône verte dans la barre d'état inférieure de ces programmes signifie que l'abonné est autorisé sur notre serveur VoIP et est prêt à communiquer.



En composant le numéro, nous pouvons vérifier l'appel de l'abonné et certaines autres fonctions du PBX IP.
Mais je ne vois pas d'application particulière à la maison pour un PBX de bureau typique. Essayons d'utiliser des fonctionnalités plus avancées de FreeSWITCH.

Freeswitch a une structure modulaire, les plug-ins peuvent être consultés dans le fichier
modules.conf.xml

Éditons-le, j'ai désactivé les codecs vidéo et connecté le module de langue russe ainsi que mod_xml_rpc.

  nano /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml</>      <source><!-- --> 

dans la ligne avant et après le nom du module. Désactiver - au contraire, en mettant ces symboles, un petit exemple, le premier module est activé, le second est désactivé:

 <load module="mod_xml_rpc"/> <!-- <load module="mod_xml_curl"/> --> 

Après cela, si vous souhaitez changer, nous éditons les paramètres simples (port, utilisateur, mot de passe) du module lui-même dans le fichier xml_rpc.conf.xml, qui se trouve dans le même répertoire.
nano /usr/local/freeswitch/conf/autoload_configs/modules.conf.xml

Par défaut: user - freeswitch, password works, port 8080.

Nous surchargeons frisvitch ou le serveur lui-même. Il existe plusieurs façons de procéder: redémarrez l'ensemble du système (redémarrage) à l'aide des commandes de contrôle de service: systemctl stop freeswitch puis systemctl start freeswitch ou systemctl restart freeswitch .

Après cela, en tapant http://IP_RASPBERRY:8080/portal/index.html# dans le navigateur et en passant sous l'utilisateur freeswitch avec le mot de passe, nous entrons dans le petit panneau d'administration FreesWITCH. Nous pouvons voir le statut, les utilisateurs enregistrés, etc.



Essayons d'aller un peu plus loin:

La saisie d'une demande dans le navigateur affiche l'état de FS:

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



La syntaxe est assez simple, si la commande contient plus d'un mot, les premier et deuxième mots sont séparés par un point d'interrogation et le reste par des espaces.

Essayons d'exécuter cette commande depuis MajorDoMo: à partir de la page principale de "Smart Home", allez dans le Panneau de configuration - Console

Nous y tapons la commande:

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

En réponse, nous obtenons le statut de notre serveur VoIP.



Essayez maintenant l'expérience suivante:

L'idée est de lancer un appel (en utilisant la fonction d'origine) du côté de Smart Home vers l'abonné avec le numéro 1001 (MicroSip), puis de transférer l'appel terminé vers le plan de numérotation pour les appels sortants vers 1002 (PhonerLite). La commande API ressemble à ceci: originate user / 1001 1002 XML par défaut initie un appel vers le numéro de console 1001, après que le combiné a été décroché (automatiquement décroché), le numéro et 1002 sont appelés à partir du plan de numérotation par défaut.

Nous le traduisons sous une forme compréhensible pour MajorDoMo et le navigateur:

 GetURL("http://freeswitch:works@192.168.43.60:8080/webapi/originate?user/1001%201002%20XML%20default") 

D'abord, un softphone sonne, après quelques secondes il y a un appel au second.



En conclusion, ou une petite mise en œuvre pratique


Il n'y a pas si longtemps, j'avais besoin d'établir une communication avec une personne physiquement incapable d'appeler (composer) sur un téléphone portable. Pour le moment, la nécessité de cela a disparu, mais a quand même décidé de vérifier la faisabilité. En utilisant une passerelle VoIP (une solution plus abordable aux terminaisons FXS ou une passerelle GSM plus chère), le bouton «maison intelligente» sans fil peut être implémenté si vous le souhaitez.

Deuxième option: le système de maison intelligente MajorDoMo a un assistant vocal Alice. Vous pouvez maintenant essayer de connecter la "Smart House" avec le propriétaire et son téléphone portable via les réseaux publics.

Quelques liens

→ Site ClueCon du développeur FreeSWITCH
→ Documentation en anglais FreeSWITCH
→ Site développeur MajorDoMo
→ Première partie: une petite instruction pas à pas pour l'installation du système d'exploitation Smart Home basé sur un ordinateur monocarte Raspberry, un module Z-Way RaZberry et un logiciel MajorDoMo
→ Deuxième partie: suite: module Z-Way RaZberry et logiciel MajorDoMo
→ Troisième partie: continuer à créer une maison intelligente sans fil

Source: https://habr.com/ru/post/fr426429/


All Articles