---
title: "Microsoft Teams"
description: "Connectez un bot Microsoft Teams pour démarrer et poursuivre des sessions Beeuni dans les discussions et les canaux."
---

Microsoft Teams est un canal : une `@`-mention dans une conversation ou un canal Teams démarre une [session](/docs/fr/work/sessions), et l’agent répond au même endroit avec une progression en temps réel. Les mêmes règles de session, d’identité et d’identifiants que pour [Slack](/docs/fr/connect/slack) s’appliquent ; cette page explique ce qui est propre à Teams.

Chaque projet peut connecter Teams. Aucun indicateur de fonctionnalité n’est à activer.

<a id="connect"></a>

## Connexion

Deux méthodes, toutes deux accessibles depuis la page **Connecteurs → Canaux** du projet :

- **En un clic (géré).** Un **administrateur du tenant** Teams clique sur **Ajouter à Teams**, se connecte et donne son consentement. Beeuni publie automatiquement l’application dans le catalogue Teams de votre organisation : rien à créer ni à coller. La ligne propose ensuite **Ajouter à Teams** (un lien profond vers le client Teams), afin que chacun puisse ajouter le bot à une conversation ou à un canal. Lorsque Beeuni publie une nouvelle version de l’application, consultez [Mettre à jour l’application](#update-the-app).
- **Utiliser votre propre bot.** Cliquez sur **Utiliser votre propre application Microsoft Teams** pour ouvrir un assistant en trois étapes : inscrire un Azure Bot, le connecter à Beeuni avec son identifiant d’application, son secret client et son identifiant de tenant, puis télécharger le package d’application généré et le téléverser dans Teams. Choisissez cette méthode si vous gérez vous-même l’inscription du bot.

  L’ordre est important. Beeuni crée le manifeste à partir de **votre** identifiant d’application et ne peut donc générer le package qu’après l’étape 2. L’assistant vous indique le point de terminaison de messagerie à coller dans Azure avant de vous demander quoi que ce soit d’autre.

L’interface en ligne de commande fonctionne comme le tableau de bord :

```bash
beeuni channels connect --platform teams      # prints the admin-consent URL
beeuni channels status --platform teams        # tenant, catalog, publish state, app version
beeuni channels disconnect --platform teams
```

<a id="update-the-app"></a>

## Mettre à jour l’application

Beeuni ajoute progressivement des autorisations à son application Teams. La version 1.1.0 a ajouté `ChannelMessage.Read.Group`, dont l’agent a besoin pour lire une conversation dans un canal.
La version 1.3.0 a ajouté `ChatMessage.Read.Chat`, afin qu’une réponse dans une conversation de groupe poursuive une session sans mention. Une équipe qui utilise encore la version 1.0.0 ne peut lire aucune conversation, et le refus reçu par l’agent indique qui peut résoudre le problème.

Deux personnes mettent à jour l’application, dans cet ordre :

1. **Un administrateur Teams publie la mise à jour.** Lorsque le catalogue de votre organisation contient une ancienne version, la page Canaux affiche **Mettre à jour l’application Beeuni dans Teams**, et le bouton de la ligne Teams indique **Publier la mise à jour de l’application**. L’administrateur clique dessus et se connecte à Microsoft. `beeuni channels status --platform teams` affiche les deux versions, et `beeuni channels connect --platform teams` affiche le lien de connexion.
2. **Un propriétaire d’équipe met à jour l’application dans chaque équipe où Teams le propose.** Dans Teams, ouvrez l’équipe, puis **⋯ → Gérer l’équipe → Applications**, sélectionnez **Mettre à jour** sur l’application Beeuni et acceptez. Teams installe automatiquement une mise à jour, sauf si elle ajoute une autorisation ou une action de message ; dans ces cas, l’intervention d’un propriétaire d’équipe est nécessaire.

Beeuni enregistre la version de l’application à chaque publication. Une installation publiée avant que Beeuni commence à enregistrer les versions affiche l’avis jusqu’à sa prochaine publication.

<a id="chats-channels-and-mentions"></a>

## Conversations, canaux et mentions

- **Conversation personnelle :** tous les messages parviennent au bot.
- **Canal d’équipe / conversation de groupe :** une nouvelle publication nécessite une `@`-mention. Ensuite, une réponse dans une conversation déjà prise en charge par le bot poursuit la session **sans** mention, comme dans un fil Slack. Cela nécessite les autorisations `ChannelMessage.Read.Group` (canaux) et `ChatMessage.Read.Chat` (conversations de groupe) de l’application, auxquelles l’administrateur du tenant consent lors de l’ajout de l’application. Si l’application a été ajoutée avant que ces autorisations soient demandées, un propriétaire d’équipe doit la mettre à jour : consultez [Mettre à jour l’application](#update-the-app).

Chaque conversation ou canal constitue une session distincte. Le premier message la crée ; les messages suivants la poursuivent, même après l’arrêt et le redémarrage du bac à sable. Si un tenant est connecté à plusieurs projets, un **sélecteur de projet** s’affiche au premier message sans projet associé et mémorise le choix. Dans un canal, seul un message qui mentionne le bot affiche le sélecteur ; une commande concernant le projet, telle que `/models`, demande d’abord quel projet choisir.

Dans un canal, chaque nouvelle publication démarre sa propre session. Une conversation personnelle ou de groupe reste une seule conversation pendant toute son existence : elle conserve donc une session jusqu’à l’envoi de `/new`. Ajoutez un message après celui-ci (`/new summarize today's deploys`) pour démarrer la nouvelle session avec ce message. La session précédente reste dans Beeuni, avec son historique complet, et le lien de confirmation y mène.

<a id="conversation-names"></a>

## Noms des conversations

Teams envoie des identifiants comme `19:…@thread.tacv2;messageid=…`. La page Canaux et `beeuni channels bindings` affichent les noms visibles par les utilisateurs dans Teams :

| Conversation | Nom | Sous le nom |
|---|---|---|
| Publication dans un canal | `Team › Channel` | Le titre de sa session, qui permet de distinguer deux publications dans un même canal |
| Conversation de groupe | Le titre de la conversation | Conversation de groupe |
| Conversation personnelle | La personne | Conversation personnelle |

Un message dans un canal contient l’identifiant de l’équipe, mais pas son nom ; Beeuni récupère donc les noms de l’équipe et du canal dans Teams et les enregistre. Une publication dans le canal Général d’une équipe est nommée la prochaine fois que la page Canaux l’affiche. Une publication dans un autre canal est nommée lors de son prochain message. En attendant, son nom est **Fil de canal**.

<a id="who-may-join-a-session"></a>

## Qui peut rejoindre une session

Chaque conversation a une règle d’accès, définie avec `/policy` dans Teams ou sur la page Canaux, où **N canaux** sur la ligne Teams répertorie toutes les conversations :

- **open** (par défaut) — tout membre du projet associé peut rejoindre une session démarrée ici.
- **approval** — le propriétaire de la session reçoit une carte Approuver / Refuser pour chaque nouvelle personne.
- **owner** — seule la personne qui a démarré la session peut la rejoindre.

Avec les modes **approval** et **owner**, la session n’est pas non plus visible par l’ensemble du projet dans Beeuni : seul son propriétaire, les personnes autorisées à la rejoindre et les administrateurs du compte chargés de superviser les sessions peuvent la voir. Une décision prise sur une carte de vérification ou d’approbation reprend l’agent, quel que soit le mode.

<a id="identity-linking"></a>

## Association d’identité

L’expéditeur associe une fois son compte Beeuni avec `/login` ; l’agent s’exécute alors en son nom, avec ses propres identifiants, secrets et applications connectées. Un expéditeur dont le compte n’est pas associé, ou qui n’a pas accès au projet, reçoit une carte pour se connecter ou demander l’accès au lieu d’une session.

Le lien de connexion ne s’affiche que là où vous seul pouvez le voir : dans votre conversation individuelle avec le bot ou, dans un canal ou une conversation de groupe, dans une réponse portant la mention **Seul vous pouvez voir ce message**. Le lien associe la personne pour laquelle il a été généré à la personne qui l’ouvre ; il n’apparaît donc jamais à un endroit visible par d’autres. Si Teams refuse cette réponse privée, le bot envoie le lien dans votre conversation privée avec lui et l’indique dans la conversation. Teams ne l’autorise que si vous avez ajouté l’application pour vous-même ; sinon, la carte vous demande d’ouvrir une conversation privée avec le bot et d’y envoyer `/login`. Un message envoyé dans le canal alors que votre compte n’était pas associé est traité une fois la connexion effectuée, si vous le faites dans les 10 minutes. Lorsque vous avez terminé la connexion dans le navigateur, votre conversation privée avec le bot confirme le compte Beeuni auquel vous êtes associé.

Un lien de connexion ne fonctionne qu’une fois et expire au bout de 10 minutes. Un compte Teams associé à un compte Beeuni ne peut pas être associé à un autre : envoyez d’abord `/logout`. Si votre organisation exige l’authentification à deux facteurs, Beeuni vous demande le second facteur avant de vous connecter, et la conversation s’exécute avec le facteur utilisé lors de la connexion. Un lien créé sans ce facteur vous demandera de vous reconnecter.

Lorsqu'une personne sans accès en fait la demande, chaque propriétaire de compte et chaque administrateur reçoit la demande dans Beeuni. Les personnes qui ont lié Teams la reçoivent également dans leur conversation privée avec le bot, avec un bouton **Review in Beeuni**.

<a id="private-replies"></a>

## Réponses privées

Dans un canal ou une conversation de groupe, ce que le bot dit à une personne n'est visible que par celle-ci, avec la mention **Only you can see this message**, comme les messages éphémères de Slack :

- les réponses à vos commandes ;
- la carte permettant de connecter votre compte ou de demander l'accès ;
- la raison pour laquelle votre message n'a pas été exécuté : la règle d'accès ou un agent que vous ne pouvez pas utiliser ;
- sous **approval**, la carte Approve / Deny du propriétaire, ainsi que sa décision communiquée à la personne qui a fait la demande.

La carte **Working on it…** visible par tout le monde ne s'affiche que lorsque votre message peut être exécuté. Teams supprime une réponse privée après 24 heures. Si Teams refuse une réponse privée, le bot publie la carte dans toute la conversation. Le lien de connexion est l'exception : il est alors envoyé dans votre conversation privée avec le bot, jamais dans la conversation.

<a id="roles-and-permissions"></a>

## Rôles et autorisations

Une conversation ne possède pas ses propres identifiants Beeuni : chaque action est donc exécutée avec le compte Beeuni lié de la personne qui l'a effectuée, et avec le rôle de projet de ce compte. Les propriétaires de compte et les administrateurs sont considérés comme des responsables de projet.

| Action | Qui peut l'effectuer |
| --- | --- |
| Envoyer un message auquel l'agent répond | Un compte lié ayant accès au projet, dans le respect de la règle d'accès de la conversation |
| Arrêter une exécution | La personne qui a envoyé le message auquel l'agent répond, ou toute personne autorisée à accéder à cette session et pouvant toujours utiliser le projet |
| `/new` dans une conversation de groupe | Un membre du projet ayant lié son compte ; sous `approval` ou `owner`, une personne autorisée à accéder à la session en cours |
| Modifier le projet, l'agent, le modèle ou la règle | Un responsable de projet ; dans une conversation privée avec le bot, tout membre du projet |
| Approuver ou refuser une demande de révision | Un responsable de projet |
| Approuver ou refuser l'appel d'un connecteur | Un responsable de projet ou la personne qui a démarré la session |
| Autoriser une personne à accéder à une session `approval` | Le propriétaire de la session |
| Demander l'accès | Toute personne ayant lié son compte ; chaque propriétaire de compte et administrateur est averti une fois |

Comme dans Beeuni, une personne à qui l'utilisation d'un agent n'est pas autorisée ne peut pas démarrer de session avec cet agent depuis Teams.

<a id="commands"></a>

## Commandes

Saisissez ces commandes dans une conversation avec le bot (dans un canal, mentionnez-le d'abord avec `@`) :

| Commande | Fonction |
| --- | --- |
| `/help` | Afficher la liste des commandes |
| `/login`, `/logout`, `/whoami` | Lier, dissocier ou afficher votre compte Beeuni |
| `/status` | Afficher le projet, l'agent et le modèle actifs ici, ainsi que l'exécution en cours |
| `/stop` | Arrêter l'exécution en cours ici |
| `/new [message]` | Démarrer une nouvelle session dans cette conversation (conversations privées et de groupe) |
| `/models`, `/model <ref>` | Choisir le modèle pour cette conversation — voir [Modèles et clés](#models-and-keys) |
| `/agents`, `/agent <name>` | Choisir l'agent pour cette conversation |
| `/projects`, `/use <name>` | Afficher les projets connectés ou associer cette conversation à un autre projet (pas sur le bot propre à un projet) |
| `/policy [open\|approval\|owner]` | Définir qui peut rejoindre les sessions démarrées ici |
| `/unbind` | Déconnecter cette conversation de son projet ; le prochain message en sélectionnera un autre |
| `/home` | Afficher les projets de l'organisation et les options à essayer |

Sur n'importe quel message, **⋯ → Open in Beeuni** ouvre la session associée à cette conversation. Lorsque vous ajoutez l'application pour vous-même, votre conversation privée avec le bot commence par le même aperçu que `/home`.

<a id="models-and-keys"></a>

## Modèles et clés

`/models` répertorie tous les modèles que vous pouvez exécuter ici, comme le sélecteur Web : les modèles Beeuni et ceux auxquels vous accédez à l'aide d'une clé API de fournisseur ou d'un abonnement ChatGPT. Le mode de paiement est indiqué pour chacun. Si la liste est longue, elle apparaît dans une liste déroulante avec recherche. Appuyez sur un modèle ou saisissez `/model <id>` ; `/model default` rétablit le modèle par défaut du projet.

Les clés prises en compte dépendent de la conversation :

- **Une conversation privée avec le bot** — vos propres clés et votre abonnement ChatGPT, ainsi que les clés partagées avec le projet. Vous seul avez accès à ses sessions.
- **Une conversation de groupe ou un canal** — uniquement les clés partagées avec l'ensemble du projet. La conversation étant partagée, une clé personnelle permettrait à tout le monde de dépenser l'abonnement d'une personne. Choisissez plutôt un tel modèle dans une conversation privée.

Un modèle qui fonctionne avec des clés utilise toutes les clés que vous pouvez utiliser pour son fournisseur ; elles alternent en cas de limitation de débit. Le choix s'applique au prochain message ; la conversation conserve sa session. Pour changer le modèle d'une session en cours, il faut un compte lié ; avec la règle `owner` ou `approval`, seul le propriétaire de la session peut le modifier. Une conversation privée dont la session a démarré avant que les sessions y deviennent privées partage toujours cette session avec le projet : `/model` le précise, et `/new` en démarre une privée. Voir [Clés de fournisseur et accès des membres](/docs/fr/project/models#provider-keys-and-member-access).

<a id="while-the-agent-works"></a>

## Pendant que l'agent travaille

L'agent répond dans une seule carte : ses étapes pendant qu'il travaille, puis sa réponse. Une réponse longue est tronquée à la fin d'une ligne, indiquée comme telle, et accompagnée d'un lien vers la session complète dans Beeuni. Un autre message attend la fin de l'exécution en cours, puis reçoit sa propre carte. Une étape silencieuse ne clôt pas une exécution ; seule la fin du processus d'exécution le fait.

<a id="stopping-a-run"></a>

## Arrêter une exécution

Pendant que l'agent travaille, sa carte en direct comporte un bouton **Stop**. `/stop` fait de même lorsque la carte n'est plus à portée après avoir défilé. Dans les deux cas, l'exécution est arrêtée au niveau du processus, et pas seulement sur la carte : si elle reste ouverte, le message suivant de la conversation est absorbé au lieu de recevoir une réponse.

La personne qui a envoyé le message auquel l'agent répond peut arrêter l'exécution, tout comme toute personne autorisée à accéder à cette session, tant qu'elle peut toujours utiliser le projet. Un simple observateur du canal ne le peut pas, pas plus qu'une personne autorisée à accéder à une session précédente de la conversation.

<a id="files"></a>

## Fichiers

L'agent envoie des fichiers avec `teams send --file`. Les images s'affichent dans les conversations privées et de groupe, ainsi que dans les canaux. Si une image est trop volumineuse, une carte de consentement OneDrive s'affiche dans une conversation privée ou l'image est envoyée dans les fichiers de l'équipe dans un canal ; une conversation de groupe ne peut pas recevoir de fichier trop volumineux. Les autres fichiers sont transmis sous forme de carte de consentement dans une conversation privée, ou de lien SharePoint lorsqu'ils sont partagés avec une équipe. L'agent peut télécharger et traiter les fichiers entrants et les images collées, y compris celles intégrées au corps d'un message de canal.

- Une image collée dans un canal ou une conversation de groupe n'est téléchargée que si l'agent peut lire le fil ou la conversation, conformément aux règles de [Lecture d'un canal](#reading-a-channel). Sinon, `teams download` répond `403`.
- Le téléchargement s'arrête à 50 MB et répond `413`.
- `teams history` et `teams thread` répertorient les images intégrées à une publication (`images`, chacune étant une URL pour `teams download`) et les noms des fichiers partagés depuis SharePoint (`files`). L'agent ne peut pas télécharger de fichier SharePoint.

Collez une capture d'écran et posez une question à son sujet : le tour utilise un modèle capable de lire les images, même si le modèle de la conversation est uniquement textuel — le modèle choisi pour la session reste inchangé. Si le modèle de la session ne peut plus être exécuté — clé révoquée ou abonnement ChatGPT inutilisable dans cette conversation — il est remplacé pour ce message de la même façon, au lieu de faire échouer celui-ci.

<a id="questions-and-forms"></a>

## Questions et formulaires

L’agent pose des questions au moyen de contrôles, et non de texte libre. Une question avec jusqu’à six options affiche un bouton par option. Plusieurs questions, une question à choix multiples ou une liste plus longue affichent un formulaire avec un champ pour votre propre réponse. Les dates, heures, nombres et choix activé/désactivé utilisent les champs correspondants. Votre réponse parvient à l’agent comme votre prochain message, accompagnée de la question à laquelle elle répond. Vous pouvez toujours saisir une réponse à la place.

<a id="approvals"></a>

## Approbations

Lorsqu’un agent a besoin d’une décision humaine avant de poursuivre — une étape risquée, un changement à faire approuver — il soumet un élément à examiner. Si la session a été lancée depuis cette conversation, la décision s’affiche ici sous forme de carte : le titre, un résumé, un niveau de risque et les options **Approve**, **Request changes** et **Deny**, ainsi qu’un lien vers Beeuni.

La carte comporte un champ de commentaire facultatif. Tout ce que vous saisissez est enregistré avec la décision et transmis à l’agent, ainsi, avec « Request changes », il n’est pas nécessaire de faire un aller-retour supplémentaire pour demander ce que vous vouliez dire. Ce champ est facultatif par conception : une simple approbation ne devrait pas nécessiter de saisie.

Toute personne dans la conversation voit la carte, mais pour agir, il faut un compte Beeuni associé qui a accès au projet.

<a id="posting-on-its-own"></a>

## Publication autonome

En plus de répondre là où on le lui a demandé, l’agent peut publier dans n’importe quelle conversation ou canal où le bot est déjà présent pour ce projet : un récapitulatif nocturne, une alerte, un transfert. Il ne peut pas accéder à une conversation à laquelle il n’a jamais été ajouté.

<a id="when-a-session-will-not-start"></a>

## Lorsqu’une session ne démarre pas

Beeuni explique le problème au lieu de vous demander de réessayer, car la plupart des échecs au démarrage ne se résolvent pas en réessayant : un modèle de bac à sable qui n’existe plus, un compte qui n’est pas associé, un projet auquel vous ne pouvez pas accéder ou un espace de travail à court de crédits. Chaque message indique la solution et la commande correspondante.

Si l’agent défini pour la conversation a été supprimé ou renommé, l’échec se présente sous forme de sélecteur : choisissez un agent actif, puis renvoyez votre message. La liste ne propose que les agents auxquels vous avez accès.

<a id="reading-a-channel"></a>

## Lire un canal

Dans un canal, le bot ne reçoit que les messages qui le mentionnent. La discussion à laquelle il doit répondre ne figure donc pas dans sa session. Lorsqu’il a besoin de ce contexte, l’agent lit le fil de discussion où il a été mentionné ou les publications récentes du canal, grâce à l’autorisation `ChannelMessage.Read.Group` demandée par l’application lorsqu’elle est ajoutée à une équipe. Une équipe qui a ajouté l’application avant que cette autorisation ne soit demandée doit la mettre à jour : voir [Mettre à jour l’application](#update-the-app). Dans une conversation personnelle, chaque message est déjà transmis à la session : il n’y a donc rien à lire au préalable.

Tous les projets connectés au même locataire Microsoft 365 utilisent la même application. Beeuni veille donc à ce que chaque lecture reste limitée aux conversations propres au projet. Dans un canal, chaque nouvelle publication constitue une conversation distincte :

| Lecture | Autorisée lorsque |
| --- | --- |
| Un fil de discussion (`teams thread`) | Le fil de discussion est une conversation de ce projet, ou d’aucun projet et le canal est accessible en lecture |
| Les publications récentes d’un canal (`teams history`) | Ce projet a une conversation dans le canal. Les publications qui démarrent une conversation d’un autre projet sont exclues |
| Un canal où aucun projet n’a de conversation | Aucun autre projet n’est connecté au locataire |

Un refus de lecture répond à `403` avec le motif `conversation_not_in_project` et un message indiquant le canal ou le fil de discussion. Pour lire un canal du premier type dans un locataire qui comporte plusieurs projets, mentionnez le bot dans ce canal et sélectionnez ce projet.

`get_channel` et `list_channels` fonctionnent pour les canaux standard. Un canal privé ou partagé n’apparaît que si l’agent peut le lire selon les règles ci-dessus. `get_team`, `list_members`, `get_user` et `list_teams` consultent l’annuaire du locataire et ne sont soumis à aucune restriction.

<a id="limits"></a>

## Limites

Les bots Teams ne peuvent ni ajouter de réactions aux messages ni effectuer de recherches dans les messages : ces fonctionnalités de Slack n’ont pas d’équivalent dans Teams. L’agent ne peut lire un canal que dans une équipe où l’application a été ajoutée, et uniquement selon les règles de la section [Lire un canal](#reading-a-channel).
