Asterisk Google Talk

网友投稿 252 2022-08-29

Asterisk Google Talk

Asterisk Google Talk

Page Contents

​​Iksemel installation ​​

​​Installation from source ​​​​Debian ​​

​​Debian 3.1 Sarge ​​​​Debian 4.0 Etch ​​

​​Troubleshooting ​​

​​Example setup ​​

​​jabber.conf ​​​​gtalk.conf ​​​​extensions.conf ​​

​​Tips ​​

​​Ports for signalling and RTP ​​​​Receiving text messages ​​​​No audio, phone keeps ringing ​​​​Want to permanently stop jabber and gtalk? ​​​​Asterisk's jabber module over OpenSSL instead of GnuTLS ​​

​​Related dialplan applications ​​​​Useful CLI commands ​​​​Documentation ​​​​Bugs & known issues ​​​​See also ​​

Starting with Asterisk 1.4, you can connect Asterisk and Google Talk, however as of now (Asterisk 1.4.4) you should consider this feature to be in beta phase, there are still quite a number of problems and glitches around. You may want to create a new gmail account for use with Asterisk; note that for gmail you need an invitation, whereas for a pure gtalk account you don't. Jabber/Gtalk depends on iksemel so make sure you have that installed and that the jabber/jingle/gtalk channel drivers are selected (run 'make menuselect' to verify this) before compiling Asterisk 1.4

Iksemel installation

First you will need to download and install iksemel 1.2:

Installation from source

Note that since June 2007, iksemel is now available from code.google.com: ​​and the svn repository below is obsolete. Due to the recent problems, svn repository is moved away from jabberstudio.org. To run autogen.sh you must have several packages, it will prompt you for the packages except for libgnutls-dev if you don't have this it will generate an error message in configure.  svn checkout  cd iksemel  ./autogen.sh  ./configure --prefix=/usr  make  make check  make install  If the above didn't work for you, try this too if you have gnutls installed:  cd iksemel  ./configure --with-gnutls  make  make check  make install

Debian

Debian 3.1 Sarge

The iksemel deb package will most probably not work out (you see 'JABBER: socket read error' and 'jabber show connected' always shows your gtalk user as 'disconnected'), so you will need to compile from source (see above)

autogen.sh will complain about AM_PATH_LIBGNUTLS (and ./configure will subsequently fail) if you don't have libgnutls11-dev, so apt-get that firstedit /etc/ld.so.conf and add /usr/local/lib to it, then run 'ldconfig'

Debian 4.0 Etch

The iksemel package appears to do the job, at least with usetls=on in jabber.conf (as required by the server talk.google.com)

Troubleshooting

Q: I see these error message in the CLI, what is wrong? "res_jabber.c:1504 aji_recv_loop: JABBER: socket read error" and "res_jabber.c:482 aji_act_hook: gnuTLS not installed." A1: I had installed iksemel (XML parsing library for Jabber) from an rpm package, and i guess it had been compiled without GNUTLS being included. i wrote a test program calling a gnutls function call and it failed. So I downloaded iksemel source, compiled it and ran the same test program again, and this time it returned the int value from the function call that i was expecting. Now, "jabber show connected" shows the google talk account as connected. A2: I was getting a similar problem on ubuntu. It keep saying GnuTLS not installed. After much debugging, we checked the config.log for iksemel-1.2 and observed that the following:  checking for libgnutls-config  checking for libgnutls - version >= 0.1.0 were failing. The fix was to download the source for libgnuTLS and issue a recompile A3: This works for me, during iksemel source compilation, specify the --with-gnutls option in ./configure.             ./configure --with-gnutls             make             make check             make install A4: This is my testing. Create test.c $vi test.c include include include int main() {        printf("test iks_has_tls/n/r");        if(iks_has_tls())                printf("iks_has_tls is 1/n/r");        else                printf("iks_has_tls is 0/n/r");        return 0; } $gcc -liksemel -o test test.c run ./test if out iks_has_tls is 0, then gnutls need recompile . $wget recompile gnutls $tar -jxvf gnutls-1.7.15.tar.bz2 $cd gnutls-1.7.15 $./configure --prefix=/usr $make $make install get iksemel from svn $svn checkout iksemel $cd iksemel $./autogen.sh $./configure --prefix=/usr --with-libgnutls-prefix=/usr --with-gnutls $make $make install Then run ./test ,I get the right out "iks_has_tls is 1". Good luck!!

Example setup

jabber.conf

This is where you set your gmail/gtalk account info and will register you with the google server.

[general] debug=yes autoprune=no autoregister=no [gtalk_account] type=client serverhost=talk.google.com username=username@gmail.com/Talk secret=***** port=5222 usetls=yes ; TLS is required by talk.google.com, you'll get a 'socket read error' without usesasl=yes buddy=buddyusername@gmail.com statusmessage="This is an Asterisk server" timeout=100

gtalk.conf

This is where the settings for the actual calls are made:

[general] context=google-in allowguest=yes                                                 ; [guest] disallow=all allow=ulaw context=google-in [buddy] username=buddyusername@gmail.com disallow=all allow=ulaw context=google-in ;order apparently matters, needs to be placed after username= ? connection=gtalk_account

extensions.conf

... [google-in] exten => s,1,NoOp( Call from Gtalk ) exten => s,n,Set(CALLERID(name)="From Google Talk") exten => s,n,Dial(SIP/my_sip_phones) ... [google-out] exten => 200,1,Dial(gtalk/gtalk_account/buddyusername@gmail.com)

Tips

Ports for signalling and RTP

Just like SIP also gtalk (jingle) uses UDP for the media path (=audio), so you'll need to make sure your firewall is configured accordingly. The settings in rtp.conf also apply to gtalk. The gtalk/jingle signalling defaults to port 5222 tcp (how about TLS?).

Receiving text messages

Once you have established a gtalk call it is also possible to receive instant messages - as long as the other channel supports SendText(). If, for example, a Google Talk client calls a SNOM 360 via SIP and then sends a text message, that message will cause the SNOM's message LED to start blinking, and the user can read the message by pressing the Retrieve key.

No audio, phone keeps ringing

Q: I call on the phone and I see an incoming call on my google talk client. Once I click answer on google talk the google talk client appears connected, though I don't hear anything on it. Meanwhile my phone keeps ringing as if the call wasn't answered. When I finally hang up the call on the phone the google talk client shows a message that the call ends. Any ideas on what's going on? A: To fix it, you will have to add bindaddr= to ​​general​​ in gtalk.conf

Want to permanently stop jabber and gtalk?

Thats simple, edit /etc/asterisk/modules.conf and add:  noload => res_jabber.so  noload => chan_gtalk.so

Asterisk's jabber module over OpenSSL instead of GnuTLS

A timeout handling issue in the iksemel library was fixed using OpenSSL instead of GnuTLS. For the details, see : ​​bug 9972​​​ This also solves the reload issue experienced with the current jabber module.

Related dialplan applications

​​JabberStatus​​: Return presence status of client or transport as values 1-7​​JabberSend​​: Send a message to a buddy

Useful CLI commands

jabber show connectedjabber debug onjabber test (needs the user 'asterisk' defined in jabber.conf)jabber reloadgtalk show channelsgtalk reloadstun debug on

Documentation

see doc/jabber.txt and doc/jingle.txt in your Asterisk source directorysee configs/jabber.conf.sample and configs/jabber.conf.sample in your Asterisk source directory

Bugs & known issues

It appears that as of Asterisk 1.4.11 there are still a couple of issue around with gtalk support, here's an excerpt: update: by applying some of the patches below (marked with "update") it is possible to run a stable chan_gtalk, having both incoming and outgoing calls with good audio quality!

NAT issues: Be sure to get the latest Google Talk client as Google has also been introducing NAT improvements here

update: 1.0.0.104 is reported to work (sometimes requiring a restart before being able to connect); check your version by right-clicking the executable

​​bug 9401​​ reports that chan_gtalk doesn't understand DTMF produced by another chan_gtalk​​bug 9972​​ the 'reload jabber' command apparently does not always fulfill the expectations, moving from GnuTLS to OpenSSL solves this (code available in bug report)as of Asterisk 1.4.4 your best bet is to only use the ulaw or alaw codecs; ilbc doesn't work yet with Asterisk (1.4.4) due to different payload setting, and speex appears to crash the Google Talk client 1.0.0.104

See also

​​Asterisk jabber​​​​Asterisk Speaks with Google Talk​​Blog:​​Making google talk work with asterisk​​​​AstJaBot​​: Daemon to talk literally with Asterisk using Jabber or GoogleTalk services.

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:营销驱动的三只松鼠,代工隐忧难解!(三只松鼠的营销之道)
下一篇:Linux 守护进程的编程实现
相关文章

 发表评论

暂时没有评论,来抢沙发吧~