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

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

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

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


person Ilona Tag    schedule 13.06.2018    source источник
comment
Вы имеете в виду старые тикеты (начало 2017 года), которые закрыты (с решением). Можете ли вы добавить более подробную информацию о своей проблеме и добавить код, чтобы показать, где эта проблема?   -  person Nicolas R    schedule 14.06.2018
comment
Проблема в том, что в Teams ничего не происходит, когда вы нажимаете кнопку входа, которая предназначена для открытия диалогового окна аутентификации. Со стороны кода это просто вызов GetTokenDialog: private GetTokenDialog CreateGetTokenDialog() { return new GetTokenDialog(ConnectionName, $Please authentifiy for {ConnectionName}., Login, 2, Это не сработало — попробуйте еще раз!); } - так что я думаю, проблема должна быть исправлена ​​​​в коде этой функции   -  person Ilona Tag    schedule 15.06.2018
comment
Добавление примера кода проблемы может помочь получить ответ   -  person Nicolas R    schedule 15.06.2018
comment
Вызов GetTokenDialog (функция, предоставляемая в Microsoft.Bot.Builder.Dialogs) не работает при использовании MS Teams в качестве канала. Чтобы быть конкретным, щелчок по отображаемой кнопке входа не вызывает всплывающее окно отдельного диалога аутентификации, поскольку это происходит при использовании локального эмулятора: private GetTokenDialog CreateGetTokenDialog() { return new GetTokenDialog( ConnectionName, $"Please signin for {ConnectionName}.", "Login", 2, "Try again!"); }   -  person Ilona Tag    schedule 16.06.2018


Ответы (3)


Только что нашел причину, по которой он не будет работать с Teams. В методе 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 Teams, очевидно, не может работать с типом действия Signin. Надеюсь, разработчики MS скоро исправят этот метод.

person Ilona Tag    schedule 17.06.2018
comment
Где вы добавляете или используете новый CardAction? Я просто использую CreateOAuthReplyAsync. В эмуляторе это работает. Как упоминалось в первоначальном вопросе для Teams, это не так. Если бы вы могли любезно сообщить мне, где использовать CardAction. Спасибо. - person Franz Kiermaier; 13.09.2018

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

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

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

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

Эта часть выполнена, но вы еще не совсем закончили... в свой контроллер сообщений вам нужно добавить это, так как Teams отправляет подтверждение, отличное от других клиентов.

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

Мне понадобилось много ходить туда-сюда с Microsoft, чтобы разобраться с этим.

person FrankPrime    schedule 28.06.2018

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

person desflan    schedule 27.08.2018