Integrate Wildfire messaging with SQL application

I’'ve got an SQL application where user accounts and groups are already defined. Users subscribe to groups in the SQL application and I want to add Jabber as an interaction channel for this application. However, this interaction works a little differently than you might expect.

My SQL application does some complex group message routing, which I’‘d rather not take the time to explain. The end result for the Jabber integration however is simple. I’'ve already been able to sync WF jabber user accounts with the SQL application just fine… now I need get my SQL application to interact with the WF server in order to send/receive messages.

What I’'d like is to be able to connect the SQL app to WF in such a way that both groups and users are setup in wildfire as users, so the user TIM and the group FUNGROUP both appear as user accounts on the wildfire server. The end goal is to be able to let users like TIM add groups like FUNGROUP to their roster as users, and because of that process the SQL app knows that TIM has subscribed to the group FUNGROUP simply by adding the “user” FUNGROUP to his roster.

The hard part is that the SQL app must be able to act as the user FUNGROUP and send TIM alert messages and receive messages back from TIM so they can be processed in SQL in the correct context (TIM sending messages to FUNGROUP). I have an older XMPP bot I wrote to connect to GoogleTalk, but that means the bot can only connect as a single user. I need a solution that will let the SQL server interact with Wildfire without needing tons of bots making tons of connections to Wildfire.

I’‘m not a Java programmer, but I have a hunch I’‘ll have to create some kind of component connection to the server? What’‘s the difference between a component connection to the server versus a client connection to the server like Spark? What are the capabilities of a component connection? If a component connection won’‘t solve my problem, does that mean I’'ll have to write a server plugin of some kind?

Thanks in advance for your time and consideration.

Hey ishmell,

I will try to answer to the last part of your post.

Clients connect to the server and they can only send messages on their behalf. On the other hand, components are trusted entities by the server that are allowed to use any FROM and TO values in the packets. That means that you can have a single component connected to the server and let the component use different FROM values in the messages that you are sending. If I’'m not wrong that is what you are looking for.

Moreover, you can have internal or external components in Wildfire. Except for the difference that internal components have access to the Wildfire API the rest of their capabilities are exactly the same.


– Gato

Hmm, that’‘s very interesting… so basically an external component is simply a special XMPP client connection that can use any FROM to any TO on the system. If that’‘s the case, that’‘s perfect because I already have my custom XMPP client created in a language I’'m familiar with.

I’‘m leaving for a week long trip today so I won’'t be able to test this out until I return. Thanks for the tip!

Hmm… after thinking about this a tidbit, there may be a couple problems. First, I used an XMPP component to create the client I’‘ve got now and it’'s not possible to specify a different FROM value to masquerade as another user. Any idea if there are any XMPP component packages that would open you up to be able to emulate other users?

The other problem is, when using a component connection is it possible to actually update these emulated users’’ presence information as well as receive messages sent to them via the external component connection?

Thanks for your help!