Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Агент может получить доступ к дополнительным данным контекста о команде или чате, где он установлен. Эти сведения можно использовать для персонализации ответов и создания более широких рабочих процессов.
Получение состава или профиля
Агент может запросить список участников в текущей команде или чате и использовать эти данные для персонализации ответов или целевых дальнейших действий.
Используйте API участников бесед пакета SDK Для Teams для получения сведений о реестре.
Для получения участника беседы:
- Минимальный размер страницы:
50 - Размер страницы по умолчанию:
200 - Максимальный размер страницы:
500
Не используйте извлечение участников без разбиения на страницы в командах и каналах. Для больших списков вызовы без разбивки на страницы могут быть неполными или регулироваться.
Примечание.
- Разбиение на страницы доступно в беседах команды и канала.
- Разбиение на страницы не поддерживается в беседах чата. В чатах служба возвращает полный список.
В следующем примере кода используется извлечение страничных элементов:
app.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.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
После получения списка можно получить сведения об одном члене.
Получение сведений об одном элементе
Сведения о конкретном элементе можно получить с помощью идентификаторов пользователей из контекста действия.
В следующем примере кода используются API пакета SDK для Teams:
app.OnMessage(async (context, cancellationToken) =>
{
var memberId = context.Activity.From?.Id;
if (string.IsNullOrEmpty(memberId))
{
return;
}
var member = await context.Api.Conversations.Members.GetByIdAsync(
context.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)
После получения сведений об участнике можно получить сведения о команде.
Получение сведений о команде
При установке в команде агент может запрашивать метаданные, такие как идентификатор команды и идентификатор Microsoft Entra группы.
В следующем примере кода используются API пакета SDK для Teams:
app.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)
После получения сведений о команде можно получить список каналов в этой команде.
Получение списка каналов в команде
Агент может запрашивать список каналов в команде.
Примечание.
- Имя общего канала по умолчанию возвращается в качестве
null, чтобы разрешить локализацию. - Идентификатор канала для общего канала всегда совпадает с идентификатором команды.
Следующий пример кода используется для получения списка каналов в команде:
app.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)
Если вам нужны необработанные конечные точки REST соединителя, используйте API пакета SDK Для Teams для большинства сценариев агента и используйте REST напрямую только в сложных случаях, которые не охватываются абстракциями пакета SDK.
Следующее действие
См. также
Platform Docs