Partage via


Lien profond vers un flux de travail dans Teams

Vous pouvez créer un lien profond pour effectuer une tâche spécifique dans Teams, par exemple pour créer une conversation, ouvrir une boîte de dialogue de planification et accéder à l’appel audio-vidéo.

Dans cet article, vous allez apprendre à créer un lien profond :

Les applications peuvent démarrer une nouvelle conversation avec une liste d’utilisateurs et fournir des informations supplémentaires telles que le nom de la conversation et le brouillon de message en utilisant le format suivant :

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. Le champ ID utilisateur prend en charge le Microsoft Entra UserPrincipalName, par exemple 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 lien profond comme cible d’URL dans le bouton de votre carte ou appuyez sur action via le openUrl type d’action. Les applications peuvent également utiliser la bibliothèque de client JavaScript Teams (TeamsJS) v.2.0 ou ultérieure pour créer ce fichier sans avoir à préparer manuellement le lien profond. L’exemple suivant utilise TeamsJS pour case activée si la fonctionnalité de conversation est prise en charge :

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 */ }

Remarque

Si une conversation existe déjà, un lien profond s’ouvre dans cette conversation.

Vous pouvez créer un lien profond dans vos applications Teams pour ouvrir une boîte de dialogue de planification de réunion et fournir des informations, telles que le titre de la réunion et les participants à l’aide des méthodes suivantes :

Bien que nous vous recommandons d’utiliser des 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 configurer un lien profond que vous pouvez utiliser dans un bot, un connecteur ou une extension de message carte :

https://teams.microsoft.com/l/meeting/new?subject=<meeting subject>&startTime=<date>&endTime=<date>&content=<content>&attendees=<user1>,<user2>,<user3>,...

Remarque

Les paramètres de recherche ne prennent pas en charge+ le signal à la place de l’espace blanc (``). Vérifiez que le code d’encodage de votre URI retourne %20 pour les espaces. Par exemple, ?subject=test%20subject est bon, mais ?subject=test+subject est mauvais.

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 à la réunion. L’utilisateur qui effectue l’action est l’organisateur de la réunion. Le champ ID utilisateur prend uniquement en charge le Microsoft Entra UserPrincipalName, généralement une adresse e-mail.
  • startTime: paramètre facultatif pour l’heure de début de l’événement. L’heure de début doit être au format ISO 8601 long, par exemple 2018-03-12T23:55:25+02:00.
  • endTime: paramètre facultatif pour l’heure de fin de l’événement, également au format ISO 8601.
  • subject: paramètre facultatif pour le sujet de la réunion.
  • content: paramètre facultatif pour le champ détails de la réunion.

Remarque

Vous ne pouvez pas spécifier l’emplacement, car il n’est pas pris en charge. Vous devez spécifier le décalage UTC, qui inclut les fuseaux horaires, lors de la génération des heures de début et de fin.

Pour utiliser ce lien profond avec votre bot, vous pouvez spécifier le lien profond en tant que cible d’URL dans le bouton de votre carte ou en tant qu’action d’appui via le openUrl type d’action.

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​​​​​​​​​​​​​​

Vous pouvez également utiliser TeamsJS v.2.0 ou version ultérieure dans votre application Teams pour ouvrir la boîte de dialogue de planification des réunions sans avoir à préparer manuellement le lien. Pour ouvrir la boîte de dialogue de planification dans Teams, vous devez continuer à 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 :

// 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 */ }

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.

Vous pouvez configurer vos applications Teams pour préparer un lien profond permettant aux utilisateurs de démarrer un appel en personne, un appel de groupe ou un appel vidéo. Vous pouvez appeler 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 que Teams passe l’appel, le client demande une confirmation. En cas d’appel de groupe, vous pouvez appeler un ensemble d’utilisateurs VoIP et RTC dans le même appel de lien profond.

Dans un appel vidéo, le client Teams demande une confirmation avant d’activer 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.

Remarque

Cette méthode ne peut pas être utilisée pour appeler une réunion.

Vous pouvez configurer des liens profonds de l’une des deux manières suivantes :

Bien que nous vous recommandons d’utiliser les API typées de TeamsJS v.2.0 ou version ultérieure, vous pouvez également utiliser un lien profond configuré manuellement pour démarrer un appel. Reportez-vous aux formats suivants :

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 d’ID utilisateur séparés par des virgules représentant les participants à l’appel. Le champ ID utilisateur prend en charge l’Microsoft Entra UserPrincipalName, généralement une adresse e-mail, ou dans un appel RTC, il prend en charge un MRI RTC 4 :<phonenumber>.
  • withVideo: paramètre facultatif, que vous pouvez utiliser pour passer un appel vidéo. La définition de ce paramètre active uniquement la caméra de l’appelant. Le destinataire de l’appel a le choix de répondre par le biais d’un appel audio ou audio et vidéo via la fenêtre de notification d’appel Teams.

Les applications peuvent également utiliser TeamsJS v.2.0 ou version ultérieure pour démarrer des appels sans avoir à préparer manuellement ces liens profonds. Le code suivant illustre l’utilisation de 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 */ }

Pour ajouter un lien profond afin de partager du contenu sur scène, vous devez disposer d’un contexte d’application. Le contexte de l’application permet au client Teams d’extraire le manifeste de l’application et de case activée si le partage sur scène est possible. Voici un exemple de contexte d’application :

{ "appSharingUrl" : "https://teams.microsoft.com/extensibility-apps/meetingapis/view", "appId": "9ec80a73-1d41-4bcb-8190-4b9eA9e29fbb" , "useMeetNow": false }

Les paramètres de requête pour le contexte de l’application sont les suivants :

  • appID: il s’agit de l’ID qui peut être obtenu à partir du manifeste de l’application.
  • appSharingUrl: l’URL, qui doit être partagée sur scène, doit être un domaine valide défini dans le manifeste de l’application. Si l’URL n’est pas un domaine valide, une boîte de dialogue d’erreur s’affiche pour fournir à l’utilisateur une description de l’erreur.
  • useMeetNow: cela inclut un paramètre booléen qui peut être true ou false.
    • True : lorsque la useMeetNow valeur est true et s’il n’y a pas de réunion en cours, une nouvelle réunion Meet now est lancée. En cas de réunion en cours, cette valeur est ignorée.

    • False : la valeur par défaut de useMeetNow est false, ce qui signifie que lorsqu’un lien profond est partagé vers la phase et qu’il n’y a pas de réunion en cours, une fenêtre contextuelle de calendrier s’affiche. Toutefois, vous pouvez partager directement au cours d’une réunion.

Vérifiez que tous les paramètres de requête sont correctement codés uri et que le contexte de l’application doit être codé deux fois dans l’URL finale. Voici un exemple :

const appContext= JSON.stringify({ 
  "appSharingUrl" : "https://teams.microsoft.com/extensibility-apps/meetingapis/view",
  "appId": "9cc80a93-1d41-4bcb-8170-4b9ec9e29fbb",
  "useMeetNow": false
});
const encodedContext = encodeURIComponent(appContext).replace(/'/g,"%27").replace(/"/g,"%22");
const encodedAppContext = encodeURIComponent(encodedContext).replace(/'/g,"%27").replace(/"/g,"%22");

Un lien profond peut être lancé à partir du web Teams ou à partir du client de bureau ou mobile Teams.

Utilisez le format suivant pour lancer un lien profond à partir du web Teams afin de partager du contenu sur scène :

msteams:/l/meeting-share?deeplinkId={GUID}&fqdn={string}&lm=deeplink&appContext={json encoded app context}

Exemple : https://teams.microsoft.com/l/meeting-share?deeplinkId={sampleid}&fqdn=teams.microsoft.com&lm=deeplink%22&appContext=%257B%2522appSharingUrl%2522%253A%2522https%253A%252F%252Fteams.microsoft.com%252Fextensibility-apps%252Fmeetingapis%252Fview%2522%252C%2522appId%2522%253A%25229cc80a93-1d41-4bcb-8170-4b9ec9e29fbb%2522%252C%2522useMeetNow%2522%253Atrue%257D

Lien profond Format Exemple
Pour partager l’application et ouvrir le calendrier Teams, lorsque useMeeetNow a la valeur false, valeur par défaut. https://teams.microsoft.com/l/meeting-share?deeplinkId={deeplinkid}&fqdn={fqdn}}&lm=deeplink%22&appContext={encoded app context} https://teams.microsoft.com/l/meeting-share?deeplinkId={sampleid}&fqdn=teams.microsoft.com&lm=deeplink%22&appContext=%257B%2522appSharingUrl%2522%253A%2522https%253A%252F%252Fteams.microsoft.com%252Fextensibility-apps%252Fmeetingapis%252Fview%2522%252C%2522appId%2522%253A%25229cc80a93-1d41-4bcb-8170-4b9ec9e29fbb%2522%252C%2522useMeetNow%2522%253Afalse%257D
Pour partager l’application et lancer une réunion instantanée, quand useMeeetNow a la valeur true. https://teams.microsoft.com/l/meeting-share?deeplinkId={deeplinkid}&fqdn={fqdn}}&lm=deeplink%22&appContext={encoded app context} https://teams.microsoft.com/l/meeting-share?deeplinkId={sampleid}&fqdn=teams.microsoft.com&lm=deeplink%22&appContext=%257B%2522appSharingUrl%2522%253A%2522https%253A%252F%252Fteams.microsoft.com%252Fextensibility-apps%252Fmeetingapis%252Fview%2522%252C%2522appId%2522%253A%25229cc80a93-1d41-4bcb-8170-4b9ec9e29fbb%2522%252C%2522useMeetNow%2522%253Atrue%257D

Les paramètres de requête sont les suivants :

  • deepLinkId: identificateur utilisé pour la corrélation de télémétrie.
  • fqdn: fqdn est un paramètre facultatif, qui peut être utilisé pour basculer vers un environnement approprié d’une réunion afin de partager une application sur scène. Il prend en charge les scénarios où un partage d’application spécifique se produit dans un environnement particulier. La valeur par défaut de est l’URL d’entreprise fqdn et les valeurs possibles sont Teams.live.com pour Teams for Life, teams.microsoft.comou teams.microsoft.us.

Remarque

Pour que votre application réussisse la validation, lorsque vous créez un lien profond à partir de votre site web, application web ou carte adaptative, utilisez Partager en réunion comme chaîne ou copie.

Vous pouvez générer un lien profond pour partager l’application à l’étape et pour démarrer ou rejoindre une réunion.

Vous pouvez générer un lien profond vers le panneau latéral de la réunion dans une réunion. Utilisez le format suivant pour obtenir un lien profond vers le panneau latéral de la réunion :

https://teams.microsoft.com/l/entity/<appId>/<entityId>?webUrl=<entityWebUrl>&label=<entityLabel>&context=<context>.

Exemple :

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"}

Par défaut, un lien profond s’ouvre dans le panneau latéral d’une réunion. Pour ouvrir un lien profond directement dans une application plutôt que dans le panneau latéral de la réunion, ajoutez openInMeeting=false le format de lien profond :

https://teams.microsoft.com/l/entity/<appId>/<entityId>?webUrl=<entityWebUrl>&label=<entityLabel>&context=<context>&openInMeeting=false

Pour plus d’informations, consultez lien profond vers un onglet.

Le lien profond ne s’ouvre pas dans le panneau latéral de la réunion dans les scénarios suivants :

  • Il n’y a pas de réunion active.
  • L’application n’a sidePanel pas de contexte déclaré dans le manifeste de l’application.
  • openInMeeting est défini sur false dans le lien profond.
  • Le lien profond est sélectionné en dehors de la fenêtre ou du composant de réunion.
  • Le lien profond ne correspond pas à la réunion actuelle, comme un lien profond créé dans une autre réunion.

L’application Teams peut lire l’URL pour rejoindre une URL de réunion via les API Graph. Ce lien profond affiche l’interface utilisateur permettant à l’utilisateur de rejoindre la réunion. Pour plus d’informations, consultez Obtenir onlineMeeting et obtenir les détails de la réunion.

Exemple de code

Exemple de nom Description .NET Node.js
ID de sous-entité consommatrice de lien profond Cet exemple montre comment utiliser un lien profond à partir d’une conversation de bot vers un onglet utilisant l’ID de sous-entité. Il affiche également des liens profonds pour :
- Navigation vers une application
- Navigation vers une conversation
- Ouvrir une boîte de dialogue de profil
- Ouvrir une boîte de dialogue de planification
View View