mod_dingaling is a generic xmpp registration that can be used for Google talk or any other XMPP integration.
More information about Jingle can be found here: Wikipedia Jingle Protocol
It has been announced that Google Voice over xmpp service, which is a dependency of several of the below examples, will be discontinued on May 15th, 2014. Keep that in mind when planning any deployments using GV.
Getting it working
OpenSSL is required to ensure that your XMPP stanzas are encrypted as required by the specifications. Before running, make sure you have the ssl package installed.
Ubuntu 10.x / Debian
Make sure the following line is present and uncommented in /usr/src/freeswitch/modules.conf
Then build and install mod_dingaling:
For freeBSD, use gmake.
If you have installed SSL after building the dingaling module, you will need to re-bootstrap, re-configure and re-build freeswitch.
Windows using MSVC 2008
- Since October 17,2011 this is no longer needed now OpenSSL is used. Mod_dingaling will now build with ssl out of the box.
- Install GnuTls for windows. Take gnutls-2.9.9.exe, maybe more recent will work.
Build libgnutls-26.lib. This file will be used as a import library for Visual Studio projects. Open visual studio command prompt (not your normal console) and type in GnuTls bin folder:
- Configure ixemel library to work with TLS library. Example
Add additional include directory.
Add additional dependency
- If you have problems with the iksemel compilation process try:
- for "syntax error: type" because of va_arg: include <starg.h> in config.h
- for ENOENT errors: include <errno.h> - now found that the reason was config.h in libs/win32/iksemel was not included - to be checked
- for ssize_t errors: add typedef long ssize_t in gnutls.h
- If you have problems linking iksemel.lib because of strcasecmp errors, add the following in iksemel/utility.c
- #define strcasecmp(s1, s2) stricmp(s1, s2)
- #define strncasecmp(s1, s2, n) strnicmp(s1, s2, n)
- Make sure the TLS dlls are copied to the configuration environment. For example, if you’re running on debug mode, you should have the following files in <your freeswitch root>/Debug:
Uncomment the following in Modules.conf.xml.
Sample Configuration (Google)
Settings similar to the following should work for A basic gtalk account:
You may also want to enable debug mode in Dingaling.conf.xml. This will enable you to see XMPP messages.
Sample Configuration w/ Jingle & Video support (Google)
Settings similar to the following will enable Jingle support:
To enable Video support, edit dingaling.conf.xml as follows (video does NOT work with GVoice):
H264 codec is now enabled by default however it results in all outbound calls through Google Talk to fail immediately with a 'Fast Busy', removing it fixes issue. - Daniel Sokolowski 01:24, 13 January 2013 (EST)
Sample Configuration (Openfire)
- In Openfire:
- Navigate to Server -> Server Settings -> External Components Enable and set port + secret
- In freeswitch
- Make a copy of the included server.xml (in conf/jingle_profiles/) and configure the password and server parameters (tweak the others as applicable for your situation).
One "reloadxml" and "reload mod_dingaling" later and you should have a successful connection!
Sample Configuration (ejabberd)
mod_dingaling sets the following variables:
What is Component (server to server) mode?
Component mode means you can log in as a server component so you can get all of the messages for the whole domain, allowing you to use any random user id at the given domain.
How do I call the FreeSWITCH conference?
- Add a new buddy to your buddy list: firstname.lastname@example.org
- Click the entry and choose Call
Why do I get messed up sound when I try to connect Google Talk to echo or delay_echo?
This will happen when FreeSWITCH is configured to use speex with Dingaling.
There is a bug in the current version of Google Talk (220.127.116.11) that causes it to send G.711 PCMU instead of speex audio even though it signals that speex is accepted and will be used. Many softphones are able to deal with this, but it happens so that Google Talk itself is not! It will expect speex, but will receive its own G.711 PCMU data back causing it to produce messy sounds (and even crash after a while in some cases).
To use echo or delay_echo you should use G.711 PCMU. Versions down to 18.104.22.168 are verified to have this bug too.
How do I send DTMF with Googletalk?
The Gtalk client does not support sending DTMF codes. As a workaround, DTMF from within GTtalk can be sent by sending a chat message and prefixing the DTMF code with a '+' sign.
So to send *1, enter +*1 in the messaging box
Tell me more about mod_conference integration
mod_dingaling muc support is limited to non-existent at the present time (January 2012).
Watch this space for the ability to list/kick users etc.
(Information gleaned from "bougyman")
The FreeSWITCH conference does not respond to my invites?
If you use Google Apps for your email domain hosting, and you are logging in with an email address from this domain, it may not work unless you enable S2S properly using the information provided in the URL below:
FreeSWITCH and Google Talk can't get connected to each other after a successful ringing and answering
It appears that there are some localised versions of Google Talk that are very old even though they report to be version 22.214.171.124. Those versions do not even support Speex yet and also lack other features found in the latest version. These versions also do not connect to FreeSWITCH. To see if you are dealing with a problem caused by an old version of Google Talk, please test everything with the latest English version! If you still have problems, there is something else going on.
Known localisations to have this problem: Dutch, Russian