拨打固定电话、输入密码并记录的程序?

拨打固定电话、输入密码并记录的程序?

有没有一个程序视窗(或 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

相关内容