123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #!/usr/bin/perl
- use ESL::Dispatch;
- use Data::Dumper;
- my $daemon = init ESL::Dispatch({});
- my $calls;
- # Debug Yo!
- #ESL::eslSetLogLevel(7);
- $| = 1;
- sub worker {
- my $self = shift;
- print "I'm a worker\n";
- }
- sub register {
- my $self = shift;
- my $event = shift;
- 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;
- 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("custom", \®ister, 'sofia::register');
- $daemon->set_callback("channel_hangup", \&channel_hangup);
- $daemon->run;
|