Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
Este artículo se basa en el SDK de Bot Framework v3. Si está buscando la versión 4.6 de la documentación actual o posterior del SDK, consulte la sección de bots conversacionales .
El bot puede acceder a contexto adicional sobre el equipo o el chat, como el perfil de usuario. Esta información se puede usar para enriquecer la funcionalidad del bot y proporcionar una experiencia más personalizada.
Nota
- Se accede mejor a las API de bots específicas de Microsoft Teams a través de nuestras extensiones para el SDK de Bot Builder.
- Para C# o .NET, descargue nuestro paquete NuGet Microsoft.Bot.Connector.Teams .
- Para Node.js desarrollo, la funcionalidad de Bot Builder para Teams se incorpora en el SDK de Bot Framework v4.6.
Obtener la lista del equipo
El bot puede consultar la lista de miembros del equipo y sus perfiles básicos. Los perfiles básicos incluyen identificadores de usuario de Teams e información de Microsoft Entra, como el nombre y el identificador de objeto. Puede usar esta información para correlacionar las identidades de los usuarios. Por ejemplo, compruebe si un usuario que ha iniciado sesión en una pestaña con las credenciales de Microsoft Entra es un miembro del equipo.
Ejemplo de API de REST
Emita directamente una solicitud GET en /conversations/{teamId}/members/, utilizando el serviceUrl valor como punto de conexión.
Se teamId puede encontrar en el channeldata objeto de la carga de actividad que recibe el bot en los siguientes escenarios:
- Cuando un usuario envía mensajes o interactúa con el bot en un contexto de equipo. Para obtener más información, consulte la opción Recibir mensajes.
- Cuando se agrega un nuevo usuario o bot a un equipo. Para obtener más información, consulte bot o usuario agregado a un equipo.
Nota
- Use siempre el identificador de equipo al llamar a la API.
- El
serviceUrlvalor tiende a ser estable, pero puede cambiar. Cuando llega un mensaje nuevo, el bot debe comprobar su valor almacenadoserviceUrl.
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"
}]
Ejemplo de .NET
Team.Id Llame GetConversationMembersAsync usando para devolver una lista de ID de usuario.
Llamada GetConversationMembersAsync para obtener userRole la propiedad: devuelve el valor como usuario.
// 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()}");
Node.js o ejemplo de 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));
}
}
);
Recuperar perfil de usuario o lista en un chat personal o grupal
Puede realizar la llamada API para cualquier chat personal para obtener la información del perfil del usuario que chatea con el bot.
La llamada API, los métodos SDK y el objeto de respuesta son idénticos a la captura de la lista del equipo. La única diferencia es que pasas el en conversationId lugar del teamId.
Capturar la lista de canales de un equipo
El bot puede consultar la lista de canales de un equipo.
Nota
- Se devuelve
nullel nombre del canal General predeterminado para permitir la localización. - El id. de canal para el canal General siempre coincide con el id. del equipo.
Ejemplo de API de REST
Emita directamente una solicitud GET en /teams/{teamId}/conversations/, utilizando el serviceUrl valor como punto de conexión.
El único origen teamId es un mensaje del contexto del equipo. El mensaje es un mensaje de un usuario o el mensaje que recibe el bot cuando se agrega a un equipo. Para obtener más información, consulte bot o usuario agregado a un equipo.
Nota
El serviceUrl valor tiende a ser estable, pero puede cambiar. Cuando llega un mensaje nuevo, el bot debe comprobar su valor almacenado 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"
}]
}
Ejemplo de .NET
En el ejemplo siguiente se utiliza la llamada desde las FetchChannelListextensiones de Teams para el SDK de Bot Builder para .NET:
ConversationList channels = client.GetTeamsConnectorClient().Teams.FetchChannelList(activity.GetChannelData<TeamsChannelData>().Team.Id);
Node.js ejemplo
En el ejemplo siguiente se utiliza fetchChannelList una llamada desde las extensiones de Teams para el SDK de Bot Builder para 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));
}
}
);
Obtener clientInfo en el contexto del bot
Puede obtener clientInfo dentro de la actividad del bot. clientInfo contiene las siguientes propiedades:
- Configuración regional
- País
- Plataforma
- Zona horaria
Ejemplo de JSON
[
{
"type": "clientInfo",
"locale": "en-US",
"country": "US",
"platform": "Windows",
"timezone": "Asia/Calcutta"
}
]
Ejemplo de C#
var connector = new ConnectorClient(new Uri(context.Activity.ServiceUrl));
{
var clientinfo = context.Activity.Entities[0];
await context.PostAsync($"ClientInfo: clientinfo ");
}