[asterisk-users] Asterisk and XMPP (Jabber) : testing new application JabberReceive

Philippe Sultan philippe.sultan at gmail.com
Thu Jun 12 10:22:32 CDT 2008


Hi Julian,

[...]
>> What can you do with it? Well, a direct usage of this application is
>> to make an easy to use GoogleTalk voice gateway out of Asterisk. Here
>> is an example (assuming the asterisk-xmpp account is configured) :
>> context gtalk-in {
>>     s => {
>>         NoOp(Caller id : ${CALLERID(all)});
>>         Answer();
>>         JabberSend(asterisk-xmpp,${CALLERID(name),Please enter the
>> number you wish to call);
>>         JabberReceive(${CALLERID(name)},NEWEXTEN);
>
> How can you assume that the message you are waiting for is the right one
> ? Let's say that you have 10 channels each doing a JabberReceive at the
> same time - how does the channel know how to get the right message, let
> alone the right data ?
>
> (2 channels may be waiting for a NewExten message, others for a
> GetSomeDataFromSomeOtherPlace message )

Well, in the example, as long as you have 10 simultaneous GoogleTalk
calls from 10 different buddies, that won't be a problem. The first
argument of JabberReceive is used by the channel to identify the
Jabber ID it expects to read data from. Therefore, a message coming
from a specified buddy (identified by his JID) will be passed by
res_jabber to the channel that is waiting for data from this buddy.

In the case when several channels are waiting for data from the same
JID, res_jabber passes the message to every channel that matches.
Although this is less likely to happen, I tried to address this issue
by using the <thread> tag to track chat conversations
(http://www.xmpp.org/extensions/xep-0201.html). Unfortunately, very
few XMPP clients implement this conversation tracking mechanism (and
GoogleTalk does not).

Philippe



More information about the asterisk-users mailing list