Использование команд 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.