有没有一个程序视窗(或 Linux 命令行)平台是否可以从命令行执行以下操作?
- 称呼固定电话号码(使用我的 SIP 帐户)
- 进入密码
- 记录电话
- 完成经过一段时间或者对方挂断电话后?
答案1
Linux 命令行:
linphone
包括可编写脚本的linphonec
命令行版本。linphonec
从该选项开始将创建一个可以写入和读取的--pipe
套接字。/tmp
它满足您的所有要求,并且我已经成功测试了所有要求(供我自己使用):
- 通过 SIP 呼叫,
- 传输 DTMF 序列,
- 记录文件调用,以及
- 通过解析其输出,您可以看到调用何时结束并退出程序。
你可以做一个这样的循环:
#!/bin/bash
socket=/tmp/linphonec-$(id -u)
filename=$HOME/record
number=123456789
passfile=$HOME/1234.wav
linphonec --pipe 2>&1 |
while read -r line
do
echo $line
case $line in
*Ready )
sleep 1
echo ">>> initializing"
for command in \
"soundcard use files" \
"record $filename" \
"call $number"
do
echo -n $command | nc -q 5 -U $socket
done
;;
*Call\ *\ with\ *\ connected. )
sleep 1
echo ">>> sending pass"
echo -n "play $passfile" | nc -q 5 -U $socket
;;
*Call\ *\ ended. )
sleep 1
echo ">>> quitting"
while echo -n quit | nc -q 5 -U $socket 2>&-
do
i=$(expr $i + 1)
if test $i -ge 5
then
echo $(basename $0): could not shut down linphonec >&2
exit 1
fi
sleep 2
done
echo ">>> END"
exit
;;
esac
done
这还不是最佳解决方案。请注意,在 下>>> sending pass
,我正在播放 wav 文件而不是发送 DTMF 序列。linphone
能够实现后者,但在我粗略摆弄的过程中,我还没有找到正确的方法来做到这一点,而声音输入和输出是基于文件以允许录制的。
遗憾的是,linphone 文档很少。我以linphonec
交互方式启动并使用内置函数获得了最佳效果help
。