Improve support for XMPP URI (#189)
Closed
Andrzej Wójcik (Tigase) opened 5 years ago

With XMPP URI it is possible to handle preauthentication and invitation to create an account on the server-side. It would be nice to properly handle those URI in Siskin as it could be a very nice feature for user onboarding.

Andrzej Wójcik (Tigase) commented 5 years ago

This is related to https://xmpp.org/extensions/xep-0379.html and https://docs.modernxmpp.org/client/invites/ which are both implemented in https://snikket.org/.

Those features are quite interesting for onboarding of users or for companies wanting clients or employees to create an account ie. for internal communication.

@kobit From my viewpoint, it could be interesting for us in the Kangaroo project. Moreover, Snikket is a modified version of Conversations, so it would be good to have this feature as well.

Right now it is only available in Siskin IM, but we could add it to Stork IM and Beagle IM. However, to have full benefits of that we would need to implement preauthentication on the server-side. This way not only our clients could respond on those uris (XMPP URI as a link or QR code) but could generate and send them.

From what I've talked with MattJ (author of Prosody and now Snikket), he would promote our clients as Snikket compatible if we would have those features.

Artur Hefczyc commented 5 years ago

This is precisely what I was thinking about for the Kangaroo project. Mainly about "Registration through invitation". But the roster pre-authentication sounds interesting too but maybe not as critical.

You say that it is already implemented in Siskin? If so, it would be great to have an article on tigase.net with screenshots and instructions on how it can be used in practice. Better yet a video but video can wait.

We definitely want/need this for BeagleIM, StorkIM and for Kangaroo most importantly ParrotIM. @bmalkow please add this to your tasks list.

Andrzej Wójcik (Tigase) commented 5 years ago

SiskinIM (version available in the AppStore) already has support for most of the XMPP URI features described at https://wiki.xmpp.org/web/XMPP_URIs . I'm saying most, as I'm not sure that setting contact name of added contact is implemented but it basically works. So you can tap on the link in the browser and Siskin will react.

The same features, in this case, works for Beagle IM (it has support for XMPP URI links).

Moreover, SiskinIM has support for scanning QR codes which may contain XMPP URI. Just scan the QR code with iPhone system camera app and you will get a question if the link should be opened in SiskinIM.

With Siskin, in the beta version, we now have support for accepting invitations (including account creation invitations) and preauthentication of contacts. However, we cannot send those invitations (nor QR codes, now links) as we do not have support for that on the server side (ie. for preauthentication or account creation).

As for screenshots or videos, it is quite difficult to catch the whole process. Maybe instead we should post a QR code or an XMPP URI at our blog saying "Scan with your phone or click a link to join our support channel conversation" (however SiskinIM or BeagleIM preinstalled is required for that).

Artur Hefczyc commented 5 years ago

Andrzej, I understand what you are saying above. However, I have no idea on how to use it in practice and how the whole process could look like. If I have no idea, then my understanding is that many more people don't know either. So we do need some kind of introduction, step by step guide. Without this, we have a great feature which would never be used.

But I agree that we might need to add server side support first in Tigase to have it all working based on our software only. I would even consider it a higher priority than MIX as this is a potential feature which may help us to gain more users on our software.

Andrzej Wójcik (Tigase) commented 5 years ago

Well, let's have a simple test directly from YT.

Here is a simple link which should activate a "register" feature in SiskinIM for specified domain: xmpp:sure.im?register

So all you need to do is just click/tap this link above to start the registration process (if you have Siskin installed).

I've attached a simple QR code, which you can open on the computer (could be part of the web page) and then you can just scan this QR code with your iPhone (using camera app).

Please try this, so you will actually experience how it works and how simple it is.

Right now, I can (as I know how) to generate those links as we do not have the requirements of tokens to register an account on our servers. But, in the Kangaroo project, we most likely would like to have validation of tokens for account registration. This way "admin" of the Kangaroo server, could send link/QR code to his employees/friends so they and only they could create an account in a very simple way.

I'm asking you to try to see how simple this is and to suggest what exactly we would like to "show" in the screenshots, as I could make them but I have no idea what to present on them. (Usually, it is difficult for a person who knows the technology behind a feature to find what is not "clear").

frame (2).png

Artur Hefczyc commented 5 years ago

Ok, I am officially impressed! That's precisely what I was looking for.

@wojtek, @andrzej.wojcik I think such links/QR codes could placed on our website (tigase.net, siskin.im) to encourage people to register accounts on our server. What do you think? It's a nice and cool feature.

A few questions, ideas:

  • Can we also have a user name/JID in the link to be pre-filled in the registration form, or maybe even password?
  • Can we create an account for a user and send a similar link with login information, so the user clicks on the link or scans QR Code and the account is added in Siskin? I am thinking of a simple workflow. User clicks on the links (scans the QR code) and Siskin opens and and asks a user: Do you want to add this account? User click YES and account is added. (Or if the account is already added, siskin would just notify the user that account is already added and ready to use). I am still thinking of how to get on board people much less technical who use Skype, FB and similar. Like my family. They would use our software but setting it up is too complex.

For the Kangaroo project the workflow could be similar to all other existing systems (Dropbox, Slack, github....). An admin adds an account and an invitation is sent over email to the user. The invitation can have a link and/or QR code with the user name included. User clicks, and forms opens with pre-filled fields with password field empty. User fills in password and logins into the new account. It's would just be like password reset for the user. I am not sure what you mean by tokens here.

Andrzej Wójcik (Tigase) commented 5 years ago

Registration form can be prefilled with a username, just place a bare JID instead of just domain name in the URI and it will work out of the box.

As for having password in the URI, there is no feature for that, but I think I know how we could do that..

In case of a token, the idea was to be able to "register" account only with a provided token, so that the server would reject registration from anyone else. It would be quite useful.

Andrzej Wójcik (Tigase) commented 5 years ago

I think that we should suggest people adding their first account to join our support channel. This way we could help them and build community.

Artur Hefczyc commented 5 years ago

Ok, thank you for additional explanation. I think we will explore on the topic more while we work on Kangaroo. In the meantime I think it is worth planning to add necessary functionality on the server side in Tigase.

Andrzej Wójcik (Tigase) commented 5 years ago

OK, I'll create tasks for adding necessary features.

Andrzej Wójcik (Tigase) commented 5 years ago

@kobit Tasks created and linked to this on. This task is not "completed" in my opinion as we are still missing retrieval of preauth tokens from the server because Tigase does not support this yet (task for this was added as well)>

Please wait...
Page is in error, reload to recover