Raspberry Pi的SIP-Client可以在命令行下运行吗?

问题描述 投票:9回答:6

我想使用我的覆盆子pi作为SIP / VOIP-Phone,只需通过SSH控制RPI。

我找到了一些教程,看起来Twinkle是最有用的应用程序之一。

所以我成功地在我的RPI上安装了闪烁,在我的Android-Phone上安装了一个SPI-Client,并且知道我能够从一个到另一个发送短信。

问题是:我必须使用带有X-Server转发的Twinkle GUI(目前使用带有X11和iTerm的EMacS)。

但我有点希望自动化整个过程,比如从命令行使用twinkle,用脚本控制它等。

因此,显然不是为此而闪烁的。 (甚至没有account-config-file的文档,所以我不得不努力通过x11-forwarding-stuff)

所以,我的最后一个问题是:是否可以通过CLI控制RPI的可比SIP客户端?

任何提示都受到高度赞赏。在谷歌搜索这个问题时,我刚刚发现项目在RPI上使用asterisk-server或将显示附加到它 - 但那不是我想要的......

欢呼和谢谢

client raspberry-pi command-line-interface sip voip
6个回答
11
投票

我做同样的事情,到目前为止我遇到了其他选项:

  1. Linphone:易于安装,但我无法拨打电话 RaspberryPI: Making SIP outbound calls using linphonec or an alternative SIP soft phone
  2. Ring(以前称为SFLphone):看起来很有前途,但需要从源代码安装 Installing the "ring.cx SIP client" on a Raspberry PI。 更新:还查看@ aberaud的回答below
  3. PJSIP(C库) this tutorial推荐 Compile and Install on Raspihttp://www.pjsip.org

Twinkle CLI

从SFLphone邮件列表中我得到了这个反馈,这可能对您有所帮助:

如果项目为此写了些东西,我很感兴趣。通过时,我使用了Twinkle SIP客户端,允许将命令传递给已经启动的进程,该进程允许例如接听来电。这真的很酷,允许我映射一些键盘快捷键来控制我的手机,而无需切换桌面和找到好的窗口。

经过一些搜索,我找到了一些旧脚本,允许通过使用它的DBUS API来控制旧版本的sflphone。通过这个脚本启发,我编写了自己的脚本,兼容我使用的sflphone版本(Debian Wheezy中的1.4.1):

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

这是我的工作,我每天都在使用它。呼叫转移在我的桌面上不起作用,但它是sflphone版本1.4.1的错误。

B. R.

顺便说一句:twinkle --help显示以下内容:

--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'

到目前为止我自己没有运气,但我真的想让它也能运作起来。


4
投票

根据我的经验,Raspberry Pi的最佳VOIP客户端是Twinkle。

 sudo apt-get install twinkle 

使用该应用程序创建配置文件(即设置帐户)并将其命名为闪烁(全部小写)。这将保存到

/home/pi/.twinkle/twinkle.conf

下面的命令将带您进入Twinkle的命令处理提示。

$ twinkle -c 
Twinkle> call +17601234567

Twinkle> bye

Twinkle> quit 

$

这是python脚本,可以帮助您执行命令行:

import sys
from subprocess import Popen, PIPE

proc = Popen(["twinkle", "-c"], stdin=PIPE, stdout=PIPE, bufsize=1)

for line in iter(proc.stdout.readline, b''):
    print line
    if (line.find("registration succeeded") > 0):
        proc.stdin.write("call +17601234567\n")
    #do whatever you want by adding code...
    if (line.find("far end answered call") > 0):
        proc.stdin.write("bye\n")
        proc.stdin.write("quit\n")
proc.communicate()

2
投票

使用Python脚本控制Ring(以前称为SFLPhone)守护程序:

  1. 构建Ring守护进程: 安装依赖项:https://projects.savoirfairelinux.com/projects/ring-daemon/wiki/Debian-based 请遵循以下构建说明:https://projects.savoirfairelinux.com/projects/ring-daemon/wiki/ 其他依赖项(contrib):这部分将编译Debian repos中未提供的一些依赖项,包括最新版本的PJSIP(确保您没有在系统上安装旧的PJSIP - 如果您手动安装了最新版本,它应该工作正常,贡献不会建立它)。 构建Ring守护进程(dring
  2. 运行Ring守护进程:./bin/dring -c -d。您应该看到Ring运行一些日志。第一个选项-c将日志打印到控制台(stdout / stderr),-d将启用调试日志。
  3. 运行D-Bus python3控制器: 打开一个新的终端到ring/tools/dringctrl,同时保持守护进程运行。 尝试列出配置的帐户:./dringctrl.py --gara。如果一切正常,您至少应该看到“IP2IP”,这是处理直接IP到IP SIP呼叫的默认帐户。 尝试使用./dringctrl.py --call someIP调用另一个SIP端点。 运行./dringctrl.py --help以查看python脚本中当前实现的命令。
  4. 配置Ring并更改python脚本以满足您的需求 不幸的是,从python脚本添加/配置帐户尚未实现(尽管可能)。帐户配置存储在/home/$USER/.config/ring/dring.yml中。如果您打算进行静态配置,可以手动或使用其中一个可用的GUI编辑配置文件,可能是从另一台计算机上复制文件(在桌面上只安装官方软件包:http://ring.cx/en/documentation/gnulinux-installation)。

1
投票

到目前为止我得到了什么:

我正在使用Raspi B +和Raspbian OS。

到目前为止我尝试了什么:Twinkle(用sudo apt-get install twinkle安装)

配置完成后,您可以通过CLI使用它,但遗憾的是我无法通过命令行配置Twinkle。我不得不为我的Mac配置X-Forwarding。我为Mac安装了X11(相应的XQuartz)。所以我能够看到GUI并配置Twinkle。

什么工作:我能够发送消息,但当一个电话进来时,Twinkle崩溃了。我必须说明,目前没有安装声音设备(没有麦克风,没有扬声器)。

之后我搜索了SFL电话。这没有CLI。所以不值得测试。

我还读到了Linphone。目前我没有尝试过,因为有些人报告在自己的应用程序中使用它有困难。

我发现的最后一件事是PJSIP。

我安装它是这样的:

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

这需要一段时间,并且有一个不错的CLI。我能够发送和接听电话。现在我正在等待我的USB声卡,麦克风和一些扬声器进行全面测试。


1
投票

你想“使用你的树莓派作为SIP / VOIP电话,只需通过SSH控制RPI”?

最好和最简单的解决方案恕我直言:

只需使用星号本身及其巧妙的控制台界面+ USB耳机(例如罗技H800耳机)就可以了!

H800显示为由asterisk的'chan_alsa'频道模块直接访问的传统声卡。而已!

这为我提供了出色的音频质量和纯粹的控制台界面,具有无与伦比的星号功能。完全没有任何GUI的烦恼。全部都在覆盆子上运行。 Asterisk和'chan_alsa'(甚至'chan_oss')是所有主要发行版的组成部分。

您可以选择通过在剩余USB端口中使用WLAN加密狗来完全无线化。


0
投票

我在Simple SIP SDK上取得了成功。我正在寻找支持OPUS的东西。

https://sipsimpleclient.org/

构建需要做一些工作。建成并安装后

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]
© www.soinside.com 2019 - 2024. All rights reserved.