[Freeswitch-users] Sharing: Call Intercept
João Mesquita
jmesquita at freeswitch.org
Mon Jun 25 09:55:10 MSD 2012
Tony, I will get it documented tomorrow. Will create a page just for it.
Regards,
--
João Mesquita
Sent with Sparrow (http://www.sparrowmailapp.com/?sig)
On Sunday, June 24, 2012 at 10:54 PM, Anthony Minessale wrote:
> Thanks for the positive comment. =D
>
> BTW, that reminds me. I added a new pickup endpoint that you might
> want to have a look at as well.
> It lets you add a special pickup endpoint to a forked dial so say you
> are calling ext 1000, you can do
>
> <action application="bridge" data="user/1000,pickup/1000"/>
>
> Then from another call you can execute:
>
> <action application="pickup" data="1000"/>
> And your channel will be returned to that unanswered originate.
>
> We should probably get it documented.
>
>
> On Sat, Jun 23, 2012 at 9:29 AM, Frank Busalacchi Jr
> <frankjr at mcpeekdodge.com (mailto:frankjr at mcpeekdodge.com)> wrote:
> > Over the last 6 months, I have received all kinds of support and help from
> > the freeswitch community (both IRC and this list) in learning to control
> > this incredible piece of software. Im truly grateful, thanks everyone.
> >
> >
> >
> > I run freeswitch at my car dealership. We have approximately 40 sip
> > extensions, an ATT voip connection, and 6 analog outbound fax lines provided
> > by freetdm. Prior to freeswitch, I was running an old Lucent/Avaya Merlin
> > "key" system. One of the features of the Merlin was that it was pretty easy
> > to do "directed callpick". In essence, you would dial *7 + extension you
> > wanted to pickup. Provided the call was either on hold or ringing at that
> > extension, you would pick it up. When I first started using Freeswitch, I
> > was very disappointed in the directed callpick. Before I realized that the
> > call pickup that was built into the sample dialplan was really just an
> > example to show a simple possibility for using intercept. I was convinced
> > that it was a totally useful feature. I couldn't believe that was as good
> > as it got... My problem with the directed pickup that is in the sample
> > dialplan is that it can steal a live call right from another extension, as
> > well as it really only works with the most recent call on that extension.
> >
> >
> >
> > Then I woke up, and rolled my own 8-) . In an effort to provide just
> > another example, I wanted to share the piece of code I've developed. I will
> > warn that this was the first perl script I have ever written, and probably
> > is pretty ugly, but it seems to work perfectly in our environment. Bottom
> > line, do what you want with it...I'm just trying to help other beginner's
> > like myself:
> >
> >
> >
> > To all beginners: You will need to build and enable mod_perl for this to
> > work...
> >
> >
> >
> > First, we need an entry in your XML dialplan to see the user's request to
> > interecept a "held" or "ringing" extension. The only 4 digit extensions at
> > my company are internal ones so I match on ** + 4-digit-extension.
> >
> >
> >
> > In the xML dialplan:
> >
> >
> >
> > <extension name="intercept-ext">
> > <condition field="destination_number" expression="^\*\*(\d{4})$">
> > <action application="answer"/>
> > <action application="perl"
> > data="/usr/local/freeswitch/scripts/myintercept.pl (http://myintercept.pl) $1"/>
> > <action application="sleep" data="2000"/>
> > </condition>
> > </extension>
> >
> > Then, we need the actual perl script:
> >
> > /usr/local/freeswitch/scripts/myintercept.pl (http://myintercept.pl):
> >
> >
> > # This is code to allow us to use intercept to grab only calls that are on
> > hold or ringing.
> > #
> > # by Frank Busalacchi 2012-06-13
> >
> > use strict;
> > use Switch;
> > use Data::Dumper;
> > use XML::Simple;
> > use POSIX qw(strftime);
> > our $session;
> >
> > {
> > my $dest_target = $ARGV[0];
> >
> > my $api = new freeswitch::API();
> > my $xml = new XML::Simple;
> > my $chan_xml = $xml->XMLin($api->executeString("show detailed_calls as
> > xml"),KeyAttr => 'row', ForceArray => ['row']);
> >
> > my %candidates;
> > my $result;
> >
> > foreach my $row (@{$chan_xml->{row}}) {
> > if ($row->{callstate} eq "RINGING" && $row->{dest} eq $dest_target)
> > {
> > $candidates{ $row->{created_epoch} - 1000 } =
> > $row->{call_uuid}; #In the case of a tie, we want to pickup ringing
> > calls before held calls...
> > next;
> > }
> >
> > elsif ($row->{callstate} eq "HELD" && $row->{b_sent_callee_num} eq
> > $dest_target ) {
> > $candidates{ $row->{created_epoch} } = $row->{b_uuid};
> > next;
> > }
> >
> > elsif ($row->{b_callstate} eq "HELD" && $row->{b_callee_num} eq
> > $dest_target ) {
> > $candidates{ $row->{b_created_epoch} } = $row->{uuid};
> > next;
> > }
> > }
> >
> > if( keys( %candidates ) == 0) {
> > $result = "[Intercept] No suitable channel to intercept on extension
> > $dest_target.";
> > freeswitch::consoleLog("INFO","$result\n");
> > }
> >
> > else {
> > my $user = $session->getVariable('caller_id_name');
> > my $cid_num = $session->getVariable('caller_id_number');
> >
> > for my $winner ( sort keys %candidates ) {
> >
> > my $uuid= $candidates{$winner};
> >
> > $result = "[Intercept]User:$user" . "[" . "$cid_num" . "]
> > intercepting Extension:$dest_target" . ". UUID:" . "$uuid" . "\n";
> > freeswitch::consoleLog("INFO","$result\n");
> > $session->execute("intercept",$uuid);
> > last;
> > }
> > }
> > 1;
> > }
> >
> >
> >
> > Enjoy!
> >
> >
> >
> > -Frank
> >
> >
> >
> >
> >
> >
> > _________________________________________________________________________
> > Professional FreeSWITCH Consulting Services:
> > consulting at freeswitch.org (mailto:consulting at freeswitch.org)
> > http://www.freeswitchsolutions.com
> >
> >
> >
> >
> > Official FreeSWITCH Sites
> > http://www.freeswitch.org
> > http://wiki.freeswitch.org
> > http://www.cluecon.com
> >
> > Join Us At ClueCon - Aug 7-9, 2012
> >
> > FreeSWITCH-users mailing list
> > FreeSWITCH-users at lists.freeswitch.org (mailto:FreeSWITCH-users at 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 at hotmail.com (mailto:anthony_minessale at hotmail.com)
> GTALK/JABBER/PAYPAL:anthony.minessale at gmail.com (mailto:anthony.minessale at gmail.com)
> IRC: irc.freenode.net (http://irc.freenode.net) #freeswitch
>
> FreeSWITCH Developer Conference
> sip:888 at conference.freeswitch.org (mailto:888 at conference.freeswitch.org)
> googletalk:conf+888 at conference.freeswitch.org (mailto:conf+888 at conference.freeswitch.org)
> pstn:+19193869900
>
> _________________________________________________________________________
> Professional FreeSWITCH Consulting Services:
> consulting at freeswitch.org (mailto:consulting at freeswitch.org)
> http://www.freeswitchsolutions.com
>
>
>
>
> Official FreeSWITCH Sites
> http://www.freeswitch.org
> http://wiki.freeswitch.org
> http://www.cluecon.com
>
> Join Us At ClueCon - Aug 7-9, 2012
>
> FreeSWITCH-users mailing list
> FreeSWITCH-users at lists.freeswitch.org (mailto:FreeSWITCH-users at lists.freeswitch.org)
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20120625/c6827a3c/attachment.html
Join us at ClueCon 2011 Aug 9-11, 2011
More information about the FreeSWITCH-users
mailing list