Partager via


Conversations de canal et de groupe avec un bot

Importante

Les exemples de code de cette section sont basés sur la version 4.6 et les versions ultérieures du Kit de développement logiciel (SDK) Bot Framework. Si vous recherchez de la documentation pour les versions antérieures, consultez la section bots - Kit de développement logiciel (SDK) v3 dans le dossier Kits de développement logiciel (SDK) hérités de la documentation.

Pour installer le bot Microsoft Teams dans une conversation d’équipe ou de groupe, ajoutez l’étendue teams ou groupchat à votre bot. Cela permet à tous les membres de la conversation d’interagir avec votre robot. Une fois le bot installé, il a accès aux métadonnées relatives à la conversation, telles que la liste des membres de la conversation. En outre, lorsqu’il est installé dans une équipe, le bot a accès à des détails sur cette équipe et à la liste complète des canaux.

Les bots d’un groupe ou d’un canal reçoivent uniquement des messages lorsqu’ils sont mentionnés @botname. Ils ne reçoivent aucun autre message envoyé à la conversation. Le bot doit être @mentioned directement. Votre bot ne reçoit pas de message lorsque l’équipe ou le canal est mentionné, ou quand quelqu’un répond à un message de votre bot sans @mentioning celui-ci.

Remarque

  • RSC pour tous les messages de conversation est disponible uniquement dans la préversion publique pour les développeurs.
  • À l’aide du consentement spécifique à la ressource (RSC), un bot peut recevoir tous les messages de canal dans les équipes dans laquelle il est installé sans être @mentioned. Pour plus d’informations, consultez recevoir tous les messages de canal avec RSC.
  • La publication d’un message ou d’une carte adaptative sur un canal privé n’est pas prise en charge.

Regardez la vidéo suivante pour en savoir plus sur les conversations de conversation de canal et de groupe avec un bot :


Instructions de conception

Contrairement aux conversations personnelles, dans les conversations de groupe et les canaux, votre bot doit fournir une présentation rapide. Vous devez suivre ces instructions de conception de bot et d’autres. Pour plus d’informations sur la conception de bots dans Teams, consultez comment concevoir des conversations de bot dans des canaux et des conversations.

À présent, vous pouvez créer des threads de conversation et gérer facilement différentes conversations dans les canaux.

Créer des threads de conversation

Lorsque votre bot est installé dans une équipe, vous devez créer un thread de conversation au lieu de répondre à un thread existant. Parfois, il est difficile de faire la distinction entre deux conversations. Si la conversation est threadée, il est plus facile d’organiser et de gérer différentes conversations dans les canaux. Il s’agit d’une forme de messagerie proactive.

Ensuite, vous pouvez récupérer des mentions à l’aide de l’objet entities et ajouter des mentions à vos messages à l’aide de l’objet Mention .

Utiliser des mentions

Chaque message envoyé à votre bot à partir d’un groupe ou d’un canal contient un @mention avec son nom dans le texte du message. Votre bot peut également récupérer d’autres utilisateurs mentionnés dans un message et ajouter des mentions à tous les messages qu’il envoie. Les bots dans les conversations de groupe activent les mentions utilisateur à l’aide @mentionde ; toutefois, ils ne prennent pas en charge @everyone les mentions.

Vous devez également supprimer le @mentions du contenu du message reçu par votre bot.

Récupérer les mentions

Les mentions sont retournées dans l’objet entities dans la charge utile et contiennent à la fois l’ID unique de l’utilisateur et le nom de l’utilisateur mentionné. Le texte du message inclut également la mention, par exemple <at>@John Smith<at>. Toutefois, ne vous fiez pas au texte du message pour récupérer des informations sur l’utilisateur. Il est possible que la personne qui envoie le message le modifie. Par conséquent, utilisez l’objet entities.

Vous pouvez récupérer toutes les mentions dans le message en appelant la fonction GetMentions dans le SDK Bot Builder, qui retourne un tableau d’objets Mention .

Le code suivant montre un exemple de récupération des mentions :

protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
    // Resolves the mentions from the entities activity.
    Mention[] mentions = turnContext.Activity.GetMentions();
    if(mentions != null)
    {
        ChannelAccount firstMention = mentions[0].Mentioned;

        // Sends a message activity to the sender of the incoming activity.
        await turnContext.SendActivityAsync($"Hello {firstMention.Name}");
    }
    else
    {
        // Sends a message activity to the sender of the incoming activity.
        await turnContext.SendActivityAsync("Aw, no one was mentioned.");
    }
}

Ajouter des mentions à vos messages

Il existe deux types de mentions :

Remarque

Les mention de mention et de balise utilisateur sont pris en charge pour les sms et les cartes adaptatives.

Mention de l’utilisateur

Votre bot peut mention d’autres utilisateurs dans des messages publiés dans des canaux.

L’objet Mention a deux propriétés que vous devez définir à l’aide des éléments suivants :

  • Incluez @username dans le texte du message.
  • Incluez l’objet mention dans la collection d’entités.

Le SDK Bot Framework fournit des méthodes d’assistance et des objets pour créer des mentions.

Le code suivant montre un exemple d’ajout de mentions à vos messages :

protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
    var mention = new Mention
    {
        Mentioned = turnContext.Activity.From,
        Text = $"<at>{XmlConvert.EncodeName(turnContext.Activity.From.Name)}</at>",
        Type = "mention",
    };

    // Returns a simple text message.
    var replyActivity = MessageFactory.Text($"Hello {mention.Text}.");
    replyActivity.Entities = new List<Entity> { mention };

    // Sends an activity to the sender of the incoming activity.
    await turnContext.SendActivityAsync(replyActivity, cancellationToken);
}

Vous pouvez maintenant envoyer un message d’introduction lorsque votre bot est installé ou ajouté pour la première fois à un groupe ou à une équipe.

Prise en charge de l’ID d’objet Microsoft Entra et de l’UPN dans les mention de l’utilisateur

Les bots prennent en charge les ID de mention utilisateur, tels que l’ID d’objet Microsoft Entra et le nom d’utilisateur principal (UPN) en plus des ID existants. Les webhooks entrants commencent à prendre en charge les mention utilisateur dans la carte adaptative avec l’ID d’objet Microsoft Entra et l’UPN.

L’extrait de code suivant montre un exemple de mention d’utilisateurs avec l’ID d’objet Entra et l’UPN dans un sms :

var userId = "Adele@microsoft.com"; //User Principle Name
var mention = new ChannelAccount(userId, "Adele"); 
var mentionObj = new Mention 
{
    Mentioned = mention,
    Text = $"<at>{mention.Name}</at>" ,
    Type = "mention"
}; 

// Returns a simple text message.var replyActivity = MessageFactory.Text($"Hello {mentionObj.Text}.");replyActivity.Entities = new List<Entity> { mentionObj };

// Sends an activity to the sender of the incoming activity.await turnContext.SendActivityAsync(replyActivity, cancellationToken); 

L’extrait de code suivant montre un exemple de mention d’utilisateurs avec l’ID d’objet Entra et l’UPN dans une carte adaptative :

{
    "type": "mention",
    "text": "<at>Adele</at>",
    "mentioned": {
            "id": "Adele@microsoft.com" ,// User Principle Name
            "name": "Adele"
    }
} 

Balise mention

Votre bot peut mention des balises dans des sms et des cartes adaptatives publiées dans des canaux. Lorsque le bot @mentions utilise la balise dans un canal, la balise est mise en surbrillance et les personnes associées à la balise sont averties. Lorsqu’un utilisateur pointe sur la balise, une fenêtre contextuelle s’affiche avec les détails de la balise.

Mentionner des balises dans un sms

Dans l’objet mention.properties , ajoutez la propriété 'type': 'tag'. Si la propriété 'type': 'tag' n’est pas ajoutée, le bot traite le mention comme un mention utilisateur.

Exemple :

est type:tag ajouté en tant que dans Properties ChannelAccount.

Référence du Kit de développement logiciel (SDK)

​var mention = new ChannelAccount(tagId, "Test Tag"); 
​mention.Properties = JObject.Parse("{'type': 'tag'}"); 
​var mentionObj = new Mention 
​{ 
​    Mentioned = mention, 
​    Text = "<at>Test Tag</at>" 
​}; 

​var replyActivity = MessageFactory.Text("Hello " + mentionObj.Text); 
​replyActivity.Entities = new List<Microsoft.Bot.Schema.Entity> { mentionObj }; 
​await turnContext.SendActivityAsync(replyActivity, cancellationToken); 
Mentionner des balises dans une carte adaptative

Dans le schéma de carte adaptative, sous l’objet mentioned , ajoutez la "type": "tag" propriété . Si la "type": "tag" propriété n’est pas ajoutée, le bot traite le mention comme un mention utilisateur.

Vous pouvez obtenir la liste des balises disponibles dans le canal à l’aide de l’API List teamworkTags .

Exemple :

​{ 
​    "type": "mention", 
    ​"text": "<at>Test Tag</at>", 
​    "mentioned": { 
            ​"id": "base64 encoded id" ,// tag graph 64 base ID
​            "name": "Test Tag", 
            ​"type": "tag" 
​    } 
​} 
Paramètres de requête
Nom Description
type Type de mention. Le type pris en charge est tag.
id Identificateur unique de la balise. Pour plus d’informations, consultez teamworkTag.
Code d’erreur
Code d'état Code d’erreur Valeurs de message Demande de nouvelle tentative Action du développeur
400 Code : Bad Request La balise mentionnée avec l’ID {id string} n’existe pas dans l’équipe actuelle
L’étiquette ne peut être mentionnée que dans le canal
Balise mentionnée non valide, car aucune balise n’existe dans l’équipe
Non Réévaluez la charge utile de la demande pour les erreurs. Consultez le message d’erreur retourné pour plus d’informations.
502 Code : Bad Gateway ID de groupe d’équipe non valide
ID de locataire mal formé pour la balise
L’ID de mention ne peut pas être résolu
Non Réessayez manuellement.
Limitations

Toute demande peut être évaluée par rapport à plusieurs limites, en fonction de l’étendue, du type de fenêtre (court et long), du nombre d’étiquettes par message et d’autres facteurs. La première limite à atteindre déclenche le comportement de limitation.

Veillez à ne pas dépasser les limites de limitation pour éviter l’échec de la remise des messages. Par exemple, un bot ne peut envoyer que deux messages avec des étiquettes mention dans une fenêtre de cinq secondes et chaque message peut avoir jusqu’à 10 balises.

Le tableau suivant répertorie les limites de limitation pour les mentions de balise dans un bot :

Portée Type de fenêtre Nombre d’étiquettes par message Fenêtres de temps (s) Nombre maximal de messages par fenêtre de temps
Par bot et par thread Court 10 5 2
  Long 10 60 5
Tous les bots par thread Court 10 5 4
  Entier long 10 60 5
Limitations
  • Les mentions de balise sont prises en charge uniquement dans le flux de messages bot-à-client avec du texte et une carte adaptative.
  • Les mentions de balise ne sont pas prises en charge dans les canaux partagés et privés.
  • Les mentions de balise ne sont pas prises en charge dans les connecteurs.
  • Les mentions de balise ne prennent pas en charge le flux d’appel dans un bot.

Envoyer un message lors de l’installation

Lorsque votre bot est ajouté pour la première fois au groupe ou à l’équipe, un message d’introduction doit être envoyé. Le message doit fournir une brève description des fonctionnalités du bot et comment les utiliser. Vous devez vous abonner à l’événement conversationUpdate avec le teamMemberAdded eventType. L’événement est envoyé lorsqu’un nouveau membre d’équipe est ajouté. Vérifiez si le nouveau membre ajouté est le bot. Pour plus d’informations, consultez envoyer un message de bienvenue à un nouveau membre de l’équipe.

Vous pouvez envoyer un message personnel à chaque membre de l’équipe lorsque le bot est ajouté. Pour ce faire, récupérez la liste de l’équipe et envoyez un message direct à chaque utilisateur.

Remarque

Assurez-vous que le message envoyé par le bot est pertinent et ajoute de la valeur au message initial et ne courrier indésirable pas les utilisateurs.

N’envoyez pas de message dans les cas suivants :

  • Lorsque l’équipe est grande, par exemple, plus de 100 membres. Votre bot peut être considéré comme du courrier indésirable et la personne qui l’a ajouté peut recevoir des plaintes. Vous devez communiquer clairement la proposition de valeur de votre bot à toutes les personnes qui voient le message d’accueil.
  • Votre bot est mentionné pour la première fois dans un groupe ou un canal au lieu d’être ajouté en premier à une équipe.
  • Un groupe ou un canal est renommé.
  • Un membre d’équipe est ajouté à un groupe ou à un canal.

Exemples de bot Teams

Exemple de code

Pour obtenir des exemples complets illustrant la fonctionnalité, consultez les exemples Teams suivants pour Bot Framework :

Exemple de nom Description .NET Node.js Python Manifeste
Bot de conversation Teams Cet exemple montre comment utiliser différents événements de conversation de bot disponibles dans Bot Framework v4 pour l’étendue personnelle et teams. View View View View
Authentification avec OAuthPrompt Cet exemple montre l’authentification et la messagerie de base dans Bot Framework v4. View View View View
Chargement de fichiers Teams Cet exemple montre comment utiliser des fichiers avec un bot dans une conversation un-à-un. View View View View
Boîte de dialogue (appelée module de tâche dans TeamsJS v1.x) Cet exemple montre comment utiliser une boîte de dialogue et les valeurs des cartes qu’il contient pour une extension de message. View View View View
Démarrer un nouveau thread dans un canal Cet exemple montre comment utiliser un nouveau thread dans un canal à l’aide d’un bot. View View View View
Localisation des applications Teams Cet exemple montre comment utiliser la localisation d’applications Teams à l’aide d’un bot et d’un onglet. View View N/A View

Guide pas à pas

Suivez le guide pas à pas pour créer un bot de conversation Teams.

Étape suivante

Voir aussi