Obtenir le contexte de votre bot Microsoft Teams

Importante

Cet article est basé sur le Kit de développement logiciel (SDK) Bot Framework v3. Si vous recherchez la documentation actuelle version 4.6 ou ultérieure du Kit de développement logiciel (SDK), consultez la section Bots conversationnels .

Votre bot peut accéder à un contexte supplémentaire concernant l’équipe ou la conversation, comme le profil utilisateur. Ces informations peuvent être utilisées pour enrichir les fonctionnalités de votre bot et fournir une expérience plus personnalisée.

Remarque

Récupérer la liste de l’équipe

Votre bot peut interroger la liste des membres de l’équipe et leurs profils de base. Les profils de base incluent des ID d’utilisateur Teams et des informations Microsoft Entra telles que le nom et l’ID d’objet. Vous pouvez utiliser ces informations pour mettre en corrélation les identités des utilisateurs. Par exemple, case activée si un utilisateur connecté à un onglet via Microsoft Entra informations d’identification est membre de l’équipe.

Exemple d’API REST

Émettez directement une requête GET sur /conversations/{teamId}/members/, en utilisant la serviceUrl valeur comme point de terminaison.

Se teamId trouve dans l’objet channeldata de la charge utile d’activité que votre bot reçoit dans les scénarios suivants :

Remarque

  • Utilisez toujours l’ID d’équipe lors de l’appel de l’API.
  • La serviceUrl valeur a tendance à être stable, mais peut changer. Lorsqu’un nouveau message arrive, votre bot doit vérifier sa valeur stockée serviceUrl .
GET /v3/conversations/19:ja0cu120i1jod12j@skype.net/members

Response body
[{
    "id": "29:1GcS4EyB_oSI8A88XmWBN7NJFyMqe3QGnJdgLfFGkJnVelzRGos0bPbpsfJjcbAD22bmKc4GMbrY2g4JDrrA8vM06X1-cHHle4zOE6U4ttcc",
    "objectId": "9d3e08f9-a7ae-43aa-a4d3-de3f319a8a9c",
    "givenName": "Larry",
    "surname": "Brown",
    "email": "Larry.Brown@fabrikam.com",
    "userPrincipalName": "labrown@fabrikam.com"
}, {
    "id": "29:1bSnHZ7Js2STWrgk6ScEErLk1Lp2zQuD5H2qQ960rtvstKp8tKLl-3r8b6DoW0QxZimuTxk_kupZ1DBMpvIQQUAZL-PNj0EORDvRZXy8kvWk",
    "objectId": "76b0b09f-d410-48fd-993e-84da521a597b",
    "givenName": "John",
    "surname": "Patterson",
    "email": "johnp@fabrikam.com",
    "userPrincipalName": "johnp@fabrikam.com"
}, {
    "id": "29:1URzNQM1x1PNMr1D7L5_lFe6qF6gEfAbkdG8_BUxOW2mTKryQqEZtBTqDt10-MghkzjYDuUj4KG6nvg5lFAyjOLiGJ4jzhb99WrnI7XKriCs",
    "objectId": "6b7b3b2a-2c4b-4175-8582-41c9e685c1b5",
    "givenName": "Rick",
    "surname": "Stevens",
    "email": "Rick.Stevens@fabrikam.com",
    "userPrincipalName": "rstevens@fabrikam.com"
}]

Exemple .NET

Appelez GetConversationMembersAsync à l’aide Team.Id de pour retourner une liste d’ID d’utilisateur. Appeler GetConversationMembersAsync pour obtenir userRole la propriété retourne la valeur en tant qu’utilisateur.

// Fetch the members in the current conversation
var connector = new ConnectorClient(new Uri(context.Activity.ServiceUrl));
var teamId = context.Activity.GetChannelData<TeamsChannelData>().Team.Id;
var members = await connector.Conversations.GetConversationMembersAsync(teamId);

// Concatenate information about all members into a string
var sb = new StringBuilder();
foreach (var member in members.AsTeamsChannelAccounts())
{
    sb.AppendFormat(
        "GivenName = {0}, TeamsMemberId = {1}",
        member.Name, member.Id);

    sb.AppendLine();
}

// Post the member info back into the conversation
await context.PostAsync($"People in this conversation: {sb.ToString()}");

exemple Node.js ou TypeScript


[...]
import * as builder from "botbuilder";
[...]

var teamId = session.message.sourceEvent.team.id;
connector.fetchMembers(
  (<builder.IChatConnectorAddress>session.message.address).serviceUrl,
  teamId,
  (err, result) => {
    if (err) {
      session.endDialog('There is some error');
    }
    else {
      session.endDialog('%s', JSON.stringify(result));
    }
  }
);

Récupérer un profil utilisateur ou une liste dans une conversation personnelle ou de groupe

Vous pouvez effectuer l’appel d’API pour toute conversation personnelle afin d’obtenir les informations de profil de l’utilisateur qui discute avec votre bot.

L’appel d’API, les méthodes sdk et l’objet de réponse sont identiques à la récupération de la liste d’équipe. La seule différence est que vous passez le conversationId au lieu du teamId.

Récupérer la liste des canaux d’une équipe

Votre bot peut interroger la liste des canaux d’une équipe.

Remarque

  • Le nom du canal Général par défaut est retourné en tant que null pour permettre la localisation.
  • L’ID de canal du canal Général correspond toujours à l’ID d’équipe.

Exemple d’API REST

Émettez directement une requête GET sur /teams/{teamId}/conversations/, en utilisant la serviceUrl valeur comme point de terminaison.

La seule source pour teamId est un message du contexte d’équipe. Le message est soit un message d’un utilisateur, soit le message que votre bot reçoit lorsqu’il est ajouté à une équipe. Pour plus d’informations, consultez Bot ou utilisateur ajouté à une équipe.

Remarque

La serviceUrl valeur a tendance à être stable, mais peut changer. Lorsqu’un nouveau message arrive, votre bot doit vérifier sa valeur stockée serviceUrl .

GET /v3/teams/19%3A033451497ea84fcc83d17ed7fb08a1b6%40thread.skype/conversations

Response body
{
    "conversations": [{
        "id": "19:033451497ea84fcc83d17ed7fb08a1b6@thread.skype",
        "name": null
    }, {
        "id": "19:cc25e4aae50746ecbb11473bba24c70a@thread.skype",
        "name": "Materials"
    }, {
        "id": "19:b7b84cba410c406ba671dbbf5e0a3519@thread.skype",
        "name": "Design"
    }, {
        "id": "19:fc5db2aed489454e8f8c06829ed6c986@thread.skype",
        "name": "Marketing"
    }]
}

Exemple .NET

L’exemple suivant utilise l’appel FetchChannelList des extensions Teams pour le Kit de développement logiciel (SDK) Bot Builder pour .NET :

ConversationList channels = client.GetTeamsConnectorClient().Teams.FetchChannelList(activity.GetChannelData<TeamsChannelData>().Team.Id);

Exemple Node.js

L’exemple suivant utilise fetchChannelList l’appel à partir des extensions Teams pour le Kit de développement logiciel (SDK) Bot Builder pour Node.js:

var teamId = session.message.sourceEvent.team.id;
connector.fetchChannelList(
  (session.message.address).serviceUrl,
  teamId,
  (err, result) => {
    if (err) {
      session.endDialog('There is an error');
    }
    else {
      session.endDialog('%s', JSON.stringify(result));
    }
  }
);

Obtenir clientInfo dans le contexte de votre bot

Vous pouvez extraire le clientInfo dans l’activité de votre bot. ClientInfo contient les propriétés suivantes :

  • Locale
  • Pays
  • Plateforme
  • Timezone

Exemple JSON

[
    {
        "type": "clientInfo",
        "locale": "en-US",
        "country": "US",
        "platform": "Windows",
        "timezone": "Asia/Calcutta"
    }
]

Exemple C#

var connector = new ConnectorClient(new Uri(context.Activity.ServiceUrl));

{
    var clientinfo = context.Activity.Entities[0];
    await context.PostAsync($"ClientInfo: clientinfo ");
}

Voir aussi

Exemples Bot Framework