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
- Les API de bot spécifiques à Microsoft Teams sont mieux accessibles via nos extensions pour le Kit de développement logiciel (SDK) Bot Builder.
- Pour C# ou .NET, téléchargez notre package NuGet Microsoft.Bot.Connector.Teams .
- Pour le développement Node.js, la fonctionnalité Bot Builder for Teams est incorporée dans le Kit de développement logiciel (SDK) Bot Framework v4.6.
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, vérifiez si un utilisateur connecté à un onglet via les informations d’identification Microsoft Entra 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 :
- Lorsqu’un utilisateur communique ou interagit avec votre bot dans un contexte d’équipe. Pour plus d’informations, consultez Réception de messages.
- Lorsqu’un nouvel utilisateur ou bot est ajouté à une équipe. Pour plus d’informations, consultez Bot ou utilisateur ajouté à une équipe.
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éeserviceUrl
.
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
- Fuseau horaire
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 ");
}