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.
Un agente puede acceder a datos de contexto adicionales sobre el equipo o el chat donde está instalado. Esta información se puede usar para personalizar las respuestas y crear flujos de trabajo más completos.
Captura de la lista o el perfil del usuario
El agente puede consultar la lista de miembros del equipo o chat actual y usar esos datos para personalizar las respuestas o las acciones de seguimiento objetivo.
Use la API de miembros de conversaciones del SDK de Teams para recuperar la información de la lista.
Para la recuperación de miembros de la conversación:
- Tamaño de página mínimo:
50 - Tamaño de página predeterminado:
200 - Tamaño de página máximo:
500
No use la recuperación de miembros no paginados en equipos y canales. En el caso de listas grandes, las llamadas no paginadas pueden estar incompletas o limitadas.
Nota:
- La paginación está disponible en conversaciones de equipo y canal.
- La paginación no es compatible con las conversaciones de chat. En los chats, el servicio devuelve la lista completa.
El código de ejemplo siguiente usa la recuperación de miembros paginados:
teams.OnMessage(async (context, cancellationToken) =>
{
var membersClient = context.Api.Conversations.Members;
var allMembers = new List<TeamsChannelAccount>();
string? continuationToken = null;
do
{
var page = await membersClient.GetPagedAsync(
context.Activity.Conversation.Id,
pageSize: 50,
continuationToken: continuationToken,
cancellationToken: cancellationToken
);
allMembers.AddRange(page.Members.Where(m => m is not null).Select(m => m!));
continuationToken = page.ContinuationToken;
}
while (!string.IsNullOrEmpty(continuationToken));
});
app.on("message", async ({ activity, api }) => {
const membersClient = api.conversations.members(activity.conversation.id);
const allMembers = [];
let continuationToken = undefined;
do {
const page = await membersClient.getPaged({
pageSize: 50,
continuationToken,
});
allMembers.push(...page.members);
continuationToken = page.continuationToken;
} while (continuationToken);
});
@app.on_message
async def list_members(ctx: ActivityContext[MessageActivity]) -> None:
members_client = ctx.api.conversations.members(ctx.activity.conversation.id)
all_members = []
continuation_token: str | None = None
while True:
result = await members_client.get_paged(
page_size=50,
continuation_token=continuation_token,
)
all_members.extend(result.members)
if not result.continuation_token:
break
continuation_token = result.continuation_token
Después de obtener la lista, puede obtener detalles para un solo miembro.
Obtener detalles de un miembro
Puede recuperar los detalles de un miembro específico mediante identificadores de usuario del contexto de la actividad.
El siguiente código de ejemplo usa las API del SDK de Teams:
teams.OnMessage(async (context, cancellationToken) =>
{
var memberId = context.Activity.From?.Id;
if (string.IsNullOrEmpty(memberId))
{
return;
}
var member = await context.Api.Conversations.Members.GetByIdAsync(
context.Activity.Conversation.Id,
memberId,
cancellationToken: cancellationToken
);
});
app.on("message", async ({ activity, api }) => {
const memberId = activity.from?.id;
if (!memberId) {
return;
}
const member = await api.conversations
.member.getById(activity.conversation.id, memberId);
});
@app.on_message
async def get_member(ctx: ActivityContext[MessageActivity]) -> None:
member_id = ctx.activity.from_.id
member = await ctx.api.conversations.member.get_by_id(ctx.activity.conversation.id, member_id)
Después de obtener los detalles de un miembro, puede recuperar los detalles del equipo.
Obtener los detalles del equipo
Cuando se instala en un equipo, el agente puede consultar metadatos como el identificador de equipo y el identificador de grupo de Microsoft Entra.
El siguiente código de ejemplo usa las API del SDK de Teams:
teams.OnMessage(async (context, cancellationToken) =>
{
var teamId = context.Activity.ChannelData?.Team?.Id;
if (string.IsNullOrEmpty(teamId))
{
return;
}
var team = await context.Api.Teams.GetByIdAsync(
teamId,
cancellationToken: cancellationToken
);
});
app.on("message", async ({ activity, api }) => {
const teamId = activity.channelData?.team?.id;
if (!teamId) {
return;
}
const team = await api.teams.getById(teamId);
});
@app.on_message
async def get_team_details(ctx: ActivityContext[MessageActivity]) -> None:
team_id = ctx.activity.channel_data.team.id
team = await ctx.api.teams.get_by_id(team_id)
Después de obtener los detalles del equipo, puede obtener la lista de canales de ese equipo.
Obtiene la lista de canales en un equipo
El agente puede consultar la lista de canales de un equipo.
Nota:
- El nombre del canal predeterminado General se devuelve como
nullpara permitir la localización. - El identificador de canal General siempre coincide con el identificador de equipo.
El siguiente código de ejemplo se usa para obtener la lista de canales de un equipo:
teams.OnMessage(async (context, cancellationToken) =>
{
var teamId = context.Activity.ChannelData?.Team?.Id;
if (string.IsNullOrEmpty(teamId))
{
return;
}
var channels = await context.Api.Teams.GetConversationsAsync(
teamId,
cancellationToken: cancellationToken
);
});
app.on("message", async ({ activity, api }) => {
const teamId = activity.channelData?.team?.id;
if (!teamId) {
return;
}
const channels = await api.teams.getConversations(teamId);
});
@app.on_message
async def list_channels(ctx: ActivityContext[MessageActivity]) -> None:
team_id = ctx.activity.channel_data.team.id
channels = await ctx.api.teams.get_conversations(team_id)
Si necesita puntos de conexión REST de conectores sin formato, use la API del SDK de Teams para la mayoría de los escenarios de agente y solo use REST directamente para casos avanzados que no están cubiertos por las abstracciones del SDK.