FreeSWITCH and Google Talk

One of the reasons I chose to spend time with freeswitch over yate was google talk integration. Was a good choice, I think, for more than just gtalk.

The endpoint that talks to gtalk is mod_dingaling, and it’s not compiled by default. So to enable it, uncomment #endpoints/mod_dingaling from modules.conf in your source tree and recompile.

I had to install gnutls-devel to get gtalk working, but check freeswitch.spec for other build packages you might need.

The configuration is pretty straight forward. Make sure in conf/autoload_configs/modules.conf.xml mod_dingaling is loaded.

I set it up as a client, I think later I might play around with it as a server. My conf/jingle_profiles/client.xml looks like this:

<include>
  <!– Client Profile (Original mode) –>
  <profile type=”client”>
    <param name=”name” value=”gmail.com”/>
    <param name=”login” value=”michael.chesterton@gmail.com/gtalk”/>
    <param name=”password” value=”bellybutton”/>
    <param name=”server” value=”talk.google.com”/>
    <param name=”dialplan” value=”XML”/>
    <param name=”context” value=”public”/>
    <param name=”message” value=”Press Belly Button to Begin”/>
    <param name=”rtp-ip” value=”$${bind_server_ip}”/>
    <param name=”ext-rtp-ip” value=”$${external_rtp_ip}”/>
    <param name=”auto-login” value=”true”/>
    <!– SASL “plain” or “md5″ –>
    <param name=”sasl” value=”plain”/>
    <!– if the server where the jabber is hosted is not the same as the one in the jid –>
    <!–<param name=”server” value=”alternate.server.com”/>–>
    <!– Enable TLS or not –>
    <param name=”tls” value=”true”/>
    <!– disable to trade async for more calls –>
    <param name=”use-rtp-timer” value=”true”/>
    <!– default extension (if one cannot be determined) –>
    <param name=”exten” value=”5551212″/>
    <!– VAD choose one –>
    <!– <param name=”vad” value=”in”/> –>
    <!– <param name=”vad” value=”out”/> –>
    <param name=”vad” value=”both”/>
    <!–<param name=”avatar” value=”/path/to/tiny.jpg”/>–>
  </profile>
</include>

When editing conf/jingle_profiles/client.xml, pay attention to the line   <profile type=”client”> make sure it’s profile , and not x-profile. It comes as x-profile out of the box to stop it from loading. 5551212 is the phone gtalk calls will go to as defined by exten

One other thing is do is add a vcard to your directory entry, I added it to conf/directory/default/1000.xml and directory/default/5551212.xml, mine looks like:

<include>
  <user id=”1000″ mailbox=”1000″>
    <params>
      <param name=”password” value=”1234″/>
      <param name=”vm-password” value=”1234″/>
       <param name=”vm-mailto” value=”chesty@chesterton.id.au”/>
<!–
       <param name=”vm-email-all-messages” value=”true”/>
–>
    </params>
    <variables>
      <variable name=”user_context” value=”default”/>
      <variable name=”ruleset” value=”internal” />
      <variable name=”effective_caller_id_name” value=”Michael Chesterton”/>
      <variable name=”effective_caller_id_number” value=”1000″/>
    </variables>
    <vcard xmlns=’vcard-temp’>
      <FN>Michael Chesterton</FN>
      <N>
        <FAMILY>Chesterton</FAMILY>
        <GIVEN>Michael</GIVEN>
        <MIDDLE/>
      </N>
      <NICKNAME>Michael</NICKNAME>
      <URL>http://barrang.com.au/</URL>
      <BDAY>1974-11-21</BDAY>
      <ORG>
        <ORGNAME>Barrang</ORGNAME>
        <ORGUNIT>Barrang</ORGUNIT>
      </ORG>
      <TITLE>Owner</TITLE>
      <ROLE>Engineer</ROLE>
      <TEL><WORK/><VOICE/><NUMBER>5551212</NUMBER></TEL>
      <TEL><WORK/><CELL/><NUMBER>614205555</NUMBER></TEL>
      <TEL><WORK/><FAX/><NUMBER/></TEL>
      <TEL><WORK/><MSG/><NUMBER/></TEL>
      <ADR>
        <WORK/>
        <EXTADD/>
        <STREET/>
        <LOCALITY>Panania</LOCALITY>
        <REGION>NSW</REGION>
        <PCODE>2213</PCODE>
        <CTRY>Australia</CTRY>
      </ADR>
      <TEL><HOME/><VOICE/><NUMBER/></TEL>
      <TEL><HOME/><FAX/><NUMBER/></TEL>
      <TEL><HOME/><MSG/><NUMBER/></TEL>
      <ADR>
        <HOME/>
        <EXTADD/>
        <STREET/>
        <LOCALITY/>
        <REGION/>
        <PCODE/>
        <CTRY/>
      </ADR>
      <EMAIL><INTERNET/><PREF/><USERID>michael.chesterton@barrang.com.au</USERID></EMAIL>
      <JABBERID>michael.chesterton@gmail.com</JABBERID>
      <DESC>
        More information about me is located on my
        personal website: http://barrang.com.au/
      </DESC>
    </vcard>
  </user>
</include>

That will get you signed in to gtalk ready to receive and make calls. Now we need a dialplan to direct gtalk calls to a SIP phone. Part of my conf/dialplan/public.xml looks like:

<extension name=”public_did”>
  <condition field=”caller_id_number” expression=”^([^@]+)” break=”never”>
    <action application=”set” data=”effective_caller_id_number=$1″/>
  </condition>
  <condition field=”destination_number” expression=”^(5551212)$”>
    <action application=”set” data=”call_timeout=18″/>
    <action application=”set” data=”continue_on_fail=true”/>
    <action application=”set” data=”hangup_after_bridge=true”/>
    <action application=”bridge” data=”sofia/switch.gruntnet/1000,sofia/switch.gruntnet/1001″/>
    <action application=”answer”/>
    <action application=”voicemail” data=”default $${domain} 1000″/>
  </condition>
</extension>

The first condition field strips out the @ character from the caller id number, my e65 doesn’t like the @ character and rejects the call. Gtalk sets the caller id number as something like barrang.com@gmail.com/Talk.v1047F0FC7A5. The rest I’ve already talked about here

I’ve only tested setting up a call from an XP vm to my SIP enabled mobile phone, I haven’t tested audio yet. But I’m getting there, I’m waiting for a friend to install gtalk so they can test with me. Then I just need a dialplan entry so I can make gtalk calls from SIP clients.

Related posts:

  1. FreeSWITCH – Google Talk – Dingaling – Jingle All The Way
  2. Freeswitch – Softswitch, Softphone, PBX
  3. FreeSWITCH and Voicemail
  4. Latest FreeSWITCH, PennyTel and Billion 5200N development
  5. Freeswitch on Ubuntu Feisty

One Comment

  1. Robert Clayton
    Posted March 3, 2009 at 2:14 pm | Permalink

    Chesty,

    Were you ever able to get jingle audio working with FreeSwitch?
    If you were able to would you not now be able to call FS from a jingle client and use FS as an IVR system?

    Robert

Post a Comment

Your email is never shared. Required fields are marked *

*
*