Asterisk Google Talk
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: http://code.google.com/p/iksemel/ 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.
svncheckouthttp://svn.uludag.org.tr/projeler/iksemeliksemel
cdiksemel
./autogen.sh
./configure--prefix=/usr
make
makecheck
makeinstall
Iftheabovedidn'tworkforyou,trythistooifyouhavegnutlsinstalled:
cdiksemel
./configure--with-gnutls
make
makecheck
makeinstall
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 first
- edit /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:
checkingforlibgnutls-config
checkingforlibgnutls-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
makecheck
makeinstall
A4: This is my testing. Create test.c
$vi test.c
include <stdlib.h>
include <stdio.h>
include <iksemel.h>
int main()
{
printf("testiks_has_tls/n/r");
if(iks_has_tls())
printf("iks_has_tlsis1/n/r");
else
printf("iks_has_tlsis0/n/r");
return0;
}
$gcc -liksemel -o test test.c
run ./test if out iks_has_tls is 0, then gnutls need recompile .
$wget http://www.gnu.org/software/gnutls/releases/gnutls-1.7.15.tar.bz2
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 http://svn.uludag.org.tr/projeler/iksemel 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=<the_ip_address_of_the_server_running_asterisk> 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 connected
- jabber debug on
- jabber test (needs the user 'asterisk' defined in jabber.conf)
- jabber reload
- gtalk show channels
- gtalk reload
- stun debug on
Documentation
- see doc/jabber.txt and doc/jingle.txt in your Asterisk source directory
- see 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.104isreportedtowork(sometimesrequiringarestartbeforebeingabletoconnect);checkyourversionbyright-clickingtheexecutable
-
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 简介 Asterisk 架构 Asterisk程序框图
Asterisk权威指南中文(第3版) Asterisk权威指南(第3版)第15章自动话务员 Asterisk权威指南(第3版)第02章Asterisk体系结构 Asterisk权威指南(第3版)第05章用户设备配置 Asterisk权威指南(第3版)第06章Dialplan基础 ...
用于控制Asterisk的.net类库,包含了AMI和FastAGI,最新的1.6.3版本
Asterisk 代码学习笔记,深入浅出asterisk,由于工作上的VOIP项目需要,最近亲密接触了一下asterisk工程代码。关于asterisk在VOIP上的伟大地位和作用,俺就不絮叨了,请看前作:Astersik+Radius简易攻略 国内对于...
This is a book for anyone who uses Asterisk, but particularly those who already understand the dialplan syntax. In this book, we look at common problems we’ve encountered as Asterisk administrators ...
asterisk16版本安装包,下载之后直接编译安装即可。
Asterisk[1] 是一个开放源代码的软件VoIP PBX系统,它是一个运行在Linux环境下的纯软件实施方案。Asterisk是一种功能非常齐全的应用程序,提供了许多电信功能,能够把你的x86机 器变成你自己的交换机,还能够当作一...
asterisk拨号方案的配置
Asterisk, voip, ITSP
本代码整理了Asterisk AMI 接口,下载之后,通过配置Asterisk用户名和密码即可连接到Asterisk,用户名和密码在代码中已给出,可自由修改。
Asterisk客户端和Asterisk manager API(AMI)文档。
Asterisk学习必备,共5本书籍,学习助手 Asterisk权威文档(第3版).pdf Asterisk,the future of telephony.pdf Building+Telephony+Systems+with+Asterisk.pdf Asterisk+For+Dummies+2006.pdf Asterisk_Developers_...
Asterisk Cookbook.pdf
详细写了如何实现asterisk视频通讯功能的 每步都有截图噢!
Asterisk 分机注册-互通-中继配置
asterisk 的AMI代理服务程序。和asterisk之间保持一个tcp连接,可以和多个ami client的保持连接,asterisk ami event向多个client同时发送。
asterisk-16.0.0.jar 呼叫中心的jar包 基于asteriter
Asterisk权威指南 第3版 中文
asterisk SIP 开源的 asterisk 编程参考
Asterisk CLI 命令列表 Asterisk是一个开源的VoIP系统平台..