Créer des liens plus étroits
Les liens profonds sont un mécanisme de navigation que vous pouvez utiliser pour connecter les utilisateurs à des informations et des fonctionnalités dans Teams et les applications Teams. Voici quelques scénarios où la création de liens profonds peut être utile :
- Navigation de l’utilisateur vers le contenu dans l’un des onglets de votre application. Par exemple, votre application peut avoir un bot qui envoie des messages informant l’utilisateur d’une activité importante. Lorsque l’utilisateur appuie sur la notification, le lien profond accède à l’onglet afin que l’utilisateur puisse afficher plus de détails sur l’activité.
- Votre application automatise ou simplifie certaines tâches de l'utilisateur, comme la création d'une conversation ou la programmation d'une réunion, en préremplissant les liens profonds avec les paramètres requis. Cela évite aux utilisateurs d’entrer manuellement des informations.
Le SDK client JavaScript de Microsoft Teams (TeamsJS) simplifie le processus de navigation. Pour de nombreux scénarios, tels que la navigation vers du contenu et des informations dans votre onglet ou même le lancement d’une boîte de dialogue de conversation, le Kit de développement logiciel (SDK) fournit des API typées qui améliorent l’expérience et peuvent remplacer l’utilisation de liens profonds. Ces API sont recommandées pour les applications Teams susceptibles d'être exécutées dans d'autres hôtes (Outlook, Office), car elles permettent également de vérifier que la fonctionnalité utilisée est prise en charge par cet hôte. Les sections suivantes présentent des informations sur les liens profonds, mais soulignent également comment les scénarios qui les nécessitaient ont changé avec la version v2 de TeamsJS.
Notes
Cette rubrique reflète la version 2.0.x du Kit de développement logiciel (SDK) client JavaScript Microsoft Teams. Si vous utilisez une version antérieure, reportez-vous à la vue d’ensemble du Kit de développement logiciel (SDK) JS Teams pour obtenir des conseils sur les différences entre les dernières versions de TeamsJS et les versions antérieures.
Notes
Le comportement des liens profonds dépend d'un certain nombre de facteurs. La liste suivante décrit le comportement des liens profonds sur les entités Teams.
Onglet :
✔ Accède directement à l’URL de lien profond.
Bot :
✔ Lien profond dans le corps de la carte : S'ouvre d'abord dans le navigateur.
✔ Lien profond ajouté à l'action OpenURL dans la carte adaptative : Permet de naviguer directement vers l'url du lien profond.
✔ texte Markdown de lien hypertexte dans la carte : s’ouvre dans le navigateur en premier.
Conversation :
✔ Message texte hyperlien markdown : Permet de naviguer directement vers l'url du lien profond.
✔ Lien collé dans une conversation générale de conversation : Permet de naviguer directement vers l'url du lien profond.
Le comportement de navigation d'une application Teams étendue à Microsoft 365 (Outlook/Office) dépend de deux facteurs :
- Cible vers laquelle pointe le lien profond.
- Hôte sur lequel l’application Teams s’exécute.
Si l'application Teams est exécutée dans l'hôte où le lien profond est ciblé, votre application s'ouvrira directement dans l'hôte. Toutefois, si l'application Teams est exécutée sur un hôte différent de celui où le lien profond est ciblé, l'application s'ouvrira d'abord dans le navigateur.
Lien profond à votre onglet
Vous pouvez créer des liens profonds vers des entités dans Teams. Cette méthode permet de créer des liens qui accèdent au contenu et aux informations dans votre onglet. Par exemple, si votre onglet contient une liste de tâches, les membres de l’équipe peuvent créer et partager des liens vers des tâches individuelles. Lorsque vous sélectionnez le lien, il accède à votre onglet qui se concentre sur l’élément spécifique.
Pour implémenter, ajoutez une action copier le lien à chaque élément, de la manière qui convient le mieux à votre interface utilisateur. Lorsque l'utilisateur effectue cette action, appelez pages.shareDeepLink() pour afficher une boîte de dialogue contenant un lien que l'utilisateur peut copier dans le presse-papiers. Lorsque vous effectuez cet appel, transmettez un ID pour votre élément. Vous le récupérez en contexte lorsque le lien est suivi et que votre onglet est rechargé.
pages.shareDeepLink({ subPageId: <subPageId>, subPageLabel: <subPageLabel>, subPageWebUrl: <subPageWebUrl> })
Vous devez remplacer les champs par les informations appropriées :
subPageId: un identificateur unique de l’élément dans votre onglet auquel vous effectuez un lien profond.subPageLabel: étiquette de l’élément à utiliser pour afficher le lien profond.subPageWebUrl: une URL de secours à utiliser si le client ne peut pas afficher la page.
Pour plus d’informations, consultez pages.shareDeepLink().
Vous pouvez également générer des liens profonds par programmation, en utilisant le format spécifié plus loin dans cet article. Vous pouvez utiliser des liens profonds dans bot et connecteur messages qui informent les utilisateurs des modifications apportées à votre onglet ou aux éléments qu’il contient.
Notes
Ce lien profond est différent des liens fournis par l’élément de menu Copier vers l’onglet, qui génère simplement un lien profond qui pointe vers cet onglet.
Important
Actuellement, shareDeepLink ne fonctionne pas sur les plateformes mobiles.
Utiliser un lien profond à partir d’un onglet
Lorsque vous accédez à un lien profond, Microsoft Teams accède simplement à l’onglet et fournit un mécanisme via la bibliothèque JavaScript Teams pour récupérer l’ID de sous-page s’il existe.
L’appel app.getContext() (microsoftTeams.getContext()) dans TeamsJS v1 retourne une promesse qui sera résolue avec le contexte qui inclut la subPageId propriété (subEntityId pour TeamsJS v1) si l’onglet est parcouru via un lien profond. Pour plus d'informations, voir Interface PageInfo.
Générer un lien ciblé vers votre onglet
Bien qu’il soit recommandé d’utiliser shareDeepLink() pour générer un lien profond vers votre onglet, il est possible d’en créer un manuellement.
Notes
- Les onglets personnels ont un
personalscope, tandis que les onglets canal et groupe utilisentteamorgroupscopes. Les deux types d’onglets ont une syntaxe légèrement différente, car seul l’onglet configurable a unchannelpropriété associé à son objet de contexte. Pour plus d’informations sur les étendues d’onglet, consultez la référence du manifeste. - Les liens profonds fonctionnent correctement uniquement si l’onglet a été configuré à l’aide de la bibliothèque v0.4 ou ultérieure et qu’en raison de cela a un ID d’entité. Les liens profonds vers des onglets sans ID d’entité accèdent toujours à l’onglet, mais ne peuvent pas fournir l’ID de sous-entité à l’onglet.
Utilisez le format suivant pour un lien profond que vous pouvez utiliser dans un bot, un connecteur ou une carte d’extension de message :
https://teams.microsoft.com/l/entity/<appId>/<entityId>?webUrl=<entityWebUrl>&label=<entityLabel>&context=<context>
Notes
Si le bot envoie un message contenant un TextBlock avec un lien profond, un nouvel onglet de navigateur est ouvert lorsque l’utilisateur sélectionne le lien. Cela se produit dans Chrome et dans l’application de bureau Teams, tous deux exécutés sur Linux.
Si le bot envoie la même URL de lien profond dans un Action.OpenUrl, l’onglet Teams est ouvert dans l’onglet du navigateur actuel lorsque l’utilisateur sélectionne le lien. Aucun nouvel onglet de navigateur n’est ouvert.
Les paramètres de requête sont les suivants :
| Nom du paramètre | Description | Exemple |
|---|---|---|
appId |
ID du Centre d’administration Teams. | fe4a8eba-2a31-4737-8e33-e5fae6fee194 |
entityId |
ID de l’élément dans l’onglet, que vous avez fourni lors de la configuration de l’onglet. Lors de la génération d’une URL pour la liaison approfondie, continuez à utiliser entityID comme nom de paramètre dans l’URL. Lors de la configuration de l’onglet, l’objet de contexte fait référence à l’entityID en tant que {page.id}. | Liste des tâches123 |
entityWebUrl ou subEntityWebUrl |
Champ facultatif avec une URL de secours à utiliser si le client ne prend pas en charge le rendu de l’onglet. | https://tasklist.example.com/123 ou https://tasklist.example.com/list123/task456 |
entityLabel ou subEntityLabel |
Étiquette de l’élément dans votre onglet, à utiliser lors de l’affichage du lien profond. | Liste des tâches 123 ou » Tâche 456 |
context.subEntityId |
ID de l’élément dans l’onglet. Lors de la génération d’une URL pour la liaison approfondie, continuez à utiliser subEntityId comme nom de paramètre dans l’URL. Lors de la configuration de l’onglet, l’objet de contexte fait référence à subEntityID en tant que subPageID. | Tâche456 |
context.channelId |
ID de canal Microsoft Teams disponible à partir de l’onglet contexte. Cette propriété est disponible uniquement dans les onglets configurables avec une étendue d’équipe. Il n’est pas disponible dans les onglets statiques, qui ont une étendue personnelle. | 19:cbe3683f25094106b826c9cada3afbe0@thread.skype |
chatId |
ChatId disponible à partir du contexte d’onglet pour la conversation de groupe et de réunion | 17:b42de192376346a7906a7dd5cb84b673@thread.v2 |
contextType |
La conversation est le seul contextType pris en charge pour les réunions | conversation |
Exemples :
Lien vers un onglet statique (personnel) lui-même :
https://teams.microsoft.com/l/entity/fe4a8eba-2a31-4737-8e33-e5fae6fee194/tasklist123?webUrl=https://tasklist.example.com/123&label=Task List 123Lien vers un élément de tâche dans l’onglet statique (personnel) :
https://teams.microsoft.com/l/entity/fe4a8eba-2a31-4737-8e33-e5fae6fee194/tasklist123?webUrl=https://tasklist.example.com/123/456&label=Task 456&context={"subEntityId": "task456"}Lier à un onglet configurable lui-même :
https://teams.microsoft.com/l/entity/fe4a8eba-2a31-4737-8e33-e5fae6fee194/tasklist123?webUrl=https://tasklist.example.com/123&label=Task List 123&context={"channelId": "19:cbe3683f25094106b826c9cada3afbe0@thread.skype"}Lien vers un élément de tâche sous l’onglet configurable :
https://teams.microsoft.com/l/entity/fe4a8eba-2a31-4737-8e33-e5fae6fee194/tasklist123?webUrl=https://tasklist.example.com/123/456&label=Task 456&context={"subEntityId": "task456","channelId": "19:cbe3683f25094106b826c9cada3afbe0@thread.skype"}Lien vers une application onglet ajoutée à une réunion ou une conversation de groupe :
https://teams.microsoft.com/l/entity/fe4a8eba-2a31-4737-8e33-e5fae6fee194/tasklist123?webUrl=https://tasklist.example.com/123/456&label=Task 456?context={"chatId": "17:b42de192376346a7906a7dd5cb84b673@thread.v2","contextType":"chat"}
Important
Assurez-vous que tous les paramètres de requête sont encodés correctement en URI. Vous devez suivre les exemples précédents à l’aide du dernier exemple :
var encodedWebUrl = encodeURI('https://tasklist.example.com/123/456&label=Task 456');
var encodedContext = encodeURI('{"subEntityId": "task456"}');
var taskItemUrl = 'https://teams.microsoft.com/l/entity/fe4a8eba-2a31-4737-8e33-e5fae6fee194/tasklist123?webUrl=' + encodedWebUrl + '&context=' + encodedContext;
Navigation à partir de votre onglet
Vous pouvez accéder au contenu dans Teams à partir de votre onglet à l’aide de TeamsJS ou de liens profonds. Ceci est utile si votre onglet doit connecter les utilisateurs à d'autres contenus dans Teams, par exemple à un canal, un message, un autre onglet ou même pour ouvrir un dialogue de planification. Auparavant, la navigation pouvait nécessiter un lien profond, mais elle peut désormais être réalisée dans de nombreux cas à l'aide du SDK. Les sections suivantes montrent les deux méthodes, mais l’utilisation possible des fonctionnalités typées du Kit de développement logiciel (SDK) est recommandée.
L'un des avantages de l'utilisation de TeamsJS, en particulier pour les applications Teams susceptibles de fonctionner dans d'autres hôtes (Outlook et Office), est qu'il est possible de vérifier que l'hôte prend en charge la fonctionnalité que vous tentez d'utiliser. Pour vérifier la prise en charge d’une fonctionnalité par un hôte, vous pouvez utiliser la isSupported() fonction associée à l’espace de noms de l’API. Le SDK TeamsJS organise les API en capacités au moyen d'espaces de noms. Par exemple, avant l'utilisation d'une API dans pagesl'espace de noms, vous pouvez vérifier la valeur booléenne renvoyéepages.isSupported() et prendre les mesures appropriées dans le contexte de votre application et de son interface utilisateur.
Pour plus d’informations sur les fonctionnalités et les API dans TeamsJS, consultez Création d’onglets et d’autres expériences hébergées avec le Kit de développement logiciel (SDK) client JavaScript Microsoft Teams.
Navigation dans votre application
Il est possible de naviguer dans une application à l’aide de TeamsJS. Le code suivant montre comment accéder à une entité spécifique dans votre application Teams.
Vous pouvez déclencher une navigation à partir de votre onglet à l’aide de la fonction pages.navigateToApp(), comme indiqué dans le code suivant :
if (pages.isSupported()) {
const navPromise = pages.navigateToApp({ appId: <appId>, pageId: <pageId>, webUrl: <webUrl>, subPageId: <subPageId>, channelId:<channelId>});
navPromise.
then((result) => {/*Successful navigation*/}).
catch((error) => {/*Failed navigation*/});
}
else { /* handle case where capability isn't supported */ }
Pour plus d’informations sur l’utilisation de la fonctionnalité pages, consultez pages.navigateToApp() et l’espace de noms pages pour d’autres options de navigation. Si nécessaire, il est également possible d’ouvrir directement un lien profond à l’aide de la fonction app.openLink().
Ouvrir une boîte de dialogue
Notes
Pour ouvrir la boîte de dialogue de planification dans Teams, les développeurs doivent continuer d’utiliser la méthode basée sur l’URL de lien profond d’origine, car Teams ne prend pas encore en charge la fonctionnalité de calendrier.
Pour plus d'informations sur l'utilisation du calendrier, voir l'espace de noms du calendrier dans la documentation de référence de l'API.
// Open a scheduling dialog from your tab
if(calendar.isSupported()) {
const calendarPromise = calendar.composeMeeting({
attendees: ["joe@contoso.com", "bob@contoso.com"],
content: "test content",
endTime: "2018-10-24T10:30:00-07:00",
startTime: "2018-10-24T10:00:00-07:00",
subject: "test subject"});
calendarPromise.
then((result) => {/*Successful operation*/}).
catch((error) => {/*Unsuccessful operation*/});
}
else { /* handle case where capability isn't supported */ }
Vous pouvez également créer manuellement des liens profonds vers la boîte de dialogue de planification intégrée de Teams.
Générer un lien ciblé vers la boîte de dialogue de planification
Bien qu’il soit recommandé d’utiliser les API typées de TeamsJS, il est possible de créer manuellement des liens profonds vers la boîte de dialogue de planification intégrée Teams. Utilisez le format suivant pour un lien ciblé que vous pouvez utiliser dans un bot, un connecteur ou une carte d’extension de message : https://teams.microsoft.com/l/meeting/new?subject=<meeting subject>&startTime=<date>&endTime=<date>&content=<content>&attendees=<user1>,<user2>,<user3>,...
Exemple : https://teams.microsoft.com/l/meeting/new?subject=test%20subject&attendees=joe@contoso.com,bob@contoso.com&startTime=10%2F24%2F2018%2010%3A30%3A00&endTime=10%2F24%2F2018%2010%3A30%3A00&content=test%3Acontent
Notes
Les paramètres de recherche ne prennent pas en charge+ le signal à la place de l’espace blanc (``). Vérifiez que votre code d’encodage d’URI retourne %20for spaces, par exemple, ?subject=test%20subject est correct, mais ?subject=test+subject est incorrect.
Les paramètres de requête sont les suivants :
attendees: liste facultative d’ID utilisateur séparés par des virgules représentant les participants de la réunion. L’utilisateur qui effectue l’action est l’organisateur de la réunion. Actuellement, le champ ID utilisateur ne prend en charge que le UserPrincipalName d'Azure AD, généralement une adresse électronique.startTime: heure de début facultative de l’événement. Il doit être au format ISO 8601 long, par exemple 2018-03-12T23:55:25+02:00.endTime: heure de fin facultative de l’événement, également au format ISO 8601.subject: champ facultatif pour l’objet de la réunion.content: champ facultatif pour le champ détails de la réunion.
Notes
Actuellement, la spécification de l'emplacement n'est pas prise en charge. Vous devez spécifier le décalage UTC, c'est-à-dire les fuseaux horaires lors de la génération de vos heures de début et de fin.
Pour utiliser ce lien profond avec votre bot, vous pouvez le spécifier comme cible d’URL dans le bouton de votre carte ou appuyer sur l’action via le type openUrlaction.
Ouvrir une boîte de dialogue d’installation d’application
Vous pouvez ouvrir une boîte de dialogue d'installation d'application à partir de votre application Teams, comme le montre le code suivant.
// Open an app install dialog from your tab
if(appInstallDialog.isSupported()) {
const dialogPromise = appInstallDialog.openAppInstallDialog({ appId: <appId>});
dialogPromise.
then((result) => {/*Successful operation*/}).
catch((error) => {/*Unsuccessful operation*/});
}
else { /* handle case where capability isn't supported */ }
Pour plus d’informations sur la boîte de dialogue d’installation, consultez la fonction appInstallDialog.openAppInstallDialog() dans la documentation de référence de l’API.
Accéder à une conversation
Vous pouvez naviguer ou créer des chats privés entre utilisateurs avec TeamsJS en spécifiant l'ensemble des participants. Si une conversation n'existe pas avec les participants spécifiés, l'utilisateur est dirigé vers une nouvelle conversation vide. Les nouvelles conversations sont créées dans un état brouillon jusqu’à ce que l’utilisateur envoie le premier message. Sinon, vous pouvez spécifier le nom de la conversation si elle n’existe pas déjà, ainsi que le texte qui doit être inséré dans la zone de composition de l’utilisateur. Vous pouvez considérer cette fonctionnalité comme un raccourci permettant à l’utilisateur d’effectuer l’action manuelle d’accéder à la conversation ou de la créer, puis de taper le message.
Par exemple, si vous renvoyez un profil utilisateur Office 365 à partir de votre bot sous forme de carte, ce lien profond peut permettre à l’utilisateur de discuter facilement avec cette personne. L’exemple suivant montre comment ouvrir un message de conversation à un groupe de participants avec un message initial.
if(chat.isSupported()) {
const chatPromise = chat.openGroupChat({ users: ["joe@contoso.com","bob@contoso.com"], topic: "Prep For Meeting Tomorrow", message: "Hi folks kicking off chat about our meeting tomorrow"});
chatPromise.
then((result) => {/*Successful operation*/}).
catch((error) => {/*Unsuccessful operation*/});
}
else { /* handle case where capability isn't supported */ }
Bien que l’utilisation des API typées soit recommandée, vous pouvez également utiliser le format suivant pour un lien profond créé manuellement que vous pouvez utiliser dans un bot, un connecteur ou une carte d’extension de message :
https://teams.microsoft.com/l/chat/0/0?users=<user1>,<user2>,...&topicName=<chat name>&message=<precanned text>
Exemple : https://teams.microsoft.com/l/chat/0/0?users=joe@contoso.com,bob@contoso.com&topicName=Prep%20For%20Meeting%20Tomorrow&message=Hi%20folks%2C%20kicking%20off%20a%20chat%20about%20our%20meeting%20tomorrow
Les paramètres de requête sont les suivants :
users: liste séparée par des virgules des ID d’utilisateur représentant les participants de la conversation. L’utilisateur qui effectue l’action est toujours inclus en tant que participant. Actuellement, le champ ID d’utilisateur prend en charge Microsoft Azure Active Directory Domain Services (Azure AD) UserPrincipalName, telle qu’une adresse e-mail uniquement.topicName: champ facultatif pour le nom d’affichage de la conversation, si une conversation a au moins trois utilisateurs. Si ce champ n’est pas spécifié, le nom complet de la conversation est basé sur les noms des participants.message: champ facultatif pour le texte du message que vous souhaitez insérer dans la zone de composition de l’utilisateur actuel lorsque la conversation est dans un état brouillon.
Pour utiliser ce lien profond avec votre bot, spécifiez-le comme cible d’URL dans le bouton de votre carte ou appuyez sur l’action via le type openUrlaction.
Générer des liens profonds vers la conversation du canal
Utilisez ce format de lien profond pour accéder à une conversation particulière dans le thread du canal :
https://teams.microsoft.com/l/message/<channelId>/<parentMessageId>?tenantId=<tenantId>&groupId=<groupId>&parentMessageId=<parentMessageId>&teamName=<teamName>&channelName=<channelName>&createdTime=<createdTime>
Exemple : https://teams.microsoft.com/l/message/<channelId>/1648741500652?tenantId=<tenantId>&groupId=<groupId>&parentMessageId=1648741500652&teamName=<teamName>&channelName=<channelName>&createdTime=1648741500652
Les paramètres de requête sont les suivants :
channelId: ID du canal de la conversation. Par exemple :19:3997a8734ee5432bb9cdedb7c432ae7d@thread.tacv2.tenantId: ID de client tel que0d9b645f-597b-41f0-a2a3-ef103fbd91bb.groupId: ID de groupe du fichier. Par exemple :3606f714-ec2e-41b3-9ad1-6afb331bd35d.parentMessageId: ID de message parent de la conversation.teamName: nom de l’équipe.channelName: nom du canal de l’équipe.
Notes
Vous pouvez voir channelIdand groupId dans l’URL du canal.
Générer des liens profonds vers un fichier dans le canal
Le format de lien profond suivant peut être utilisé dans un bot, un connecteur ou une carte d’extension de message :
https://teams.microsoft.com/l/file/<fileId>?tenantId=<tenantId>&fileType=<fileType>&objectURL=<objectURL>&baseUrl=<baseURL>&serviceName=<Name>&threadId=<threadId>&groupId=<groupId>
Les paramètres de requête sont les suivants :
fileId: ID de fichier unique de Sharepoint Online, également appelésourcedoc. Par exemple,1FA202A5-3762-4F10-B550-C04F81F6ACBD.tenantId: ID de client tel que0d9b645f-597b-41f0-a2a3-ef103fbd91bb.fileType: type de fichier pris en charge, tel que docx, pptx, xlsx et pdf.objectUrl: URL de l’objet du fichier. Le format esthttps://{tenantName}.sharepoint.com/sites/{TeamName}/SharedDocuments/{ChannelName}/FileName.ext. Par exemple :https://microsoft.sharepoint.com/teams/(filepath).baseUrl: URL de base du fichier. Le format esthttps://{tenantName}.sharepoint.com/sites/{TeamName}. Par exemple :https://microsoft.sharepoint.com/teams.serviceName: nom du service, ID d’application. Par exemple :teams.threadId: threadId est l’ID d’équipe de l’équipe où le fichier est stocké. Elle est facultative et ne peut pas être définie pour les fichiers stockés dans le dossier OneDrive d’un utilisateur. threadId : 19:f8fbfc4d89e24ef5b3b8692538cebeb7@thread.skype.groupId: ID de groupe du fichier. Par exemple :ae063b79-5315-4ddb-ba70-27328ba6c31e.
Notes
Vous pouvez voir threadIdand groupId dans l’URL du canal.
Le format de lien profond suivant est utilisé dans un bot, un connecteur ou une carte d’extension de message :
https://teams.microsoft.com/l/file/<fileId>?tenantId=<tenantId>&fileType=<fileType>&objectURL=<objectURL>&baseUrl=<baseURL>&serviceName=<Name>&threadId=<threadId>&groupId=<groupId>
L’exemple de format suivant illustre le lien profond vers les fichiers :
https://teams.microsoft.com/l/file/5E0154FC-F2B4-4DA5-8CDA-F096E72C0A80?tenantId=0d9b645f-597b-41f0-a2a3-ef103fbd91bb&fileType=pptx&objectUrl=https%3A%2F%2Fmicrosoft.sharepoint.com%2Fteams%2FActionPlatform%2FShared%20Documents%2FFC7-%20Bot%20and%20Action%20Infra%2FKaizala%20Actions%20in%20Adaptive%20Cards%20-%20Deck.pptx&baseUrl=https%3A%2F%2Fmicrosoft.sharepoint.com%2Fteams%2FActionPlatform&serviceName=teams&threadId=19:f8fbfc4d89e24ef5b3b8692538cebeb7@thread.skype&groupId=ae063b79-5315-4ddb-ba70-27328ba6c31e
Sérialisation de cet objet
{
fileId: "5E0154FC-F2B4-4DA5-8CDA-F096E72C0A80",
tenantId: "0d9b645f-597b-41f0-a2a3-ef103fbd91bb",
filetype: = "pptx",
objectUrl: "https://microsoft.sharepoint.com/teams/ActionPlatform/Shared Documents/FC7- Bot and Action Infra/Kaizala Actions in Adaptive Cards - Deck.pptx",
baseUrl: "https://microsoft.sharepoint.com/teams/ActionPlatform",
serviceName: "teams",
threadId: = "19:f8fbfc4d89e24ef5b3b8692538cebeb7@thread.skype",
groupId: "ae063b79-5315-4ddb-ba70-27328ba6c31e"
}
Liaison profonde à une conversation
Créez un lien profond pour l'application après son inscription dans le magasin Teams. Pour créer un lien pour lancer Teams, ajoutez l’ID d’application à l’URL suivante : https://teams.microsoft.com/l/app/<your-app-id>. Une boîte de dialogue s’affiche pour installer l’application.
Liaison approfondie pour les onglets SharePoint Framework
Le format de lien profond suivant peut être utilisé dans un bot, un connecteur ou une carte d’extension de message : https://teams.microsoft.com/l/entity/<AppId>/<EntityId>?webUrl=<entityWebUrl>/<EntityName>
Notes
Lorsqu’un bot envoie un message TextBlock avec un lien ciblé, un nouvel onglet de navigateur s’ouvre lorsque les utilisateurs sélectionnent le lien. Cela se produit dans Chrome et l’application de bureau Microsoft Teams s’exécutant sur Linux.
Si le bot envoie la même URL de lien profond dans un Action.OpenUrl, l’onglet Teams s’ouvre dans le navigateur actuel lorsque l’utilisateur sélectionne le lien. Aucun nouvel onglet de navigateur n’est ouvert.
Les paramètres de requête sont les suivants :
appID: votre ID de manifeste, par exemplefe4a8eba-2a31-4737-8e33-e5fae6fee194.entityID: ID d’élément que vous avez fourni lors de la configuration de l’onglet. Par exemple,tasklist123.entityWebUrl: champ facultatif avec une URL de secours à utiliser si le client ne prend pas en charge le rendu de l’onglet –https://tasklist.example.com/123ouhttps://tasklist.example.com/list123/task456.entityName: étiquette de l’élément dans votre onglet, à utiliser lors de l’affichage du lien profond, Liste des tâches 123 ou la tâche 456.
Exemple : https://teams.microsoft.com/l/entity/fe4a8eba-2a31-4737-8e33-e5fae6fee194/tasklist123?webUrl=https://tasklist.example.com/123&TaskList
Lien profond à un appel audio ou audio-vidéo
Vous pouvez lancer des appels audio uniquement ou audio-vidéo à un seul utilisateur ou à un groupe d'utilisateurs, en spécifiant le type d'appel et les participants. Avant de passer l'appel, le client Teams demande une confirmation pour effectuer l'appel. En cas d’appel de groupe, vous pouvez appeler un ensemble d’utilisateurs VoIP et un ensemble d’utilisateurs RTC dans le même appel de lien profond.
Dans un appel vidéo, le client demande une confirmation et active la vidéo de l’appelant pour l’appel. Le destinataire de l’appel a le choix entre répondre par audio uniquement ou audio et vidéo, via la fenêtre de notification d’appel Teams.
Notes
Cette méthode ne peut pas être utilisée pour appeler une réunion.
Le code suivant illustre l’utilisation du Kit de développement logiciel (SDK) TeamsJS pour démarrer un appel :
if(call.isSupported()) {
const callPromise = call.startCall({ targets: ["joe@contoso.com","bob@contoso.com","4:9876543210"], requestedModalities: [call.CallModalities.Audio], source: "demoApp"});
callPromise.
then((result) => {/*Successful operation*/}).
catch((error) => {/*Unsuccessful operation*/});
}
else { /* handle case where capability isn't supported */ }
Générer un lien profond vers un appel
Bien que l’utilisation des API typées de TeamsJS soit recommandée, vous pouvez également utiliser un lien profond créé manuellement pour démarrer un appel.
| Lien profond | Format | Exemple |
|---|---|---|
| Passer un appel audio | https://teams.microsoft.com/l/call/0/0?users=<user1>,<user2> |
https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com |
| Effectuer des appels audio et vidéo | https://teams.microsoft.com/l/call/0/0?users=<user1>,<user2>&withVideo=true |
https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com&withVideo=true |
| Passer un appel audio et vidéo avec une source de paramètre facultative | https://teams.microsoft.com/l/call/0/0?users=<user1>,<user2>&withVideo=true&source=demoApp |
https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com&withVideo=true&source=demoApp |
| Effectuer un appel audio et vidéo à une combinaison d’utilisateurs VoIP et RTC | https://teams.microsoft.com/l/call/0/0?users=<user1>,4:<phonenumber> |
https://teams.microsoft.com/l/call/0/0?users=joe@contoso.com,4:9876543210 |
Voici les paramètres de requête :
users: liste séparée par des virgules des ID d’utilisateur représentant les participants de l’appel. Actuellement, le champ ID d’utilisateur prend en charge le UserPrincipalName Azure AD, généralement une adresse e-mail, ou lors d’un appel RTC, il prend en charge un RTC mri 4 :<numéro de téléphone>.withVideo: il s’agit d’un paramètre facultatif que vous pouvez utiliser pour effectuer un appel vidéo. La définition de ce paramètre active uniquement la caméra de l’appelant. Le destinataire de l’appel peut répondre par le biais d’un appel audio ou audio et vidéo via la fenêtre de notification d’appel Teams.Source: il s’agit d’un paramètre facultatif, qui informe sur la source du lien profond.
Exemple de code
| Exemple de nom | Description | C# | Node.js |
|---|---|---|---|
| ID de sous-entité consommateur de liens profonds | Exemple d'application Teams pour la démonstration d'un lien profond entre une conversation bot et un onglet consommant un ID de sous-entité. | View | View |