]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Dispatch will call you on register, and call you back if you hangup on next register
authorBrian West <brian@freeswitch.org>
Fri, 18 Apr 2014 01:35:57 +0000 (20:35 -0500)
committerBrian West <brian@freeswitch.org>
Fri, 18 Apr 2014 01:35:57 +0000 (20:35 -0500)
libs/esl/perl/dispatch.pl

index fd61913d832f1c6418e803d74056f783524773d8..ce7a82ef30fc4bbac15c327e96ae2ba89c6db179 100644 (file)
@@ -2,7 +2,11 @@
 
 use ESL::Dispatch;
 use Data::Dumper;
+
 my $daemon = init ESL::Dispatch({});
+my $calls;
+# Debug Yo!
+#ESL::eslSetLogLevel(7);
 
 $| = 1;
 
@@ -11,23 +15,34 @@ sub worker {
   print "I'm a worker\n";
 }
 
-sub heartbeat {
+sub register {
   my $self = shift;
   my $event = shift;
-  print Dumper $event;
+  my $esl  = $self->{_esl};
+  my $contact = $event->{contact};
+  my $profile = $event->{'profile-name'};
+  my $callid  = $event->{'call-id'};
+
+  return if $call->{$callid};
+  
+  $contact =~ s/.*\<(.*)\>.*/{my_call_id=$callid}sofia\/$profile\/$1/;  
+  $esl->api('bgapi', "originate $contact &echo");
+  print "Adding $callid to calls hash\n";
+  $call->{$callid} = 1;
 }
 
 sub channel_hangup {
   my $self = shift;
   my $event = shift;
-  print Dumper $event;
-  print "DO SQL GOODIES HERE!\n";
+  my $callid = $event->{variable_my_call_id};
+  print "Removing $callid from calls hash\n";
+  delete $call->{$callid};
 }
 
 $0 = "ESL::Dispatch rocks!";
 
 $daemon->set_worker(\&worker, 2000);
-$daemon->set_callback("heartbeat", \&heartbeat);
+$daemon->set_callback("custom", \&register, 'sofia::register');
 $daemon->set_callback("channel_hangup", \&channel_hangup);
 
 $daemon->run;