[Freeswitch-users] How to bridge a call to an extensiondefined in dialplan

Liu, Xingkun X.Liu at hw.ac.uk
Wed Feb 29 02:14:06 MSK 2012


>From the fs_cli command line, I don't know where to get the UUID for eavesdrop.
Anyway use "all" instead of a specific UUID for eavesdrop.

It looks like the same results as I issue the command from the ESL app.

From fs_cli command line, I issue:

originate {ignore_early_media=true}sofia/internal/1003%192.168.0.2 &eavesdrop all

I got same error:  [ERR] mod_dptools.c:714 Usage: [all | <uuid>]

When I issue:

originate {ignore_early_media=true}sofia/internal/1003%192.168.0.2 &socket(127.0.0.1:9981 async full) &eavesdrop all

the softphone seems to work fine, I clicked Answer button, but still could not hear any thing from the speaker
when I make a call to my app.


By the way, which version of FS are you using, the latest Git version?

 ( I am afraid I don't have time to try the latest FS version tonight, may try it later on)



-----Original Message-----
From: freeswitch-users-bounces at lists.freeswitch.org on behalf of Hector Geraldino
Sent: Tue 2/28/2012 22:30
To: FreeSWITCH Users Help
Subject: Re: [Freeswitch-users] How to bridge a call to an extensiondefined	in	dialplan
 
Sorry, it works for me.

Try to do it from the fs_cli command line and share the results.

From: freeswitch-users-bounces at lists.freeswitch.org [mailto:freeswitch-users-bounces at lists.freeswitch.org] On Behalf Of Liu, Xingkun
Sent: Tuesday, February 28, 2012 5:11 PM
To: FreeSWITCH Users Help
Subject: Re: [Freeswitch-users] How to bridge a call to an extension defined in dialplan



Yeah, I tried this syntax before. I didn't work.
Now tried again, I got error as below and the softphone(1003) was terminated immediately:

2012-02-28 21:52:20.227899 [INFO] switch_channel.c:2695 sofia/internal/1003 Flipping CID from "" <0000000000> to "Outbound Call" <1003%192.168.0.2>
2012-02-28 21:52:20.227899 [ERR] mod_dptools.c:714 Usage: [all | <uuid>]
2012-02-28 21:52:20.227899 [NOTICE] switch_core_state_machine.c:226 sofia/internal/1003 has executed the last dialplan instruction, hanging up.


And according to the wiki, the originate api needs a Call_from parameter:

Usage: originate <call_url> <exten>
     <call_url> URL you are calling.
     <exten> Extension you are calling from

Or is this because I have a bit old version of FreeSwitch?
    FreeSWITCH Version 1.0.head (git-54ddef0 2011-12-06 21-53-45 -0600)


Best,
Xing


-----Original Message-----
From: freeswitch-users-bounces at lists.freeswitch.org on behalf of Hector Geraldino
Sent: Tue 2/28/2012 20:33
To: FreeSWITCH Users Help
Subject: Re: [Freeswitch-users] How to bridge a call to an extension defined in dialplan

Why are you specifying the 5801 extension before the eavesdrop? You want to dial the Softphone extension: 1003, so all you need to do is to specifiy it on the originate string and pass the control to the eavesdrop app:

originate sofia/internal/1003 at X.X.X.X<mailto:sofia/internal/1003 at X.X.X.X> &eavesdrop(uuid)

You don't need any more references to 5801, specially because you already have the UUID which is all you need to do the eavesdrop

From: freeswitch-users-bounces at lists.freeswitch.org [mailto:freeswitch-users-bounces at lists.freeswitch.org] On Behalf Of x.liu
Sent: Tuesday, February 28, 2012 2:27 PM
To: freeswitch-users at lists.freeswitch.org
Subject: Re: [Freeswitch-users] How to bridge a call to an extension defined in dialplan

Thanks again!

Yes, I used dvarne's Java ESL library for a while.

It works fine for the recording the a-leg, but the b-leg which is originated with eavesdrop to a Softphone does not work as expected.
There was an error in my originate usage:


originate sofia/internal/1003%x.x.x.x 5801&eavesdrop " + this.channelUniqueID);
I changed the extension 5801 to &socket(127.0.0.1:9981 async full) which is the action inside the extension 5801
then my softphone does not hang up any more, but I still can not hear the conversation of a-leg on the softphone.

There may be something wrong with my use of the combination of originate and eavesdrop.
I will look into it again.

Best,
Xing


On 02/28/2012 06:21 PM, Hector Geraldino wrote:

Ok, I can see you're using dvarne's java ESL library. Please download the source code from GIT and try to run the outbound client demo (located in src/test/java/SocketClientTest.java)



Assuming you're already familiar with the netty programming model, here's what I did: I changed the implementation of the SimpleHangupOutboundHandler class in the demo to do what you're asking: it will first answer the call, bridge it to an extension, record the call and make a 2nd call to another extension using the combination of originate + eavesdrop. Backup the original file and replace it with this new implementation. Also adjust the port number on the SocketClientTest class to match the one configured in your dialplan.



Hope this serve as an starting point...



-----Original Message-----

From: freeswitch-users-bounces at lists.freeswitch.org<mailto:freeswitch-users-bounces at lists.freeswitch.org> [mailto:freeswitch-users-bounces at lists.freeswitch.org] On Behalf Of x.liu

Sent: Tuesday, February 28, 2012 12:40 PM

To: freeswitch-users at lists.freeswitch.org<mailto:freeswitch-users at lists.freeswitch.org>

Subject: Re: [Freeswitch-users] How to bridge a call to an extension defined in dialplan



Thanks for the detailed explanations, Hector!



First,  sorry for my further questions here:

  In 2. you originate a 2nd call to an internal extension, what is this

internal extension doing?

  In 5. from where you originate the 3rd call, your java app or

dialplan, or does it matter?

          and to which extension?



I am asking those questions because I haven't got mine work and want to

fully understand how you did it.



I originate a 2rd call to my softphone from my java app. The softphone

was ringing and I clicked Answer button on the GUI

then it was immediately terminated.



I got some confusing outputs like

      Hangup sofia/internal/1003 [CS_ROUTING] [NO_ROUTE_DESTINATION] and

      Transfer sofia/internal/1003 to

&eavesdrop[1003 at b38cb4c6-620e-11e1-8992-0b1a37fbec21]



I copy full outputs here:



2012-02-28 13:18:28.056043 [NOTICE] switch_channel.c:920 New Channel

sofia/internal/1003 [b3a3b61c-620e-11e1-8995-0b1a37fbec21]

2012-02-28 13:18:28.076030 [NOTICE] mod_dptools.c:1117 Channel

[sofia/external/anonymous at sipgate.co.uk<mailto:sofia/external/anonymous at sipgate.co.uk>] has been answered

2012-02-28 13:18:29.098072 [NOTICE] sofia.c:5460 Ring-Ready

sofia/internal/1003!

2012-02-28 13:18:31.839862 [NOTICE] sofia.c:6077 Channel

[sofia/internal/1003] has been answered

2012-02-28 13:18:31.839862 [NOTICE] switch_core_state_machine.c:166

Hangup sofia/internal/1003 [CS_ROUTING] [NO_ROUTE_DESTINATION]

2012-02-28 13:18:31.839862 [NOTICE] switch_ivr.c:1711 Transfer

sofia/internal/1003 to &eavesdrop[1003 at b38cb4c6-620e-11e1-8992-0b1a37fbec21]

2012-02-28 13:18:31.839862 [NOTICE] switch_core_session.c:1395 Session

16 (sofia/internal/1003) Ended

2012-02-28 13:18:31.839862 [NOTICE] switch_core_session.c:1397 Close

Channel sofia/internal/1003 [CS_DESTROY]

2012-02-28 13:19:02.756130 [NOTICE] sofia.c:634 Hangup

sofia/external/anonymous at sipgate.co.uk<mailto:sofia/external/anonymous at sipgate.co.uk> [CS_EXECUTE] [NORMAL_CLEARING]





Any more thoughts?



Desperately want to sort this out for tomorrow morning's meeting!



Thanks!

Xing









On 02/28/2012 03:24 PM, Hector Geraldino wrote:

You can find the syntax for eavesdrop in the wiki. Here's how I have it working:



     api originate sofia/internal/1234 at x.x.x.x&eavesdrop<mailto:sofia/internal/1234 at x.x.x.x&eavesdrop>(aleg_uuid)



You can try this command in the fs_cli command line (w/o the 'api' prefix). Eavesdrop will allow you to jump into a call and monitor the conversation. If the call has been bridged, you can hear both legs.



You can do the bridge however you want. The bridge operation is not related to the eavesdrop, so the way I have this working is:



1. I answer the call in the dialplan, and transfer the control to my java app (just as you're doing right now)

2. I originate a 2nd call to an internal extension.

3. When the 2nd call is answered, I bridge both calls using uuid_bridge uuid_lega uuid_legb (you can even do the bridge from the dialplan)

4. I start recording the call using 'uuid_record uuid_lega' (again, you can call the record application from the dialplan)

5. I can (if desired) monitor the call by originating a 3rd call to the manager extension + passing the uuid_lega to the eavesdrop app, as discussed before.



Hope this helps





-----Original Message-----

From: freeswitch-users-bounces at lists.freeswitch.org<mailto:freeswitch-users-bounces at lists.freeswitch.org> [mailto:freeswitch-users-bounces at lists.freeswitch.org] On Behalf Of x.liu

Sent: Tuesday, February 28, 2012 9:08 AM

To: freeswitch-users at lists.freeswitch.org<mailto:freeswitch-users at lists.freeswitch.org>

Subject: Re: [Freeswitch-users] How to bridge a call to an extension defined in dialplan



Hi Hector,



Many thanks for your advice!



I had a try but without success yet. What I am doing is



1. call to an extension: 5801, it will execute my ESL Java app. I call

it a-leg

<extension name="myEslNew5801">

<condition field="destination_number" expression="^5801$">

<action application="limit" data="hash outgoing 5801 4" />

<action application="socket" data="127.0.0.1:9981 async full"/>

</condition>

</extension>



2. From my ESL Java app, I originate b-leg to my softphoe and eavesdrop

on extension 5801 by

      response = sendSyncSingleLineCommand(ctx.getChannel(), "api

originate sofia/internal/1003%x.x.x.x 1003&eavesdrop " +

this.channelUniqueID);

      the channelUniqueID is the UUID of my a-leg session.



      So I hope my app do the recording and talking to the user and I

listen it from the softphone 1003 via eavesdrop.



       At the moment I got message: Hangup on 1003 with [CS-ROUTING]

[NO_ROUTE_DESTINATION]



      I am not quite sure if I understand correctly how the eavesdrop works:



      Which UUID should I use in "&eavesdrop UUID", the existing one of

a-leg or I need to create a new one for b-leg?

      Do I need to do the bridge, in extension 5801 or in my app?





Thanks!

Xing







On 02/27/2012 08:59 PM, Hector Geraldino wrote:

You can: bridge two endpoints (A ->   B), record the conversation using uuid_record (or the record application), and have a 3rd extension hearing the conversation using the eavesdrop app. Here's how I've done this before:



Incoming call (A-Party)

Bridge call to B-Party (bridge 1xxx at example.domain<mailto:1xxx at example.domain>)

Record the conversation (uuid_record aleg_uuid /path/to/audio.file)

A C-Party listen using eavesdrop (originate 2xxx at example.domain&eavesdrop<mailto:2xxx at example.domain&eavesdrop> aleg_uuid)





-----Original Message-----

From: freeswitch-users-bounces at lists.freeswitch.org<mailto:freeswitch-users-bounces at lists.freeswitch.org> [mailto:freeswitch-users-bounces at lists.freeswitch.org] On Behalf Of x.liu

Sent: Monday, February 27, 2012 2:52 PM

To: freeswitch-users at lists.freeswitch.org<mailto:freeswitch-users at lists.freeswitch.org>

Subject: Re: [Freeswitch-users] How to bridge a call to an extension defined in dialplan



Hi Peter,



Thanks for your reply!



You are right, that is what I have been experiencing but not I wanted.



Actually my goal is simply to record the user call by my app (js or java

via ESL) and at the same time

I want to hear what the user is saying through my computer's speaker.



The recording app seems to be ok ( I tried recording via dialplan

commands as well as ESL Java app).

What I am doing now is to bridge the call to my app for recording and to

a softphone for hearing user's voice.



I thought it would work as the wiki says the bridge can bridge the call

to multiple endpoints at the same time,

but unfortunately it won't work for me.



Any suggestions to achieve my goal please: recording and hearing user's

voice?

     (Note: my app will do the recording and also allow me send TTS to the

user)



Best,

Xing







On 02/27/2012 06:33 PM, Peter Olsson wrote:

Can you explain what you're trying to achieve by doing this?



If you bridge to multiple destinations, the first destination that answers will create the actual call - all other legs are terminated.



/Peter



Från: freeswitch-users-bounces at lists.freeswitch.org<mailto:freeswitch-users-bounces at lists.freeswitch.org> [freeswitch-users-bounces at lists.freeswitch.org<mailto:freeswitch-users-bounces at lists.freeswitch.org>] för x.liu [x.liu at hw.ac.uk<mailto:x.liu at hw.ac.uk>]

Skickat: den 27 februari 2012 19:11

Till: freeswitch-users at lists.freeswitch.org<mailto:freeswitch-users at lists.freeswitch.org>

Ämne: Re: [Freeswitch-users] How to bridge a call to an extension defined in dialplan



Hi again,



It looks like there is something wrong relating to the [CS_CONSUME_MEDIA] [ORIGINATOR_CANCEL],

but no idea how this happened.



A bit desperately to solve this problem ASAP as we will have a demo in a few days.



Please could anybody give any clue?



Many thanks!



On 02/27/2012 11:34 AM, x.liu wrote:

Now I tried it at a different machine with different version of FS.

The behaviour is slightly different. This time the softphone is ringing but the recording extension is not correctly executed.

The version for this test is "FreeSWITCH Version 1.0.head (git-e566057 2011-12-14 10-27-31 -0500)"

    (The FS version for previous tries is "FreeSWITCH Version 1.0.head (git-54ddef0 2011-12-06 21-53-45 -0600)" )



I copy part of terminal message here, hope it is not too much message for the email list.



--------------------------------------------------

09:04.180223 [NOTICE] switch_channel.c:920 New Channel sofia/external/anonymous at sipgate.co.uk<mailto:sofia/external/anonymous at sipgate.co.uk><mailto:sofia/external/anonymous at sipgate.co.uk><mailto:sofia/external/anonymous at sipgate.co.uk>    [7596ad60-6133-11e1-9141-8b50a5b8b13b]

09:04.180223 [INFO] mod_dialplan_xml.c:481 Processing anonymous<anonymous>->74997 in context public

09:04.180223 [NOTICE] switch_channel.c:920 New Channel sofia/internal/1003 at x.x.x.x<mailto:sofia/internal/1003 at x.x.x.x><mailto:sofia/internal/1003 at x.x.x.x><mailto:sofia/internal/1003 at x.x.x.x>    [75976d18-6133-11e1-9145-8b50a5b8b13b]

09:04.180223 [NOTICE] switch_channel.c:920 New Channel sofia/internal/74999 at x.x.x.x<mailto:sofia/internal/74999 at x.x.x.x><mailto:sofia/internal/74999 at x.x.x.x><mailto:sofia/internal/74999 at x.x.x.x>    [75977f24-6133-11e1-914a-8b50a5b8b13b]

09:04.180223 [NOTICE] switch_channel.c:920 New Channel sofia/internal/anonymous at x.x.x.x<mailto:sofia/internal/anonymous at x.x.x.x><mailto:sofia/internal/anonymous at x.x.x.x><mailto:sofia/internal/anonymous at x.x.x.x>    [7597aab2-6133-11e1-914e-8b50a5b8b13b]

09:04.180223 [INFO] mod_dialplan_xml.c:481 Processing anonymous<anonymous>->1003 in context public

09:04.180223 [NOTICE] switch_channel.c:920 New Channel sofia/internal/anonymous at x.x.x.x<mailto:sofia/internal/anonymous at x.x.x.x><mailto:sofia/internal/anonymous at x.x.x.x><mailto:sofia/internal/anonymous at x.x.x.x>    [75980192-6133-11e1-9150-8b50a5b8b13b]

09:04.180223 [NOTICE] switch_ivr.c:1711 Transfer sofia/external/anonymous at sipgate.co.uk<mailto:sofia/external/anonymous at sipgate.co.uk><mailto:sofia/external/anonymous at sipgate.co.uk><mailto:sofia/external/anonymous at sipgate.co.uk>    to XML[1003 at public]

09:04.180223 [NOTICE] switch_ivr_originate.c:3182 Hangup sofia/internal/1003 at x.x.x.x<mailto:sofia/internal/1003 at x.x.x.x><mailto:sofia/internal/1003 at x.x.x.x><mailto:sofia/internal/1003 at x.x.x.x>    [CS_CONSUME_MEDIA] [ORIGINATOR_CANCEL]

09:04.180223 [NOTICE] switch_ivr_originate.c:3182 Hangup sofia/internal/74999 at x.x.x.x<mailto:sofia/internal/74999 at x.x.x.x><mailto:sofia/internal/74999 at x.x.x.x><mailto:sofia/internal/74999 at x.x.x.x>    [CS_CONSUME_MEDIA] [ORIGINATOR_CANCEL]

09:04.180223 [INFO] mod_dptools.c:2897 Originate Failed.  Cause: ORIGINATOR_CANCEL

09:04.180223 [INFO] mod_dialplan_xml.c:481 Processing anonymous<anonymous>->1003 in context public

09:04.180223 [NOTICE] switch_core_session.c:1397 Session 2 (sofia/internal/1003 at x.x.x.x<mailto:sofia/internal/1003 at x.x.x.x><mailto:sofia/internal/1003 at x.x.x.x><mailto:sofia/internal/1003 at x.x.x.x>) Ended

09:04.180223 [NOTICE] switch_core_session.c:1399 Close Channel sofia/internal/1003 at x.x.x.x<mailto:sofia/internal/1003 at x.x.x.x><mailto:sofia/internal/1003 at x.x.x.x><mailto:sofia/internal/1003 at x.x.x.x>    [CS_DESTROY]

09:04.180223 [NOTICE] switch_ivr.c:1711 Transfer sofia/external/anonymous at sipgate.co.uk<mailto:sofia/external/anonymous at sipgate.co.uk><mailto:sofia/external/anonymous at sipgate.co.uk><mailto:sofia/external/anonymous at sipgate.co.uk>    to XML[1003 at default]

09:04.180223 [INFO] mod_dialplan_xml.c:481 Processing anonymous<anonymous>->1003 in context default

09:04.180223 [NOTICE] sofia.c:427 Hangup sofia/internal/anonymous at x.x.x.x<mailto:sofia/internal/anonymous at x.x.x.x><mailto:sofia/internal/anonymous at x.x.x.x><mailto:sofia/internal/anonymous at x.x.x.x>    [CS_EXECUTE] [BLIND_TRANSFER]

09:04.201188 [NOTICE] switch_core_session.c:1397 Session 4 (sofia/internal/anonymous at x.x.x.x<mailto:sofia/internal/anonymous at x.x.x.x><mailto:sofia/internal/anonymous at x.x.x.x><mailto:sofia/internal/anonymous at x.x.x.x>) Ended

09:04.201188 [NOTICE] switch_core_session.c:1399 Close Channel sofia/internal/anonymous at x.x.x.x<mailto:sofia/internal/anonymous at x.x.x.x><mailto:sofia/internal/anonymous at x.x.x.x><mailto:sofia/internal/anonymous at x.x.x.x>    [CS_DESTROY]

09:04.201188 [INFO] switch_ivr_async.c:3164 Bound B-Leg: *1 execute_extension::dx XML features

09:04.201188 [INFO] mod_dialplan_xml.c:481 Processing anonymous<anonymous>->74999 in context public

09:04.201188 [INFO] switch_ivr_async.c:3164 Bound B-Leg: *2 record_session:: recordings/anonymous.2012-02-27-11-09-04.wav

09:04.201188 [NOTICE] switch_core_session.c:1397 Session 3 (sofia/internal/74999 at x.x.x.x<mailto:sofia/internal/74999 at x.x.x.x><mailto:sofia/internal/74999 at x.x.x.x><mailto:sofia/internal/74999 at x.x.x.x>) Ended

09:04.201188 [NOTICE] switch_core_session.c:1399 Close Channel sofia/internal/74999 at x.x.x.x<mailto:sofia/internal/74999 at x.x.x.x><mailto:sofia/internal/74999 at x.x.x.x><mailto:sofia/internal/74999 at x.x.x.x>    [CS_DESTROY]

09:04.201188 [INFO] switch_ivr_async.c:3164 Bound B-Leg: *3 execute_extension::cf XML features

09:04.201188 [NOTICE] sofia.c:6134 Hangup sofia/internal/anonymous at x.x.x.x<mailto:sofia/internal/anonymous at x.x.x.x><mailto:sofia/internal/anonymous at x.x.x.x><mailto:sofia/internal/anonymous at x.x.x.x>    [CS_EXECUTE] [ORIGINATOR_CANCEL]

09:04.201188 [INFO] switch_ivr_async.c:3164 Bound B-Leg: *4 execute_extension::att_xfer XML features

09:04.201188 [NOTICE] switch_core_session.c:1397 Session 5 (sofia/internal/anonymous at x.x.x.x<mailto:sofia/internal/anonymous at x.x.x.x><mailto:sofia/internal/anonymous at x.x.x.x><mailto:sofia/internal/anonymous at x.x.x.x>) Ended

09:04.201188 [NOTICE] switch_core_session.c:1399 Close Channel sofia/internal/anonymous at x.x.x.x<mailto:sofia/internal/anonymous at x.x.x.x><mailto:sofia/internal/anonymous at x.x.x.x><mailto:sofia/internal/anonymous at x.x.x.x>    [CS_DESTROY]

09:04.201188 [NOTICE] switch_channel.c:920 New Channel sofia/internal/sip:1003 at y.y.y.y:5062 [759a6630-6133-11e1-9158-8b50a5b8b13b]

09:04.740223 [NOTICE] sofia.c:5462 Ring-Ready sofia/internal/sip:1003 at y.y.y.y:5062!

09:04.740223 [NOTICE] mod_sofia.c:2470 Ring-Ready sofia/external/anonymous at sipgate.co.uk<mailto:sofia/external/anonymous at sipgate.co.uk><mailto:sofia/external/anonymous at sipgate.co.uk><mailto:sofia/external/anonymous at sipgate.co.uk>!

09:04.740223 [NOTICE] switch_ivr_originate.c:483 Ring Ready sofia/external/anonymous at sipgate.co.uk<mailto:sofia/external/anonymous at sipgate.co.uk><mailto:sofia/external/anonymous at sipgate.co.uk><mailto:sofia/external/anonymous at sipgate.co.uk>!

09:07.700221 [NOTICE] sofia.c:6040 Channel [sofia/internal/sip:1003 at y.y.y.y:5062] has been answered

09:07.700221 [NOTICE] switch_ivr_originate.c:483 Ring Ready sofia/external/anonymous at sipgate.co.uk<mailto:sofia/external/anonymous at sipgate.co.uk><mailto:sofia/external/anonymous at sipgate.co.uk><mailto:sofia/external/anonymous at sipgate.co.uk>!

-------------------------------------------------





Hi,



H tried this way



<action application="bridge" data="sofia/internal/1003%${sip_profile},sofia/internal/74991@${domain}"/>



74991 is reached and I heard the prompt. The 1003 softphone is terminated immediately after it is reached.

then extension 74991 hung up itself as well.



I saw the terminal message:

mod_dptools.c:2897 Originate Failed.  Cause: ORIGINATOR_CANCEL



What would be the reason for that?



Thanks,

Xing







On 02/26/2012 10:29 PM, Liu, Xingkun wrote:





Hello,



I'd like to bridge an incoming to two endpoints simultaneuously:

one is a softphone which is registered to FS (to user 1003),

another is just an extension which is defined in conf/dialplan/public.xml



It looks like:



<extension name="testRecording_bridge">

     <condition field="destination_number" expression="^(74990)$">

       <action application="bridge" data="sofia/internal/1003%${sip_profile},sofia/internal/74991%${sip_profile}"/>

     </condition>

</extension>



<extension name="testRecordingOnly">

       <condition field="destination_number" expression="^74991$">

         <action application="set" data="record_waste_resources=true"/>

         <action application="javascript" data="testRecordFile.js"/>

       </condition>

     </extension>



The incoming call dial to extension 74990, from there I want to bridge the call to the sofphone at 1003 and

to the extension 74991.



The problem is that FS can not locate user 74991. So my question is what else I need to modify in order

to bridge the call also to extension 74991 at the same time?



I did lots of Googling, checked the wiki and tried various ways but still without success.



Any advices please?



Many Thanks!

Xing



________________________________



Heriot-Watt University is the Sunday Times Scottish University of the Year 2011-2012.



Heriot-Watt University is a Scottish charity registered under charity number SC000278.





_________________________________________________________________________

Professional FreeSWITCH Consulting Services:

consulting at freeswitch.org<mailto:consulting at freeswitch.org><mailto: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



FreeSWITCH-users mailing list

FreeSWITCH-users at lists.freeswitch.org<mailto:FreeSWITCH-users at lists.freeswitch.org><mailto: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







________________________________



Heriot-Watt University is the Sunday Times Scottish University of the Year 2011-2012.



Heriot-Watt University is a Scottish charity registered under charity number SC000278.





_________________________________________________________________________

Professional FreeSWITCH Consulting Services:

consulting at freeswitch.org<mailto:consulting at freeswitch.org><mailto: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



FreeSWITCH-users mailing list

FreeSWITCH-users at lists.freeswitch.org<mailto:FreeSWITCH-users at lists.freeswitch.org><mailto: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







________________________________



Heriot-Watt University is the Sunday Times Scottish University of the Year 2011-2012.



Heriot-Watt University is a Scottish charity registered under charity number SC000278.





_________________________________________________________________________

Professional FreeSWITCH Consulting Services:

consulting at freeswitch.org<mailto:consulting at freeswitch.org><mailto: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



FreeSWITCH-users mailing list

FreeSWITCH-users at lists.freeswitch.org<mailto:FreeSWITCH-users at lists.freeswitch.org><mailto: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







________________________________



Heriot-Watt University is the Sunday Times Scottish University of the Year 2011-2012.



Heriot-Watt University is a Scottish charity registered under charity number SC000278.

!DSPAM:4f4bc71e32767806511310!



_________________________________________________________________________

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



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







--

Heriot-Watt University is a Scottish charity

registered under charity number SC000278.



Heriot-Watt University is the Sunday Times

Scottish University of the Year 2011-2012







_________________________________________________________________________

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



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



_________________________________________________________________________

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



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







--

Heriot-Watt University is a Scottish charity

registered under charity number SC000278.



Heriot-Watt University is the Sunday Times

Scottish University of the Year 2011-2012







_________________________________________________________________________

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



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





_________________________________________________________________________

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



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

________________________________

Heriot-Watt University is the Sunday Times Scottish University of the Year 2011-2012.

Heriot-Watt University is a Scottish charity registered under charity number SC000278.

________________________________

Heriot-Watt University is the Sunday Times Scottish University of the Year 2011-2012.

Heriot-Watt University is a Scottish charity registered under charity number SC000278.



-- 
Heriot-Watt University is a Scottish charity
registered under charity number SC000278.

Heriot-Watt University is the Sunday Times
Scottish University of the Year 2011-2012


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20120228/e93f6ce2/attachment-0001.html 


Join us at ClueCon 2011 Aug 9-11, 2011
More information about the FreeSWITCH-users mailing list