2

is there a program for Windows (or linux command line) platform that would do below from a command line?

  • call a land phone number (using my SIP account)
  • enter password
  • record the call
  • finishes after a period of time or after the other part hangs up?
3

Linux command line:

linphone includes a scriptable linphonec command-line version. Starting linphonec with the --pipe option will create a socket in /tmp that one can write to and read from.

It fulfills all your requirements and I've tested (for my own uses) all of them successfully:

  • Calling via SIP,
  • transmitting DTMF sequences,
  • recording a call to file, and
  • via parsing its output, you can see when the call finishes and quit the program.

You'd do a loop like this:

#!/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

This is not yet on optimal solution. Note that under >>> sending pass, I'm playing a wav file instead of sending a DTMF sequence. linphone is capable of the latter, but during my cursory fiddling I haven't yet found the right way to do so while sound in- and output is on file basis to allow recording.

Sadly, linphone documentation is sparse. I've had best results just starting linphonec interactively and using the builtin help.

| improve this answer | |
  • sounds really great. Could you give me some hint about the "via parsing its output, you can see when the call finishes and quit the program." I cannot grasp what it could mean. The rest be in readme or online help I guess. – Radek Apr 20 '11 at 2:47
  • The credentials can be put inside the configured file specified with the -c option. The number to call can be specified with -s. – Old Geezer Sep 2 '19 at 14:19
  • @peth In while echo -n quit | nc -q 5 -U $socket 2&>-, what condition evaluates to true/false? Also, what does 2&>- mean? For me, the expression evaluates to false but linphonec remains running. It's a pity the there is no option for linphonec to exit after a call hangs up. – Old Geezer Sep 2 '19 at 14:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.