Получение контекста Teams для вашего бота
Важно!
Примеры кода в этом разделе основаны на версии 4.6 и более поздних версиях пакета SDK Bot Framework. Если вы ищете документацию по более ранним версиям, см. раздел пакет SDK для ботов версии 3 в папке Устаревшие пакеты SDK документации.
Бот может получить доступ к дополнительным контекстным данным о команде или чате, где он установлен. Эти сведения можно использовать для расширения функциональных возможностей бота и его персонализации.
Получение состава или профиля
Бот может запрашивать список участников и их базовые профили пользователей, включая идентификаторы пользователей Teams и Microsoft Entra сведения, такие как имя и objectId. Эти сведения можно использовать для сопоставления удостоверений пользователей. Например, чтобы проверка, является ли пользователь, вошедший на вкладку с помощью Microsoft Entra учетных данных, членом команды. Для получения участников беседы минимальный или максимальный размер страницы зависит от реализации. Размер страницы менее 50 обрабатывается как 50, а размер больше 500 ограничивается 500. Даже если вы используете нестраничную версию, она ненадежна в больших командах и не должна использоваться. Дополнительные сведения см. в статье об изменениях API ботов Teams для получения сведений участников команды или чата.
Примечание.
- Разбиение на страницы доступно в команде и канале.
- Разбиение на страницы в чатах не поддерживается. Для чатов всегда возвращается весь список.
В следующем примере кода для получения списка используется выгружаемая конечная точка:
public class MyBot : TeamsActivityHandler
{
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
var members = new List<TeamsChannelAccount>();
string continuationToken = null;
do
{
// Gets a paginated list of members of one-on-one, group, or team conversation.
var currentPage = await TeamsInfo.GetPagedMembersAsync(turnContext, 100, continuationToken, cancellationToken);
continuationToken = currentPage.ContinuationToken;
members.AddRange(currentPage.Members);
}
while (continuationToken != null);
}
}
После получения состава или профиля вы можете получить сведения об одном участнике. В настоящее время для получения сведений для одного или нескольких участников чата или команды используйте API-интерфейсы бота Microsoft Teams TeamsInfo.GetMembersAsync
для C# или TeamsInfo.getMembers
для API-интерфейсов TypeScript.
Получение сведений об одном элементе
Вы также можете получить сведения о конкретном пользователе, используя его идентификатор пользователя Teams, имя участника-пользователя или идентификатор объекта Microsoft Entra.
Следующий пример кода используется для получения сведений об одном элементе:
public class MyBot : TeamsActivityHandler
{
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
// Gets the account of a single conversation member.
// This works in one-on-one, group, and team scoped conversations.
var member = await TeamsInfo.GetMemberAsync(turnContext, turnContext.Activity.From.Id, cancellationToken);
}
}
После получения сведений об одном участнике можно получить сведения о команде. В настоящее время для получения сведений для команды используйте API-интерфейсы бота Teams TeamsInfo.GetMemberDetailsAsync
для C# или TeamsInfo.getTeamDetails
для TypeScript.
Получение сведений о команде
При установке в команде бот может запрашивать метаданные об этой команде, включая идентификатор группы Microsoft Entra.
Следующий пример кода используется для получения сведений о команде:
public class MyBot : TeamsActivityHandler
{
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
// Gets the details for the given team id. This only works in team scoped conversations.
// TeamsGetTeamInfo: Gets the TeamsInfo object from the current activity.
TeamDetails teamDetails = await TeamsInfo.GetTeamDetailsAsync(turnContext, turnContext.Activity.TeamsGetTeamInfo().Id, cancellationToken);
if (teamDetails != null) {
await turnContext.SendActivityAsync($"The groupId is: {teamDetails.AadGroupId}");
}
else {
// Sends a message activity to the sender of the incoming activity.
await turnContext.SendActivityAsync($"Message did not come from a channel in a team.");
}
}
}
После получения сведений о команде можно получить список каналов в команде. В настоящее время для получения сведений для списка каналов в команде используйте API-интерфейсы бота Teams TeamsInfo.GetTeamChannelsAsync
для C# или TeamsInfo.getTeamChannels
для API-интерфейсов TypeScript.
Получение списка каналов в команде
Бот может запрашивать список каналов в команде.
Примечание.
- Имя общего канала по умолчанию возвращается в качестве
null
, чтобы разрешить локализацию. - Идентификатор канала для общего канала всегда совпадает с идентификатором команды.
Следующий пример кода используется для получения списка каналов в команде:
public class MyBot : TeamsActivityHandler
{
// Override this in a derived class to provide logic specific to Message activities.
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
// Returns a list of channels in a Team. This only works in team scoped conversations.
IEnumerable<ChannelInfo> channels = await TeamsInfo.GetTeamChannelsAsync(turnContext, turnContext.Activity.TeamsGetTeamInfo().Id, cancellationToken);
// Sends a message activity to the sender of the incoming activity.
await turnContext.SendActivityAsync($"The channel count is: {channels.Count()}");
}
}
Примеры ботов Teams
Пример кода
Полные рабочие примеры, демонстрирующие эту функциональность, см. в следующих примерах Teams для Bot Framework:
Название примера | Описание | .NET | Node.js | Python | Манифест |
---|---|---|---|---|---|
Бот для беседы в Teams | В этом примере показано, как использовать различные события бесед бота, доступные в bot framework версии 4 для личных и командных область. | Просмотр | Просмотр | Просмотр | Просмотр |
Проверка подлинности с помощью OAuthPrompt | В этом примере показана проверка подлинности и базовый обмен сообщениями в Bot Framework версии 4. | Просмотр | Просмотр | Просмотр | Просмотр |
Отправка файла Teams | В этом примере показано, как использовать файлы с ботом в беседе один к одному. | Просмотр | Просмотр | Просмотр | Просмотр |
Dialog (называется модулем задач в TeamsJS версии 1.x) | В этом примере показано, как использовать диалоговое окно и значения из карточек в нем для расширения сообщений. | Просмотр | Просмотр | Просмотр | View |
Запуск новой цепочки в канале | В этом примере показано, как использовать новый поток в канале с помощью бота. | Просмотр | Просмотр | Просмотр | Просмотр |
Локализация приложений Teams | В этом примере показано, как использовать локализацию приложений Teams с помощью бота и вкладки. | Просмотр | Просмотр | Н/Д | Просмотр |
Следующий этап
См. также
Platform Docs
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по