#!/usr/bin/perl use IO::Socket::INET; use Net::SIP::Leg; use Net::SIP::Simple; use Net::SIP::Simple::Call; use Net::SIP::Simple::RTP; use Net::SIP::Debug qw( Net::SIP*=2 Registrar=1 ); Net::SIP::Debug->level(2); $| = 1; my $ip_me = 'xxx.xxx.xx.xx'; #server executing the code my $ip_pbx = 'yyy.yyy.yy.yy'; #asterisk my $ip_to = 'zzz.zzz.zz.zzz'; #phone where I'm calling to # create new socket and leg print 'CREATING SOCKET AND LEG... '; my $sock_tel_1 = IO::Socket::INET->new(LocalAddr => $ip_me, PeerAddr => $ip_pbx, PeerPort => '5060', Proto => 'udp') or die "Can't bind : $@\n"; my $leg_tel_1 = Net::SIP::Leg->new( sock => $sock_tel_1); print 'OK'.$/; # create new rtp print 'CREATING RTP... '; my $echo_10 = Net::SIP::Simple->rtp( 'media_recv_echo', 'output.pcmu-8000' ); print 'OK'.$/; # create new agent print 'CREATING AGENT... '; my $ua = Net::SIP::Simple->new( registrar => $ip_pbx, #domain => 'netpro.cl', domain => $ip_pbx, from => 'devel', leg => $leg_tel_1, auth => ['user','password'] #user and password provided in the asterisk server ); print $ua->error.' '; print 'OK'.$/; # Register agent my $err = ''; print 'TRY TO REGISTER... '.$/; $ua->register(); $err = $ua->error; if ($err ne ''){ print $err.$/; } print 'OK'.$/; # Invite other party, send anncouncement once connected print 'SEND INVITE... '.$/; $ua->invite( $ip_to, init_media => $echo_10); $err = $ua->error; if ($err ne ''){ print $err.$/; } print 'OK'.$/; $ua->loop;