Приложение Bot Framework SDK Python не работает с UserAssignedMSI, но работает с MultiTenant в AzurePython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Приложение Bot Framework SDK Python не работает с UserAssignedMSI, но работает с MultiTenant в Azure

Сообщение Anonymous »

У меня есть бот-приложение, созданное с помощью Bot Framework SDK на Python, которое отлично работает с MicrosoftAppType: MultiTenant. Однако когда я пытаюсь настроить его для использования MicrosoftAppType: UserAssignedMSI, боту не удается подключиться при тестировании с помощью функции «Тестирование в веб-чате» службы Azure Bot.
Подробности настройки:
Мой код развернут в веб-приложении Azure.
Я использую службу Azure Bot для подключения к боту.
Установка отлично работает с MicrosoftAppType: MultiTenant.
Я не могу использовать MultiTenant или SingleTenant в качестве опции для MicrosoftAppType из-за особых требований.
Я столкнулся с проблемами, особенно с MicrosoftAppType: UserAssignedMSI.
Я уже добавил идентификатор пользователя в раздел «Идентификация» веб-приложения Azure при настройке UserAssignedMSI.
/>Я включил ниже фрагменты кода для app.py и config.py. Мне нужна помощь, чтобы понять, почему эта проблема возникает с UserAssignedMSI и как ее исправить. Также приветствуются любые предложения по альтернативным решениям.
app.py

Код: Выделить всё

# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.

import sys
import traceback
from datetime import datetime
from http import HTTPStatus

from aiohttp import web
from aiohttp.web import Request, Response, json_response
from botbuilder.core import (
TurnContext,
)
from botbuilder.core.integration import aiohttp_error_middleware
from botbuilder.integration.aiohttp import CloudAdapter, ConfigurationBotFrameworkAuthentication
from botbuilder.schema import Activity, ActivityTypes

from bots import EchoBot
from config import DefaultConfig

CONFIG = DefaultConfig()

# Create adapter.
# See https://aka.ms/about-bot-adapter to learn more about how bots work.
ADAPTER = CloudAdapter(ConfigurationBotFrameworkAuthentication(CONFIG))

# Catch-all for errors.
async def on_error(context: TurnContext, error: Exception):
# This check writes out errors to console log .vs. app insights.
# NOTE: In production environment, you should consider logging this to Azure
#       application insights.
print(f"\n [on_turn_error] unhandled error: {error}", file=sys.stderr)
traceback.print_exc()

# Send a message to the user
await context.send_activity("The bot encountered an error or bug.")
await context.send_activity(
"To continue to run this bot, please fix the bot source code."
)
# Send a trace activity if we're talking to the Bot Framework Emulator
if context.activity.channel_id == "emulator":
# Create a trace activity that contains the error object
trace_activity = Activity(
label="TurnError",
name="on_turn_error Trace",
timestamp=datetime.utcnow(),
type=ActivityTypes.trace,
value=f"{error}",
value_type="https://www.botframework.com/schemas/error",
)
# Send a trace activity, which will be displayed in Bot Framework Emulator
await context.send_activity(trace_activity)

ADAPTER.on_turn_error = on_error

# Create the Bot
BOT = EchoBot()

# Listen for incoming requests on /api/messages
async def messages(req: Request) -> Response:
return await ADAPTER.process(req, BOT)

APP = web.Application(middlewares=[aiohttp_error_middleware])
APP.router.add_post("/api/messages", messages)

if __name__ == "__main__":
try:
web.run_app(APP, host="localhost", port=CONFIG.PORT)
except Exception as error:
raise error

config.py

Код: Выделить всё

import os

""" Bot Configuration """

class DefaultConfig:
""" Bot Configuration """

PORT = 3978
APP_ID = os.environ.get("MicrosoftAppId", "MyMicrosoftAppId")
APP_PASSWORD = os.environ.get("MicrosoftAppPassword", "")
APP_TYPE = os.environ.get("MicrosoftAppType", "UserAssignedMSI")
APP_TENANTID = os.environ.get("MicrosoftAppTenantId", "MyMicrosoftAppTenantId")
Настроенная настройка MultiTenant:
Изначально я настроил бот с помощью MicrosoftAppType: MultiTenant, и он отлично работал при тестировании в «Тестировании» службы Azure Bot. Веб-чат». Бот ответил, как и ожидалось, указав на успешное соединение и аутентификацию.
Перешел на UserAssignedMSI:
Я изменил конфигурацию, чтобы использовать MicrosoftAppType: UserAssignedMSI для удовлетворения конкретных требований. Я добавил идентификатор пользователя в раздел «Идентификация» веб-приложения Azure и убедился, что UserAssignedMSI правильно настроен в Azure.
Ожидаемый результат:
Я ожидал, что бот подключится и пройдет аутентификацию. правильно использовать UserAssignedMSI, аналогично тому, как он работал с MultiTenant, и правильно реагировать при тестировании с помощью функции «Тестирование в веб-чате».
Фактический результат:
Бот не может подключайтесь или аутентифицируйтесь при использовании UserAssignedMSI, и я не вижу каких-либо подробных сообщений об ошибках, которые могли бы помочь диагностировать проблему.
Я не уверен, пропустил ли я какие-то шаги по настройке, специфичные для UserAssignedMSI, или требуются ли дополнительные разрешения. Любая помощь в решении этой проблемы или альтернативные предложения по использованию UserAssignedMSI будут высоко оценены.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -multitena
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»