Использование команд MS в качестве канала: диалог аутентификации (класс GetTokenDialog из Microsoft.Bot.Builder.Dialogs) не появляется

Как я могу использовать новую функцию аутентификации в Bot Builder с командами MS?

Кажется, есть проблема с командами (см. Вход пользователя с ботом MS Teams или https://github.com/Microsoft/BotBuilder/issues/2104), кажется, если это не учитывается в GetTokenDialog?

Есть ли шанс обойти это?

3 ответа

Есть несколько вещей, которые нужно сделать, чтобы заставить это работать. Сначала вам нужно создать файл манифеста для вашего бота в командах и белый список token.botframework.com. Это первая проблема.

Из самой команды в AppStudio вы создаете Манифест. Мне пришлось немного поиграться с этим. В AppDetails... Пусть он генерирует новый идентификатор. Просто нажмите кнопку. URL действительно не имеют большого значения для тестирования. Имя пакета просто должно быть уникальным, поэтому что-то вроде com.ilonatag.teams.test

В разделе ботов вы подключаете свой MS AppId и имя бота. Это настоящий MSAPPID из ваших ботов. MicrosoftAppId" value=" из web.config в вашем коде.

Хорошо, теперь в "finish->valid domains" я добавил token.botframework.com, а также URL-адрес моего бота на всякий случай. так что-то вроде franktest.azurewebsites.net

Эта часть выполнена, но вы еще не сделали этого... в вашем контроллере сообщений вам нужно добавить это, так как Команды посылают другую проверку, чем другие клиенты.

if (message.Type == ActivityTypes.Invoke)
{
                // Send teams Invoke along to the Dialog stack
                if (message.IsTeamsVerificationInvoke())
                {
                    await Conversation.SendAsync(message, () => new Dialogs.RootDialog());
                }
}

Мне потребовалось много времени, чтобы разобраться с Microsoft.

Просто нашел причину, почему это не будет работать с командами. В методе Microsoft.Bot.Connector.Activity.CreateOAuthReplyAsync() параметр asSignInCard должен быть установлен в True для MSTeams, затем строка new CardAction() { Title = buttonLabel, Value = link, Type = ActionTypes.Signin } должен быть изменен на new CardAction() { Title = buttonLabel, Value = link, Type = ActionTypes.OpenUrl } потому что команды MS, очевидно, не могут иметь дело с типом действия Signin. Надеюсь, разработчики MS скоро исправят этот метод.

Это известная проблема с использованием OAuthCard в командах MS. Чтобы решить эту проблему, вы можете изменить Button ActionType с signIn на openUrl, используя это решение на github.

Другие вопросы по тегам