#c# #microsoft-graph-api #botframework #microsoft-teams
#c# #microsoft-graph-api #botframework #microsoft-teams
Вопрос:
Я пытаюсь создать канал с использованием MS Graph в боте BotFramework. Я получаю то, что кажется допустимым токеном доступа. Однако приведенный ниже код выдает следующую ошибку:
Тип коллекции ‘Microsoft.График.IChannelMembersCollectionPage «на»Microsoft.График.Channel.Members’ не поддерживается.
var credential = new DefaultAzureCredential();
var token = credential.GetToken(
new Azure.Core.TokenRequestContext(
new[] { "https://graph.microsoft.com/.default" }));
var accessToken = token.Token;
Logger.LogWarning($"Token:{accessToken.ToString()}");
var graphServiceClient = new GraphServiceClient(
new DelegateAuthenticationProvider((requestMessage) =>
{
requestMessage
.Headers
.Authorization = new AuthenticationHeaderValue("bearer", accessToken);
return Task.CompletedTask;
}));
try
{
var chan = new Channel
{
DisplayName = $"Chan1",
Description = "This channel is where we debate all future world domination plans",
MembershipType = ChannelMembershipType.Standard
};
await graphServiceClient.Teams["{GroupID}"].Channels.Request().AddAsync(chan);
}
Комментарии:
1. Вы тестировали его в Graph Explorer или POSTMAN и работает ли он так, как ожидалось?
2. Да, я могу создавать каналы в этой команде с помощью Graph Explorer. Однако это означало бы создание канала на основе моих учетных данных. Я включил следующие разрешения делегирования для моего веб-приложения, в котором размещен бот: Канал. Создайте канал. Удалить. Все channel.ReadBasic. Все пользователи профиля OpenID.Читать
Ответ №1:
Вы можете использовать Graph SDK для внутренней генерации токена. Пожалуйста, попробуйте предоставить разрешения для приложений на портале Azure и используйте приведенный ниже код для создания канала в MS Teams. Ниже приведены пакеты, которые необходимо установить.
Это пример разрешений для приложений. Вы можете попробовать тот же код с незначительными изменениями / без изменений для разрешений делегирования.
string clientId = "";
string clientSecret = "1";
string tenantId = "";
IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithTenantId(tenantId)
.WithClientSecret(clientSecret) // or .WithCertificate(certificate)
.Build();
//AuthorizationCodeProvider authProvider = new AuthorizationCodeProvider(confidentialClientApplication, scopes);
ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication);
GraphServiceClient graphClient = new GraphServiceClient(authProvider);
var channel = new Channel
{
DisplayName = "Topic Discussion",
Description = "This channel is where we debate all future architecture plans",
MembershipType = ChannelMembershipType.Standard
};
await graphClient.Teams["{Your-teams-id}"].Channels
.Request()
.AddAsync(channel);
Комментарии:
1. Никакой радости. Я получаю новое, ужасно бесполезное исключение: внутренняя ошибка UnknownError: Дополнительные данные: дата: 2021-01-25T19:47:32 идентификатор запроса: ebc7b3f9-f553-4583-b239-5eaee8caa0d0 идентификатор запроса клиента: ebc7b3f9-f553-4583-b239-5eaee8caa0d0 Идентификатор клиента: ebc7b3f9-f553-4583-b239-5eaee8caa0d0 Есть какие-нибудь советы по отладке подобной ошибки?
2. @RichH: Можем ли мы подключиться по вызову, чтобы обсудить это? Пожалуйста, напишите нам по адресу microsoftteamsdev@microsoft.com