How to issue AIM buddy add via transport?

What’s the right way for my client to issue a buddy list add via the AIM transport over XMPP? A regular old subscription request doesn’t do it.

<presence type=‘subscribe’ to=‘someaimuser@aim.my-test-machine.local’ xmlns=‘jabber:client’/>

A pointer to code is fine. Thanks!

(Also, more generally, where should I look for XMPP stanza <-> legacy mappings?

I am not sure what you are asking. The AIM transport is just that a transport mech for the AIM protocol. An AIM account should be able to begin chat with any other AIM buddy unless that user has their AIM settings set to disable unknown users chatting with them. This is not an XMPP procedure.

The IM Gateway plugin looks for the roster item to actually appear in your real roster. It more or less ignores the subscribe packet because it’s waiting for you to use an iq roster packet to -really- add it. =)

Sorry for not including the transcript; I am adding them to the roster, but perhaps I’m doing it wrong. This is the unedited transcript; my (varktest2) roster initially has only aim.fritz-schneiders-computer.local in it. I’m trying to add varktest1@aim.com.

D, DEBUG – jabber: SENDING:

D, DEBUG – jabber: RECEIVED:

D, DEBUG – jabber: PROCESSING:

(Jabber::Iq)

D, DEBUG – jabber: RECEIVED:

D, DEBUG – jabber: PROCESSING:

(Jabber::Iq)

D, DEBUG – jabber: RECEIVED:

D, DEBUG – jabber: SENDING:

Followup: I guess I’m having two problems; not sure if they’re related.

(1) I can’t seem to figure out how to instruct AIM to add someone as a buddy via XMPP through the AIM transport

(aim.mycomputer). See previous items in this thread. (Note that I can exchange messages with people just fine who are buddies).

(2) My status (show and status message) don’t seem to be relfected into AIM. I gets status updates for my buddies, but they don’t get mine. I’ve tried all manner of variations on (setting the to field to the transport, the from field to me or me@the transport, ensuring the remote aim user is on subscribed with both to the gateway and my local user, etc etc etc) to no avail.

I’m at the point where I’m starting to read through the gateway code to try to figure out what’s happening…

to add an AIM buddy in spark you only need to add their buddy name, Set a Nickname, Choose a group, Check the box for a public network and chose AIM. See attachment.

Thanks for the suggestion – it was really helpful. I fired up spark and watching the interaction I noticed that spark’s roster add is to the gateway, whereas mine wasn’t. The way spark adds a buddy is:

  1. Roster set to the gateway for legacyuser@gateway

  2. Roster set for legacyuser@gateway

  3. Presence subscription for legacyuser@gateway

This works much better for me I’m still having some trouble with presence updates, but I suspect it’s just a matter of me not setting subscriptions correctly.

Thanks!

So I can at this point… add aim buddies via xmpp through the transport (it only works for me if I make them part of a local Buddies group), send/receive messages with AIM users, and receive status updates from AIM users. However my local status message isn’t ever reflected into AIM as far as I can tell… It seems I have everything set up correctly:

  • the transport is subscribed to my (local) presence with subscription=“both”

  • we’re mutual muddies in AIM

  • I’m setting my presence like so:

I’ve also tried a bunch of variations (directed presence like Spark, setting from=, etc.), but to no avail.

Using spark my status is reflected into AIM, and as far as I can tell spark and I are sending the same presence updates.

What am I missing?