Ответы:
Командная строка Linux:
linphone
включает в себя сценарий linphonec
версия для командной строки. начало linphonec
с --pipe
опция создаст сокет в /tmp
что можно писать и читать.
Он удовлетворяет всем вашим требованиям, и я успешно протестировал (для собственного использования)
Вы бы сделали цикл следующим образом:
#!/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
,