GNOME Bugzilla – Bug 657142
Automatically link e-d-s contacts with their contacts from telepathy
Last modified: 2011-09-14 12:32:06 UTC
It would be nice if we could automatically link up google contact personas in the eds backend with their corresponding gtalk telepathy personas. This seems perfectly safe and right to me.
I guess the eds backend need to automatically generates a read-only gtalk IM fields for google talks users. Is such data availible via the gdata protocol?
As discussed on IRC, e-d-s' google backend should be populating the IM address field: http://git.gnome.org/browse/evolution-data-server/tree/addressbook/backends/google/e-book-backend-google.c#n2955 Though alexl mentioned he couldn't see such fields when dumping a VCard from a contact coming from the Google backend (e-d-s/libgdata bug?). We should fix this and also make sure folks checks such field for IM addresses. That should make the linking happen.
Looking a little bit closer into this, this is how the e-book-backend-google transforms what it gets from libgdata into an EVCardAttribute: $10 = (const gchar *) 0x7fffe0020c10 "http://schemas.google.com/g/2005#GOOGLE_TALK" (gdb) n 3369 field_name = field_name_from_google_im_protocol (gdata_gd_im_address_get_protocol (im)); (gdb) n 3370 if (!field_name) (gdb) n 3373 attr = e_vcard_attribute_new (NULL, field_name); (gdb) print field_name $11 = (gchar *) 0x653dd0 "X-GOOGLE_TALK" So or we either handle that field (and all the other possibilities for IM addresses that Google has) from Folks or we get proper support for them in e-d-s (as with the other IM addresses).
Created attachment 194487 [details] [review] Handle IM addreses from Google contacts First go at this, if the approach is right it needs to be extended for all the possible IM fields GMail generates.
Btw, all the other IM protos get picked up : im-addresses { 'msn' : { 'XXXX@hotmail.com' }, 'icq' : { 'XXXX-icq' }, 'skype' : { 'XXXX' }, 'jabber' : { 'XXXX', 'XXXX@gmail.com' }, 'aim' : { 'XXXX.aim' } } So it is was only GTalk which gets thrown to a special field not recognized by e-d-s.
Review of attachment 194487 [details] [review]: As discussed on IRC, this is probably better fixed by adding GTalk as a new synthetic field in EContact.
Following up on e-d-s: https://bugzilla.gnome.org/show_bug.cgi?id=657256
I tried this with the latest e-d-s and i still got no im-addresses for gtalk users. For instance: Persona 'eds:alexander.larsson@gmail.com:http\://www.google.com/m8/feeds/contacts/alexander.larsson%40gmail.com/full/5': avatar 0x7f2a74003a00 email-addresses { jdub@gnome.org, jeff.waugh@gmail.com } groups { } im-addresses { } ... This should have a jabber im-address for it to match: Persona 'telepathy:/org/freedesktop/Telepathy/Account/gabble/jabber/alexander_2elarsson_40gmail_2ecom1:jeff.waugh@gmail.com': alias Jeff Waugh avatar 0x7f2a74973e00 (file: file:///home/alex/.cache/telepathy/avatars/gabble/jabber/_33b0ec6f86bf76ee4f370c5ffa93600c53a11c394) groups { 'Gnome' } im-addresses { 'jabber' : { 'jeff.waugh@gmail.com' } }
Discussion about this on IRC: pwithnall: alex_away: Re. bgo#657142, does that EContact actually have a Google Talk IM address set in Evolution? We don't claim to automatically copy @gmail.com e-mail addresses to the IM addresses field (and we shouldn't, since that contact might not ever use Google Talk) alex_away: pwithnall: I have no idea really alex_away: pwithnall: but, the contact is from google contacts, and google knows that i added that contact to my buddy list, so it *should* be able to tell me the jabber address for it alex_away: pwithnall: I don't want to have to go through all the google contacts that have a gtalk address and manually type in a jabber address... pwithnall: alex_away: I agree, Google should do that…but they don't. That information isn't exposed in the Google Contacts API at all alex_away: pwithnall: ick pwithnall: Yup :-( alex_away: pwithnall: that makes the whole thing quite useless * pwithnall checks just to be sure alex_away: pwithnall: i guess we could match all @gmail.com email addresses pwithnall: yeuch alex_away: pwithnall: its that or force every user to manually link all their google contacts together... alex_away: pwithnall: utter loss pwithnall: I would be uncomfortable with adding GMail addresses to the im-addresses property of EDS personas in folks, but I guess you could do it in gnome-contacts alex_away: pwithnall: eh? how? - Maiku has joined the room alex_away: iterate over the whole address book on startup and write the im-addresses? pwithnall: oh, sorry, yes, that's a rubbish idea since it won't affect linking alex_away: ideally they *should* give out some im info - maximi89 has disconnected (Ping timeout: 600 seconds) alex_away: i mean, maybe someone is running gmail on their own domain thing alex_away: and we'd want to also pick that up pwithnall: alex_away: The Google Contacts API is basically just an XML serialisation of vCard. Nothing more. pwithnall: There is zero integration with Google Talk pwithnall: or GMail alex_away: sure pwithnall: Hopefully that will change in future, since they seem to be heading in that direction, and the Google Contacts API is reasonably well maintained alex_away: but in the google contacts web app it lists the gmail address and then has chat and email links on that line alex_away: so, it would make sense to encode that info in the serialized vcard version of the contact pwithnall: It would pwithnall: I'll submit a bug report against the Google Contacts API about it if one doesn't already exist, but don't get too hopeful Robot101: we could e-mail the secret google XMPP team and say, how do we resolve this? alex_away: or we could just do that badhack and make our users happy... alex_away: well, if we can get a real fix in before 3.2 that would be great pwithnall: Robot101: ++ Robot101: what's the bad hack? alex_away: but if we're forcing all gnome 3.2 google users to manually link together all their contacts thats pretty bad Robot101: have a whitelist of gmail / googlemail / ...? known domains and replicate the IM field to the email field in telepathy contacts in the relevant cases? alex_away: Robot101: if (g_str_has_suffix (email, "@gmail.com")) { im-addresses += email} Robot101: the same applies for MSN and hotmail.com alex_away: Robot101: not in telepathy contacts alex_away: Robot101: in eds contacts - om26er__ has joined the room alex_away: we don't link on email alex_away: its gotta be the eds contact that has to have the right im-address alex_away: based on an email Robot101: oh, ick alex_away: yeah, its icky all right Robot101: you need a bunch of domains though, and if you're doing it you should totally do the MSN ones too alex_away: anyway, i'm gonna be hiding im-addresses that are used for linking in the eds edit UI anyway Robot101: right, as the IM persona will be there alex_away: so, the ick is purely internal alex_away: Robot101: yeah, no need to show it twice, or risk the user editing it breaking the link - alex_away - alsuren - albanc - Robot101: right Robot101: pwithnall: how did we do it for our facebook demo? alex_away: Of course, its not purely internal Robot101: we had libsocialweb facebook contacts linking with telepathy xmpp contacts alex_away: It may be at some point we edit the im-addresses field and write back the email address there alex_away: then other apps will see it alex_away: another approach would be to make the individualaggregator match emails to im-addresses as well pwithnall: Robot101: I didn't have anything to do with that; that was treitter, I think alex_away: then you pick up any jabber address that is the same as the email address alex_away: which is kinda nice - alex_away - alsuren - albanc - alex_away: although it does put some magic in the core folks code pwithnall: alex_away: That sounds like a nicer solution, but also means the pain of touching the aggregation code alex_away: pwithnall: it does. but fortunately i leave that pain to you guys :-) alex_away: anyway, time to Zzz alex_away: later Robot101: pwithnall: or barisione - om26er_ has disconnected (Ping timeout: 600 seconds) barisione: alex_away: mathing emails and jabber addresses is possibly wrong barisione: pwithnall: ^ pwithnall: alex_away, Robot101: http://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=2737 if you want to star it, for all the good that'll do barisione: as the same string could be for different people Robot101: barisione: only if your domain's syadmin is an asshat, seriously Robot101: *sys barisione: I actually found servers like that at some point :-P Robot101: we could maintain a blacklist Robot101: of public XMPP servers which don't provide corresponding e-mail barisione: for the facebook demo I think I could have just modified the libsocialweb facebook thing to add the JID to every contact pwithnall: That's sounding like the safest and easiest solution at the moment; to just copy @gmail.com e-mail addresses into the im-addresses field inside the eds backend (and the same for @hotmail.com, etc.) pwithnall: The only downside is that we could end up advertising IM addresses which people don't use…but then my address book's full of those anyway, so meh.
Didn't make this release; punting to 0.6.2.
(Punting bugs to 0.6.4)
So, do we have consensus on whether we'd like to assume certain e-mail addresses represent IM ids too?
(In reply to comment #12) > So, do we have consensus on whether we'd like to assume certain e-mail > addresses represent IM ids too? I think so, yes. If you'd like to do the necessary changes, that would be great.
Created attachment 196374 [details] [review] treat certain e-mail addresses as IM addresses Here it goes.
Created attachment 196375 [details] [review] Test case. And a small test case so we can sleep easily at nights.
Created attachment 196382 [details] [review] treat certain e-mail addresses as IM addresses Updated according to feedback from Alex, we make sure that we don't overwrite existing IM addresses. One open issue is unlinking...
Created attachment 196389 [details] [review] patch
Created attachment 196390 [details] [review] treat certain e-mail addresses as IM addresses This patch is *actually* new.
Review of attachment 196390 [details] [review]: Looks good to me, apart from the two comments below which can be fixed (or ignored, in the case of live.com, if I'm wrong about it having e-mail addresses) before committing. ::: backends/eds/lib/edsf-persona.vala @@ +1233,3 @@ } + /* We consider some e-mail addresses to be IM IDs too */ Probably worth pointing out that this is hacky, and referring to the bug report for rationale. @@ +1533,3 @@ + + if (domain == "msn" || + domain == "hotmail") Should we also check for “live[.com]” here too?
Review of attachment 196375 [details] [review]: Looks good to me.
I think we should check some x-foo vcard attribute for im_addresses to not add, before adding them. Then we make setting the im_addresses property set these x-foo attributes when some auto-added im address is not in the set. This way we can support unlinking.
(In reply to comment #21) > I think we should check some x-foo vcard attribute for im_addresses to not add, > before adding them. Then we make setting the im_addresses property set these > x-foo attributes when some auto-added im address is not in the set. This way we > can support unlinking. I'd much rather fix bug #629537 than implement anti-linking in ad-hoc and hacky ways like this, but since that bug's not going to get fixed for GNOME 3.2, if you think anti-linking for IM addresses vs. e-mail addresses is sufficiently importantly, I think an x-foo attribute would be reasonable.
anti-linking for IM addresses isn't super important, it just means that we'll be unable to unlink these and it will look weird when it happens in the UI. Its far more important that we automatically link these together as that affects every google user. Still, It might be nice to do.
Merged: commit f25a44b93018dd64042a1c318b35d9b4a696124f Author: Raul Gutierrez Segales <rgs@collabora.co.uk> Date: Tue Sep 13 14:51:48 2011 +0100 e-d-s: add test for auto linking via emails and IM addresses commit c8c7cbf2b006eafb3cccbe2bec601ac83d4cc505 Author: Raul Gutierrez Segales <rgs@collabora.co.uk> Date: Tue Sep 13 12:44:08 2011 +0100 e-d-s: assume certain e-mail addresseses are IM IDs too Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=657142