Цель — получить токен доступа пользователя из входящего запроса (токен, включенный в заголовок, когда пользователь отправляет сообщение). для выполнения внешнего вызова API. Однако только объект TurnContext доступен в методах on_turn или on_message_activity ActivityHandler.
В app.py метод маршрутизации для /api/messages следующий:
Код: Выделить всё
# bot_framework_adapter and activity_handler are initialized at the global level
async def messages(req: Request) -> Response:
# .. some other logic
auth_token = req.headers.get("Authorization", "")
response = await bot_framework_adapter.process_activity(activity, auth_token, activity_handler.on_turn)
Мое приложение почти реализует приведенный выше образец ссылки, за исключением on_message_activity в BOT/ActivityHandler.
В настоящее время я переопределил process_activity иprocess_activity_with_identity в классе BotFrameworkAdapter в моем расширенном классе и добавил новую пару ключ-значение для этого auth_token в словаре context.turn_state.
Но возможно ли получить доступ/реконструировать этот auth_token в методах ActivityHandler (возможно, используя объект TurnContext), или есть ли Рекомендуемый обходной путь для выполнения внешнего вызова API с той же авторизацией пользователя, которая использовалась для бота?
Примечание. Я использую этого бота через приложение Microsoft Teams с помощью службы Azure Bot. Итак, auth_token, о котором я говорил ранее, — это токен, отправляемый из приложения Teams.
Примечание. SDK botframework выводится из эксплуатации, но у меня уже есть несколько ботов, в производстве. На данный момент я ищу быстрое решение/обходной путь, если это возможно.
Заранее спасибо.
Подробнее здесь: https://stackoverflow.com/questions/792 ... python-sdk
Мобильная версия