I've tried the following program as per the suggestion that you've told. But it seems, no success. Once the connection is closed, I created a new connection and I send originate to originate a new call. But it is not working.
require ESL;
use IO::Socket::INET;
use Data::Dumper;
my $ip = "192.168.1.222";
my $sock = new IO::Socket::INET ( LocalHost => $ip, LocalPort => '8447', Proto => 'tcp', Listen => 2, Reuse => 1 );
die "Could not create socket: $!\n" unless $sock;
my $make_call;
my $con;
my $type = "user/";
for(;;) {
my $new_sock = $sock->accept();
my $pid = fork();
if ($pid) {
close($new_sock);
next;
}
my $host = $new_sock->sockhost();
my $fd = fileno($new_sock);
$con = new ESL::ESLconnection($fd);
my $info = $con->getInfo();
my $uuid = $info->getHeader("unique-id");
printf "Connected call %s, from %s to %s\n", $uuid, $info->getHeader("caller-caller-id-number"), $info->getHeader("caller-destination-number");
$con->filter("Unique-Id", $uuid);
$con->events("plain", "all");
$con->execute("answer");
$con->setEventLock("true");
my $number=$con->execute("read","2 4 /usr/local/freeswitch/sounds/en/us/callie/conference/8000/conf-pin.wav accnt_number 5000 #");
while($con->connected())
{
my $e=$con->recvEvent();
my $ename=$e->getHeader("Event-Name");
my $app=$e->getHeader("Application");
if($ename eq "CHANNEL_EXECUTE_COMPLETE" and $app eq "read")
{
my $num=$e->getHeader("variable_accnt_number");
print "$num\n";
$con->execute("hangup");
}
}
if(!$con->connected())
{
print "Connection not exists\n";
$con = new ESL::ESLconnection($fd);
$con->api("originate","user/1000 &park()");
print "Hai\n";
}
print "Bye\n------------------------------------------------------------------\n";
close($new_sock);
}
Output:
Connected call 6b713588-d8c5-11de-8d50-596fac84e59e, from 1000 to 9097
1000
Connection not exists
Hai
Bye
------------------------------------------------------------------
The freeswitch log is in
http://pastebin.freeswitch.org/11258
I also noted that, if I don't receive any events, especially "SERVER_DISCONNECTED", then the connection is in established state, but once I receive the "SERVER_DISCONNECTED" event, the connection is closed. Is it correct??
or open a new outbound connection at the end of your script so you can send your originate command.
Since the channel hanging up will close your existing connection since it's only an outbound single session socket.
On Mon, Nov 23, 2009 at 11:51 AM, Michael Collins <msc@freeswitch.org> wrote:
_______________________________________________On Mon, Nov 23, 2009 at 3:25 AM, lakshmanan ganapathy <lakindia89@gmail.com> wrote:
Hi,
I'm using perl ESL to control the call in freeswitch.
I'm having the following scenario, but not able to get it right.
Dialplan:
<extension name="outbound_soc">
<condition field="destination_number" expression="^9097$">
<action application="set" data="continue_on_fail=true"/>
<action application="socket" data="192.168.1.222:8447 async full"/>
</condition>
</extension>
1. User A calls to an extention (1000).
2. My ESL program will be running, and it answers the call.
3. Then the program will get a number from the user.
4. It will hangup the call.
5. The program has to call to the number that was given by the user.
In the above scenario, I was able to do until the 4th step. After hangup the call, if I say originate it is not working.
Any ideas on how to do this in ESL.
I want to make sure I understand what the script is supposed to be doing. The caller will key in a phone number to your script and your script will collect those digits. The script will then hangup on the caller and originate a completely new call? Perhaps you could use sched_api to schedule a new originate command for a few seconds into the future and then hangup?
-MC
FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org
--
Anthony Minessale II
FreeSWITCH http://www.freeswitch.org/
ClueCon http://www.cluecon.com/
Twitter: http://twitter.com/FreeSWITCH_wire
AIM: anthm
MSN:anthony_minessale@hotmail.com
GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com
IRC: irc.freenode.net #freeswitch
FreeSWITCH Developer Conference
sip:888@conference.freeswitch.org
iax:guest@conference.freeswitch.org/888
googletalk:conf+888@conference.freeswitch.org
pstn:213-799-1400
_______________________________________________
FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org