Есть ли способ полностью автоматизировать Azure Bot на основе QnAMaker с помощью шаблона ARM?

Я ищу решение, в котором я смогу полностью создать и настроить Azure Bot с помощью шаблона ARM (он должен включать создание ресурсов, КБ и бота веб-приложения)

  • У меня есть шаблон ARM, который создает/автоматизирует требуемые Cognitive Service, App Service, App Insight и службу поиска на портале.
  • Созданные службы правильно настроены, и все параметры приложения являются динамическими с правильной ссылкой.
  • Следующим шагом является создание базы знаний с помощью некоторого автоматизированного сценария (предпочтительно PowerShell) в рамках того же выполнения, хотя есть сценарий, доступный для создания базы знаний, но я не уверен, как мы можем получить последний созданный ключ OCP APIM и использовать его для создания база знаний.

Мой вопрос:

Можем ли мы как-то полностью автоматизировать

  1. Создание ресурсов
  2. создание базы знаний
  3. Создание бота веб-приложения

В рамках одного скрипта автоматизации поскольку они взаимозависимы (KB на службах, Web App Bot на KB), я едва ли нашел подходящую статью для достижения этой цели.

Спасибо.


2
492
1

Ответ:

Решено

Создайте базу знаний с помощью службы QnAMaker, развернутой через ARM . Наши готовые шаблоны ARM доступны здесь : https://github.com/Azure/azure-quickstart-templates. Ниже ключи конечной точки вставлены в конфигурацию приложения службы приложений qna maker.

{
            "type": "Microsoft.Web/sites",
            "apiVersion": "2016-08-01",
            "name": "[variables('qnaMakerWebName')]",
            "location": "[resourceGroup().location]",
            "properties": {
                "enabled": true,
                "httpsOnly": true,
                "siteConfig": {
                    "cors": {
                        "allowedOrigins": []                                                   
                    }
                },
                "name": "[toLower(variables('qnaMakerWebName'))]",
                "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('serverFarmName'))]",
                "hostingEnvironment": ""
            },
            "tags": {
                "isqnamaker": "true",
                "solution": "[parameters('resourceSolutionTag')]",
                "[concat('hidden-related:', resourceId('Microsoft.Web/serverfarms', variables('serverFarmName')))]": "empty"
            },
            "dependsOn": [
                "[resourceId('Microsoft.Web/serverfarms', variables('serverFarmName'))]",
                "[resourceId('microsoft.insights/components', variables('appInsightsName'))]",
                "[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]"
            ],
            "resources": [
                {
                    "apiVersion": "2015-08-01",
                    "name": "appsettings",
                    "type": "config",
                    "dependsOn": [
                        "[resourceId('Microsoft.Web/Sites', variables('qnaMakerWebName'))]",
                        "[resourceId('Microsoft.Search/searchServices/', variables('azureSearchName'))]",
                        "[resourceId('microsoft.insights/components', variables('appInsightsName'))]"
                    ],
                    "properties": {
                        "AzureSearchName": "[variables('azureSearchName')]",
                        "AzureSearchAdminKey": "[listAdminKeys(resourceId('Microsoft.Search/searchServices/', variables('azureSearchName')), '2015-08-19').primaryKey]",
                        "UserAppInsightsKey": "[reference(resourceId('microsoft.insights/components/', variables('appInsightsName')), '2015-05-01').InstrumentationKey]",
                        "UserAppInsightsName": "[variables('appInsightsName')]",
                        "UserAppInsightsAppId": "[reference(resourceId('microsoft.insights/components/', variables('appInsightsName')), '2015-05-01').AppId]",
                        "PrimaryEndpointKey": "[concat(variables('qnaMakerWebName'), '-PrimaryEndpointKey')]",
                        "SecondaryEndpointKey": "[concat(variables('qnaMakerWebName'), '-SecondaryEndpointKey')]",
                        "DefaultAnswer": "No good match found in KB.",
                        "QNAMAKER_EXTENSION_VERSION": "latest"
                    }
                },
                {
                    "apiVersion": "2018-02-01",
                    "type": "config",
                    "name": "logs",
                    "dependsOn": [
                        "[resourceId('Microsoft.Web/Sites', variables('qnaMakerWebName'))]"
                    ],
                    "properties": {
                        "applicationLogs": {
                            "fileSystem": {
                                "level": "Warning",
                                "retentionInDays": 7
                            },
                            "azureBlobStorage": {
                                "level": "Verbose",
                                "sasUrl": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob, parameters('storageAccountContainerQnaAppLog'), '?', listAccountSas(variables('storageAccountName'), '2018-02-01', variables('listAccountSasRequestContent')).accountSasToken)]",
                                "retentionInDays": 7
                            }
                        },
                        "httpLogs": {
                            "fileSystem": {
                                "retentionInMb": 35,
                                "retentionInDays": 7,
                                "enabled": false
                            },
                            "azureBlobStorage": {
                                "enabled": true,
                                "sasUrl": "[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob, parameters('storageAccountContainerQnaWebLog'), '?', listAccountSas(variables('storageAccountName'), '2018-02-01', variables('listAccountSasRequestContent')).accountSasToken)]",
                                "retentionInDays": 7
                            }
                        },
                        "detailedErrorMessages": {
                            "enabled": true
                        }
                    }
                }
            ]
        }

Bot Framework Виртуальный помощник — это ускоритель решений, который объединяет общие функции, сервисы и лучшие практики Bot Framework в легко развертываемый пакет, который затем можно настроить в соответствии с потребностями клиента. Виртуальный помощник создан на основе пакета SDK для Bot Framework и развертывается в рамках подписки Azure разработчика на Azure Bot Service, при этом все данные, созданные помощником (задаваемые вопросы, поведение пользователя и т. д.), полностью находятся под контролем клиента.

Основные компоненты виртуального помощника включают в себя:

Проект Visual Studio с кодом, диалоговыми окнами и средствами генерации языка

Настраиваемые сценарии развертывания в ARM и PowerShell

Автоматическое предоставление и настройка зависимых сервисов (LUIS, QnA, Storage, Compute и т. д.)

Подключаемые навыки для известных сценариев, таких как разговорное использование ресурсов данных Microsoft Graph и Bing.


Интересные вопросы для изучения

Проблема с корневым владельцем учетной записи Azure (каким-то образом измененная, и у меня нет доступа). Как я могу сделать уборку?Ошибка Azure DMS (PostgreSQL в Azure PostgreSQL: невозможно выбрать таблицы исходной базы данных при выполнении DMSПо ошибке работал в чужой ветке из моей команды в Azure Devops. Запутался в отношении отправки моих изменений на серверУправление жизненным циклом хранилища BLOB-объектов Azure — фильтрация по папкеПодключение к базе данных Cosmos по частной ссылке из службы приложений AzureКак получить идентификатор пользователя с помощью идентификатора электронной почты в командах с использованием pythonПолучение ошибок после добавления бота в TeamsБот Microsoft Teams: карточка с Action.OpenUrl и ссылкой на заданиеКак использовать ConversationBot от @microosft/teamsfx и EventHandler от botbuiler в приложении Microsoft TeamКак отправить сообщение в поток (ответить) с помощью Bot Framework SDK 4.18 Teams