Msteams-docs: Document msteams: uri format

Created on 26 Jul 2018  路  6Comments  路  Source: MicrosoftDocs/msteams-docs

I've noticed when going to links for msteams channels like so;
https://teams.microsoft.com/l/channel/19%[redacted]%40thread.skype/Sprite%2520is%2520NOT%2520Lemonade?groupId=[redacted]&tenantId=[redacted]

It will take you to the Teams website which executes some Javascript behind the scenes to filter out all the undeeded crap so you get left with a URI that launches MS Teams. So you get something like this:
msteams:/l/channel/19:[redacted]@thread.skype/ICT%20-%20Information%20and%20Handy%20Hints?groupId=[redacted]&tenantId=[redacted]&deeplinkId=[redacted]

Obviously where all the redacted are is the GUID or whatever of the respective channel, I can't seem to find anywhere what the scheme of msteams: actually is, I have my own "research" on how it works and how to ceate my own URI links but I would like to see it offically documentated, I am more than happy if it comes to it to create my own PR with what I know to make life easier, but I doubt it would be upto standard.

feature-request triaged

Most helpful comment

That's our cross-platform deep link format. It's actually a serialization of a JSON object, the schema of which is specific to each verb (message, team, channel, chat, meetup-join, and others). Currently the only one that's documented is the entity deep link format. Deep links do not use msteams:// URIs; they use https://teams.microsoft.com/l/... syntax.

The reason why we haven't documented the others is that we haven't provided any way to obtain the identifiers (e.g. channel IDs, conversation IDs, user IDs) they use. The [email protected]... IDs are perfect examples of that.

We plan to expose this functionality later this year.

Hi! Any news on that subject?

All 6 comments

My understanding is that when you have a link like this:
https://teams.microsoft.com/l/channel/
Which is assuming we're wanting to URI laucnh to a channel we can translate that to
msteams:/l/channel/
which is the URI version, then in the link we have
19%3a
Which translates in the URI to
/19:
where %3A is the :
Then you have what I assume is a hash of the channel so a random fill here:
140864078AECA1C7C35B4BEB33C53C34
Which doesn't need translating so it should make the whole URI so far look like this:
msteams:/l/channel/19:140864078AECA1C7C35B4BEB33C53C34
which wil launch teams but not to the channel we want, so next up we're gonna take the
%40thread.skype/
from the original link that Teams gives us, the only translation is the decode of the HTML character %40 which is "@"
giving us
@thread.skype/
It's nice to see btw that we're still using Skype backend names馃槈.
Once more we take the channel NAME from the link which for me is:
ICT%2520-%2520Information%2520and%2520Handy%2520Hints
we need to de-encode this as it's encoded twice as explained here.
which gives us
ICT%20-%20Information%20and%20Handy%20Hints
then for the last step we get the "groupId" which is just the GUID from the URL (it should be obvious) but will look like this
155983f3-2a3e-4dd0-8d4b-7e50b4b7d332
In my testing you didn't need the tenantId but if it turns out you do, just do the same step above , so your total URI should look like

msteams:/l/channel/19:[email protected]/ICT%20-%20Information%20and%20Handy%20Hints?groupId=155983f3-2a3e-4dd0-8d4b-7e50b4b7d332&tenantId=155983f3-2a3e-4dd0-8d4b-7e50b4b7d332

That's our cross-platform deep link format. It's actually a serialization of a JSON object, the schema of which is specific to each verb (message, team, channel, chat, meetup-join, and others). Currently the only one that's documented is the entity deep link format. Deep links do not use msteams:// URIs; they use https://teams.microsoft.com/l/... syntax.

The reason why we haven't documented the others is that we haven't provided any way to obtain the identifiers (e.g. channel IDs, conversation IDs, user IDs) they use. The [email protected]... IDs are perfect examples of that.

We plan to expose this functionality later this year.

I found channel Ids etc from the desktop app when asking for a link so that is one way it's exposed, but it's nice to know it's on the backburner as they say.

saya setuju dengan alasan @billbliss bahwa untuk mengindentifikasi secara benar sangat diperlukan ada pengguna semacam user name karena jika log in pada situs msteams maka email kerja bisa bersamaan jalannya dengan serialisasi log in dengan Microsoft Online Account yang ada.

I think what bill says above resolves this issue. Let me know if that is not the case.

That's our cross-platform deep link format. It's actually a serialization of a JSON object, the schema of which is specific to each verb (message, team, channel, chat, meetup-join, and others). Currently the only one that's documented is the entity deep link format. Deep links do not use msteams:// URIs; they use https://teams.microsoft.com/l/... syntax.

The reason why we haven't documented the others is that we haven't provided any way to obtain the identifiers (e.g. channel IDs, conversation IDs, user IDs) they use. The [email protected]... IDs are perfect examples of that.

We plan to expose this functionality later this year.

Hi! Any news on that subject?

Was this page helpful?
0 / 5 - 0 ratings