web-dev-qa-db-fra.com

Client SIP pour Raspberry Pi qui fonctionne à partir de la ligne de commande?

je veux utiliser mon Raspberry Pi comme un téléphone SIP/VOIP, en contrôlant simplement le RPI via SSH.

J'ai trouvé quelques tutoriels et il semble que Twinkle soit l'une des applications les plus utiles pour cela.

J'ai donc installé avec succès Twinkle sur mon RPI, un SPI-Client sur mon Android-Phone et pour savoir que je peux envoyer des messages texte de l'un à l'autre.

La chose est: je dois utiliser l'interface graphique Twinkel avec le transfert X-Server (actuellement en utilisant MacOS avec X11 et iTerm).

Mais je veux en quelque sorte automatiser tout le processus, comme utiliser scintillement à partir de la ligne de commande, le contrôler avec des scripts, etc.

Donc, évidemment, le scintillement n'est pas fait pour ça. (il n'y a même pas de documentation pour le fichier account-config, donc j'ai dû lutter pour ce truc x11-forwarding)

Donc, ma dernière question est: Y a-t-il un client SIP comparable pour le RPI qui peut être contrôlé via CLI?

tout indice est très apprécié. En recherchant cette question sur Google, je viens de trouver des projets fonctionnant avec un astérisque-serveur sur le RPI ou y attachant des écrans - mais ce n'est pas ce que je recherche ...

bravo et merci

10
n.r.

Je fais la même chose et je suis tombé sur des options supplémentaires jusqu'à présent:

  1. Linphone : Facile à installer mais je ne passe pas d'appels téléphoniques
    RaspberryPI: Faire SIP appels sortants en utilisant linphonec ou une alternative SIP soft phone

  2. Ring (anciennement SFLphone): semble prometteur mais doit être installé à partir de la source
    Installation du "ring.cx SIP client" sur un Raspberry Pi .
    Mise à jour : Consultez également la réponse de @ aberaud ci-dessous

  3. [~ # ~] pjsip [~ # ~] (Bibliothèque C)

CLI scintillant

De la liste de diffusion SFLphone, j'ai reçu ces commentaires, qui pourraient vous aider:

Je suis intéressé de savoir si le projet écrit quelque chose pour cela. En passant, j'ai utilisé Twinkle SIP client qui permet de passer la commande à un processus déjà lancé qui permet par exemple de répondre à un appel entrant. C'était vraiment cool et me permet de mapper certains raccourcis clavier contrôler mon téléphone sans changer de bureau et trouver les bonnes fenêtres.

Après quelques recherches, j'ai trouvé d'anciens scripts qui permettent de contrôler les anciennes versions de sflphone en utilisant son API DBUS. Inspiré par ces scripts, j'ai écrit le mien, compatible avec la version de sflphone que j'ai utilisée (1.4.1 dans Debian Wheezy):

https://gitlab.com/brenard/sflphone-ctl

C'est du travail et je l'utilise tous les jours. Le transfert d'appel ne fonctionne pas sur mon bureau mais il semble que ce soit un bug sur la version 1.4.1 de sflphone.

B. R.

BTW: twinkle --help montre ce qui suit:

--cmd <cli command>
    Instruct Twinkle to execute the CLI command. You can run
    all commands from the command line interface mode.
    When Twinkle is already running, this will instruct the running
    process to execute the CLI command.

    Examples:
    twinkle --cmd answer
    twinkle --cmd mute
    twinkle --cmd 'transfer 12345'

Je n'ai pas eu de chance jusqu'à présent, mais je veux vraiment que cela fonctionne aussi.

11
Besi

Le meilleur client VOIP pour Raspbery Pi dans mon expérience est Twinkle.

 Sudo apt-get scintille d'installation 

Utilisez l'application pour créer un profil (c'est-à-dire configurer le compte) et nommez-le scintillant (tout en minuscules). Cela est enregistré dans

/home/pi/.twinkle/twinkle.conf

La commande ci-dessous vous emmènera dans une invite de traitement de commande Twinkle.

$ scintillement -c 
Twinkle> appeler +17601234567 
 
 Twinkle> bye 
 
 Twinkle> quitter 
 
 $ 
 $

Voici le script python qui devrait vous aider à faire la ligne de commande:

 import sys 
 from subprocess import Popen, PIPE 
 
 proc = Popen (["twinkle", "-c"], stdin = PIPE, stdout = PIPE , bufsize = 1) 
 
 pour la ligne dans l'iter (proc.stdout.readline, b ''): 
 imprime la ligne 
 if (line.find (" enregistrement réussi ")> 0): 
 proc.stdin.write (" appelez le +17601234567\n ") 
 # faites ce que vous voulez en ajoutant le code ... 
 if ( line.find ("appel à réponse distante")> 0): 
 proc.stdin.write ("bye\n") 
 proc.stdin.write ("quit\n") 
 proc.communicate () 
5
Steve

Contrôle du démon Ring (anciennement SFLPhone) avec un script Python:

  1. Construisez le démon Ring:

  2. Exécutez le démon Ring: ./bin/dring -c -d. Vous devriez voir Ring fonctionner avec certains journaux. La première option -c imprimera les journaux sur la console (stdout/stderr) et -d activera les journaux de débogage.

  3. Exécutez le contrôleur python3 D-Bus:

    • Ouvrez un nouveau terminal pour ring/tools/dringctrl, tout en maintenant le démon actif.
    • Essayez de répertorier les comptes configurés avec: ./dringctrl.py --gara. Si tout a fonctionné, vous devriez au moins voir "IP2IP", le compte par défaut qui gère directement IP vers IP SIP appels.
    • Essayez d'appeler un autre point de terminaison SIP avec ./dringctrl.py --call someIP.
    • Courir ./dringctrl.py --help pour voir les commandes actuellement implémentées dans le script python.
  4. Configurez Ring et modifiez le script python pour l'adapter à vos besoins

    • Malheureusement, l'ajout/la configuration de comptes à partir du script python n'est pas encore implémenté (ce serait cependant possible). La configuration des comptes est stockée dans /home/$USER/.config/ring/dring.yml. Si vous prévoyez d'avoir une configuration statique, vous pouvez modifier le fichier de configuration une fois manuellement ou en utilisant l'une des interfaces graphiques disponibles, éventuellement à partir d'un autre ordinateur, puis en copiant le fichier (sur un bureau, installez simplement les packages officiels: http: // ring.cx/en/documentation/gnulinux-installation ).
2
aberaud

vous voulez "utiliser votre Raspberry Pi comme un téléphone SIP/VOIP, en contrôlant simplement le RPI via SSH"?

la meilleure et la plus simple solution à mon humble avis est:

utilisez simplement l'astérisque lui-même et son interface de console ingénieuse + un casque USB (par exemple, le casque Logitech H800) pour cela!

Le H800 apparaît comme une carte son conventionnelle accessible directement par le module de canal 'chan_alsa' de l'astérisque. C'est tout!

Cela me donne une excellente qualité audio et une interface de console pure avec les capacités inégalées de l'astérisque. Manque totalement la gêne de toute interface graphique. Le tout fonctionnant sur une framboise. L'astérisque et "chan_alsa" (ou même "chan_oss") font partie intégrante de toutes les principales distributions.

En option, vous pouvez rendre le tout complètement sans fil en utilisant un dongle WLAN dans le port USB restant.

1
sparkie

Ce que j'obtiens jusqu'à présent:

J'utilise RasPi B + avec Raspbian OS.

Ce que j'ai essayé jusqu'à présent: Twinkle (installez avec Sudo apt-get install twinkle)

Une fois configuré, vous pouvez l'utiliser via CLI, mais malheureusement je n'ai pas pu configurer Twinkle via la ligne de commande. J'ai dû configurer X-Forwarding pour mon Mac. J'ai installé X11 (resp. XQuartz) pour Mac. J'ai donc pu voir l'interface graphique et configurer Twinkle.

Ce qui a fonctionné: j'ai pu envoyer des messages, mais lorsqu'un appel est arrivé, Twinkle s'est écrasé. Je dois préciser, actuellement il n'y a pas de périphériques audio installés (pas de micro, pas de haut-parleurs).

Après cela, j'ai recherché le téléphone SFL. Cela ne vient pas avec une CLI. Donc ce n'est pas la peine de le tester.

J'ai également lu sur Linphone. Actuellement, je ne l'ai pas essayé, car certaines personnes signalent des difficultés à l'utiliser dans ses propres applications.

La dernière chose que j'ai trouvée est PJSIP.

Je l'ai installé comme ça:

Sudo su - 
apt-get install Subversion
svn checkout http://svn.pjsip.org/repos/pjproject/trunk
apt-get install build-essential automake autoconf libtool libasound2-dev libpulse-dev libssl-dev libsamplerate0-dev libcommoncpp2-dev libccrtp-dev libzrtpcpp-dev libdbus-1-dev libdbus-c++-dev libyaml-dev libpcre3-dev libgsm1-dev libspeex-dev libspeexdsp-dev libcelt-dev
cd trunk
./configure && make dep && make clean && make && make install

Cela a pris un certain temps et a une CLI décente. J'ai pu envoyer et recevoir des appels. Pour l'instant, j'attends ma carte son USB, un microphone et quelques haut-parleurs pour faire des tests complets.

1
n.r.

J'ai eu du succès avec Simple SIP SDK. Je cherchais quelque chose avec le support OPUS.

https://sipsimpleclient.org/

C'est un peu de travail à construire. Après avoir construit et installé

sip-settings -a add [email protected] 1234678 <--password
sip-settings -a default [email protected]
sip-settings -a set [email protected] sip.outbound_proxy=172.31.0.1
sip-register  <-- seems optional
sip-audio-session sip:[email protected]
0
user3718260