Skip to content

Instantly share code, notes, and snippets.

@maximevalette
Created January 30, 2011 10:39
Show Gist options
  • Save maximevalette/802764 to your computer and use it in GitHub Desktop.
Save maximevalette/802764 to your computer and use it in GitHub Desktop.
SIP Call in Perl
#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long qw(:config posix_default bundling);
use Net::SIP;
#Usage
sub usage {
print STDERR "ERROR: @_\n" if @_;
print STDERR <<EOS;
usage: $0 [ options ] no de tel
Joue un fichier vers un téléphone après que le correspondant décroche
Options:
-R|--registrar host[:port] register at given address
-S|--send filename Fichier audio
--username name
--password pass probablement mieux à faire pour le cacher d'un ps
EOS
exit( @_ ? 1:0 );
}
my ($file,$registrar,$username,$password);
GetOptions(
'R|registrar=s' => \$registrar,
'S|send=s' => \$file,
'username=s' =>\$username,
'password=s' =>\$password,
) || usage( "bad option" );
my( $to )=@ARGV;
$to || usage( "pas de destination" );
# create new agent
print "Creating connection\n";
my $ua = Net::SIP::Simple->new(
registrar => $registrar,
domain => $registrar,
from => $username,
auth => [ $username,$password ],
);
# Register agent
$ua->register( expires => 1800 ) # <- Valeur mini chez free
|| die ( "Pas enregistré " . $ua->error );
print "Enregistré\n";
# Variables d'arret.(sort de loop quand rtp_done est vrai)
my $rtp_done;
print "Appelle ".$to.'@'.$registrar."\n";
my $call= $ua->invite( $to,
init_media => $ua->rtp( 'send_recv', $file ),
cb_rtp_done => \$rtp_done,
asymetric_rtp => 0,
rtp_param => [ 8, 160, 160/8000, 'PCMA/8000' ],
) ||die "invite failed: ".$ua->error;
# Mainloop
$ua->loop( \$rtp_done );
$call->bye;
* * * * * root if [ -e /home/maxime/monitoring/call ]; then rm /home/maxime/monitoring/call; /home/maxime/monitoring/call.pl; fi
@MauroBarducco
Copy link

Hello Maxim ,

First , thanks for Your work about call.pl .

I have a question about an issue .
When I make a call the called ring and when he answer I receive :

Use of uninitialized value $readfrom in open at /home/noula/perl5/lib/perl5/Net/SIP/Simple/RTP.pm line 367.
File o directory do not exist at /home/noula/perl5/lib/perl5/Net/SIP/Simple/RTP.pm line 367.

Any suggestion ???

Thanks in advance .

@mohamadtay
Copy link

hi
how are you
I want help in
Create a special code in
Receiving calls
In perl
Where I have
Sip accont
The connection will be made by way of
If the connection is made
Now I want to help with the work of a code to receive the call by another sip accont method
With caller cli printing

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment