Что я пытаюсь сделать?
Я пытаюсь показать пользователю карту OAuth для входа в систему и получить токен доступа JWT, чтобы я мог использовать его для выдачи себя за другое лицо его/ее в моем боте Teams. Конфигурации приложения и бот были настроены точно согласно следующей ссылке. https://learn.microsoft.com/en-us/micro ... ots/how-to /authentication/add-authentication?tabs=python%2Cpython-sample
Текущее состояние
Я не использую функцию диалогов SDK, а скорее , я отправляю карту OAuth напрямую следующим образом.
Каждый раз, когда появляется сообщение (on_message_activity), я проверяю, есть ли у объекта Turn_context токен для принятия решения об отправке новой карты входа. например следующее
async def get_token(self, turn_context: TurnContext):
# Try to get the token from the token exchange or from a prior sign-in
token_response = None
# Check if the activity contains a token response
if turn_context.activity.value and "token" in turn_context.activity.value:
token_response = TokenResponse(token=turn_context.activity.value["token"])
if not token_response:
# If no token in the activity, try to retrieve it from the OAuth connection
token_response = await turn_context.adapter.get_user_token(turn_context, self.connection_name)
return token_response
Карта отлично работает в эмуляторе, как показано ниже, и в веб-чате из интерфейса Azure Bot.
Он не работает ни в Teams, ни в Desktop Client, ни в веб-клиенте. Выдает следующую ошибку.
Что я уже пробовал
Я пробовал добавить *.botframwework.com, token.botframework.com, свой экземпляр ngrok url иgraph.microsoft.com в список действительных доменов, поскольку я читал их в различных статьях поддержки.
Я попробовал трижды проверить свои регистрации приложений и их конфигурации, если они были настроено правильно.
Я попробовал создать ссылку для входа вручную, но не смог понять, как создается ссылка OAuth. Я заметил, что каждый раз, когда создается новая ссылка, она принимает вид https://token.botframework.com/api/oaut ... n=some_ids
Я также прочитал много сообщения, в которых говорится о некотором ожидании (4 часа), прежде чем изменения в манифесте приложения фактически отразятся в Teams. (К сожалению, проблема не в этом).
Я пробовал проверять трафик на своем экземпляре ngrok, когда нажимал кнопку входа в команды. Никакой активности нет.
Честно говоря, я готов дать дальнейшие указания для моего расследования. У меня закончились идеи, и я решил опубликовать здесь вопрос (в надежде, что он не будет помечен как дубликат), чтобы помочь мне решить эту ошибку.
Кстати, я использую пакет botbuilder-integration-aiohttp==4.15.0.
Обновление 1
Кажется в том случае, если карта OAuth не вызывает никаких событий при нажатии в MS Teams. Я попытался изменить ACtivityHandler на TeamsActivityHandler. Я ожидал бы ошибку «НЕ РЕАЛИЗОВАНО», по крайней мере, в консоли, но это не так.
Я пытался настроить точки останова после переопределения on_turn, on_teams_signin_verify_state, on_teams_action_card_invoke и даже on_event, но они не срабатывают, когда я нажимаю кнопку «Войти» из команд. Это заставляет меня поверить в отсутствие поддержки отправки OAuthCard за пределами парадигмы диалогов.
Что я пытаюсь сделать? Я пытаюсь показать пользователю карту OAuth для входа в систему и получить токен доступа JWT, чтобы я мог использовать его для выдачи себя за другое лицо его/ее в моем боте Teams. Конфигурации приложения и бот были настроены точно согласно следующей ссылке. https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to /authentication/add-authentication?tabs=python%2Cpython-sample Текущее состояние Я не использую функцию диалогов SDK, а скорее , я отправляю карту OAuth напрямую следующим образом. [code] async def dispatch_signin_card(self, turn_context): oauth_card = OAuthCard( text="Sign in to continue", connection_name=self.connection_name, buttons=[ CardAction( type=ActionTypes.signin, title="Sign in" ) ] )
await turn_context.send_activity( Activity(attachments=[CardFactory.oauth_card(oauth_card)])) [/code] Каждый раз, когда появляется сообщение (on_message_activity), я проверяю, есть ли у объекта Turn_context токен для принятия решения об отправке новой карты входа. например следующее [code] async def get_token(self, turn_context: TurnContext): # Try to get the token from the token exchange or from a prior sign-in token_response = None
# Check if the activity contains a token response if turn_context.activity.value and "token" in turn_context.activity.value: token_response = TokenResponse(token=turn_context.activity.value["token"])
if not token_response: # If no token in the activity, try to retrieve it from the OAuth connection token_response = await turn_context.adapter.get_user_token(turn_context, self.connection_name)
return token_response [/code] Карта отлично работает в эмуляторе, как показано ниже, и в веб-чате из интерфейса Azure Bot. [img]https://i.sstatic.net/kezt6db8.png[/img]
Он не работает ни в Teams, ни в Desktop Client, ни в веб-клиенте. Выдает следующую ошибку. [img]https://i.sstatic.net/ys9hWJ0w.png[/img]
Что я уже пробовал [list] [*]Я пробовал добавить *.botframwework.com, token.botframework.com, свой экземпляр ngrok url иgraph.microsoft.com в список действительных доменов, поскольку я читал их в различных статьях поддержки. [*]Я попробовал трижды проверить свои регистрации приложений и их конфигурации, если они были настроено правильно. [*]Я попробовал создать ссылку для входа вручную, но не смог понять, как создается ссылка OAuth. Я заметил, что каждый раз, когда создается новая ссылка, она принимает вид https://token.botframework.com/api/oauth/signin?signin=some_ids [*]Я также прочитал много сообщения, в которых говорится о некотором ожидании (4 часа), прежде чем изменения в манифесте приложения фактически отразятся в Teams. (К сожалению, проблема не в этом). [*]Я пробовал проверять трафик на своем экземпляре ngrok, когда нажимал кнопку входа в команды. Никакой активности нет. [/list] [b]Честно говоря, я готов дать дальнейшие указания для моего расследования. У меня закончились идеи, и я решил опубликовать здесь вопрос (в надежде, что он не будет помечен как дубликат), чтобы помочь мне решить эту ошибку.[/b] Кстати, я использую пакет botbuilder-integration-aiohttp==4.15.0. Обновление 1 [list] [*]Кажется в том случае, если карта OAuth не вызывает никаких событий при нажатии в MS Teams. Я попытался изменить ACtivityHandler на TeamsActivityHandler. Я ожидал бы ошибку «НЕ РЕАЛИЗОВАНО», по крайней мере, в консоли, но это не так. [*]Я пытался настроить точки останова после переопределения on_turn, on_teams_signin_verify_state, on_teams_action_card_invoke и даже on_event, но они не срабатывают, когда я нажимаю кнопку «Войти» из команд. Это заставляет меня поверить в отсутствие поддержки отправки OAuthCard за пределами парадигмы диалогов. [/list]
Что я пытаюсь сделать?
Я пытаюсь показать пользователю карту OAuth для входа в систему и получить токен доступа JWT, чтобы я мог использовать его для выдачи себя за другое лицо его/ее в моем боте Teams. Конфигурации приложения и бот были настроены...
Я создал бота через MS Teams. Я зарегистрировал бота на портале MS Bot Framework, а затем создал приложение, подключенное к этому боту в Teams.
Я могу общаться со своим ботом, и он отвечает без проблем. Однако это не работает, когда я пытаюсь...
Почему возникает ошибка в приведенном ниже коде? Это ошибка MSoft?:
LINE 57: 400 {'error': {'code': 'BadRequest', 'message': В запросе отсутствует поле '[email protected]'. , 'innerError': {'date': '2024-11-13T00:25:07', 'request-id':...
Я использую генератор OpenAPI (7.8.0-SNAPSHOT с библиотекой RestSharp) для создания клиента C# для API-интерфейса rest, развернутого в Azure, который использует OAuth для предоставления доступа и авторизации.
Теперь объект конфигурации, который...