Implantar o bot no Azure

aplica-se a: SDK v4

Este artigo demonstra como implantar um bot básico no Azure. Ele explica como preparar o bot para implantação, implantar o bot no Azure e testar o bot no bate-papo na Web. Leia este artigo antes de seguir as etapas, para que você entenda totalmente o que está envolvido na implantação de um bot.

Importante

Use a versão mais recente do CLI do Azure. Se você estiver usando uma versão CLI do Azure com mais de 2.2.0, poderá encontrar erros. Além disso, não misture a implantação de CLI do Azure mostrada neste artigo com portal do Azure implantação.

Pré-requisitos

Preparar para a implantação

Este artigo pressupõe que você tenha um bot pronto para implantação. Para obter informações sobre como criar um bot de eco simples, consulte criar um bot com o SDK do bot Framework. Você também pode usar um dos exemplos fornecidos no repositório de Amostras do Bot Framework.

Se você estiver implantando um C#, o bot verificará se ele foi criado no modo de liberação. No Visual Studio, verifique se a configuração da solução está definida como Versão e execute uma recompilação limpa da solução antes de continuar. A implantação poderá falhar se a configuração da solução estiver definida como depurar.

Quando você cria um bot, o código-fonte gerado inclui uma DeploymentTemplates pasta que contém modelos ARM. O processo de implantação documentado aqui usa um dos modelos ARM para provisionar os recursos necessários para o bot no Azure usando a CLI do Azure.

Observação

O pacote VSIX inclui as versões do .net Core 2,1 e do .net Core 3,1 dos modelos do C#. Ao criar bots no Visual Studio 2019, você deverá usar os modelos do .NET Core 3.1. As amostras de bot atuais usam modelos do .NET Core 3.1. Encontre as amostras que usam modelos do .NET Core 2.1 no branch 4.7-archive do repositório BotBuilder-Samples. Para obter informações sobre a implantação de bots do .NET Core 3,1 no Azure, consulte como implantar o bot no Azure.

Entrar no Azure

Depois de criar e testar um bot localmente, você poderá implantá-lo no Azure. Abra um prompt de comando para fazer logon no portal do Azure.

az login

Uma janela do navegador será aberta, permitindo que você entre.

Observação

Se você implantar o bot em uma nuvem que não é do Azure, como US Gov, precisará executar az cloud set --name <name-of-cloud> antes de az login, em que <name-of-cloud> é o nome de uma nuvem registrada, como AzureUSGovernment. Se você quiser voltar para a nuvem pública, poderá executar az cloud set --name AzureCloud.

Definir a assinatura

Defina a assinatura padrão que será usada.

az account set --subscription "<azure-subscription-id>"

Se você não tiver certeza de qual assinatura usar para implantar o bot, poderá exibir a lista de assinaturas de sua conta usando o az account list comando .

Criar o Registro do aplicativo

Nesta etapa, você criará um registro de aplicativo do Azure, que permitirá:

  • O usuário para interagir com o bot por meio de um conjunto de canais, como Webchat.

    Observação

    O Webchat é configurado por padrão. Se você quiser conectar seu bot a qualquer outro canal, será necessário executar as etapas de configuração relacionadas. Por exemplo, é assim que você Conexão um bot para Microsoft Teams.

  • A definição de Configurações de Conexão OAuth para autenticar um usuário e criar um token usado pelo bot para acessar recursos protegidos em nome do usuário.

Criar o registro de aplicativo do Azure

Para criar um registro de aplicativo do Azure, execute o seguinte comando:

az ad app create --display-name "displayName" --password "AtLeastSixteenCharacters_0" --available-to-other-tenants
Opção Descrição
nome de exibição O nome de exibição do aplicativo. Ele é listado no portal do Azure na lista de recursos gerais e no grupo de recursos ao qual ele pertence.
password A senha, também conhecida como segredo do cliente, para o aplicativo. Esta é uma senha que você cria para esse recurso. Ela deve ter pelo menos 16 caracteres, sendo pelo menos um caractere alfabético maiúsculo ou minúsculo e pelo menos um caractere especial.
disponível para outros locatários Indica se o aplicativo pode ser usado de qualquer locatário do Azure AD. Defina isso para habilitar o bot a trabalhar com os canais do Serviço de Bot do Azure.

Registrar os valores appId e appSecret

Copie e salve os valores appId e password. Você precisará deles na etapa de implantação do ARM.

Implantar usando um modelo do ARM

Ao criar o serviço de aplicativo de bot, você pode implantar o seu bot em um grupo de recursos novo ou existente, ambos por meio do modelo do ARM (Azure Resource Manager). Um modelo ARM é um arquivo JSON que define declarativamente um ou mais recursos do Azure e as dependências entre os recursos implantados. Verifique se você tem o caminho correto para o diretório de modelos de implantação do ARM do projeto de bot DeploymentTemplates, pois precisará dele para atribuir o valor ao arquivo de modelo. Escolha a opção que funciona melhor para você:

Importante

os bots do Python e do Java não podem ser implantados em um grupo de recursos que contenha serviços/bots de Windows. Vários bots do Python podem ser implantados no mesmo grupo de recursos, mas você precisa criar outros serviços (LUIS, QnA, etc.) em outro grupo de recursos.

Implantar por meio do modelo ARM com o novo grupo de recursos

Nesta etapa, você criará um serviço de aplicativo de bot que define a fase de implantação para o bot. Você usará um modelo ARM, um novo plano de serviço e um novo grupo de recursos. Execute o seguinte comando da CLI do Azure para iniciar uma implantação no escopo da assinatura de um arquivo de modelo local.

Dica

Use o modelo do ARM para um novo grupo de recursos, template-with-new-rg.json.

az deployment sub create --template-file "<path-to-template-with-new-rg.json" --location <region-location-name> --parameters appId="<app-id-from-previous-step>" appSecret="<password-from-previous-step>" botId="<id or bot-app-service-name>" botSku=F0 newAppServicePlanName="<new-service-plan-name>" newWebAppName="<bot-app-service-name>" groupName="<new-group-name>" groupLocation="<region-location-name>" newAppServicePlanLocation="<region-location-name>" --name "<bot-app-service-name>"

A conclusão dessa etapa pode levar alguns minutos.

Importante

O Registro de Canais de Bot e Bot do Aplicativo Web será preterido, mas os recursos existentes continuarão a funcionar. Os bots criados com uma versão 4.13.0 ou posterior gerarão um recurso de Bot do Azure.

Opção Descrição
name O nome da implantação.
arquivo de modelo O caminho para o modelo ARM. Normalmente, o arquivo template-with-new-rg.json é fornecido na pasta deploymentTemplates do projeto do bot. Este é um caminho para um arquivo de modelo existente. Pode ser um caminho absoluto ou relativo ao diretório atual. Todos os modelos de bot geram arquivos de modelo ARM.
local Local. Valores de: az account list-locations. Você pode configurar o local padrão usando az config set defaults.location=<location>.
parâmetros Parâmetros de implantação, fornecidos como uma lista de pares chave=valor. Insira os seguintes valores de parâmetro:
  • appId - O valor da ID do aplicativo da saída JSON gerada na etapa criar o registro do aplicativo.
  • appSecret – A senha fornecida na etapa criar o registro de aplicativo.
  • botId – um nome para o recurso de Registro de Canais do Bot a ser criado. Deve ser globalmente exclusivo. É usado como a ID do bot imutável. Também é usado como o nome de exibição padrão, que é mutável.
  • botSku – o tipo de preço e pode ser F0 (Gratuito) ou S1 (Standard).
  • newAppServicePlanName – o nome do novo plano do serviço de aplicativo.
  • newWebAppName – um nome para o serviço de aplicativo de bot.
  • groupName – um nome para o novo grupo de recursos.
  • groupLocation – o local do grupo de recursos do Azure.
  • newAppServicePlanLocation – o local do plano do serviço de aplicativo.

Implantar por meio do modelo ARM com grupo de recursos existente

Nesta etapa, você cria um serviço de aplicativo de bot que define o estágio de implantação para o bot. Ao usar um grupo de recursos existente, você pode empregar um plano do serviço de aplicativo existente ou criar um novo. Escolha a opção que funciona melhor para você:

A conclusão dessa etapa pode levar alguns minutos.

Importante

O Registro de Canais de Bot e Bot do Aplicativo Web será preterido, mas os recursos existentes continuarão a funcionar. Os bots criados com uma versão 4.13.0 ou posterior gerarão um recurso de Bot do Azure.

Opção 1: Plano do Serviço de Aplicativo existente

Nesse caso, estamos usando o Plano do Serviço de Aplicativo existente, mas criando um Aplicativo Web e um Registro de Canais de Bot.

O comando abaixo define a ID e o nome de exibição do bot. O parâmetro botId deve ser globalmente exclusivo e será usado como a ID imutável do bot. O nome de exibição do bot é mutável.

Dica

Use o modelo do ARM para um grupo de recursos existente,template-with-preexisting-rg.jsem.

az deployment group create --resource-group "<name-of-resource-group>" --template-file "<path-to-template-with-preexisting-rg.json>" --parameters appId="<app-id-from-previous-step>" appSecret="<password-from-previous-step>" botId="<id or bot-app-service-name>" newWebAppName="<bot-app-service-name>" existingAppServicePlan="<name-of-app-service-plan>" appServicePlanLocation="<region-location-name>" --name "<bot-app-service-name>"
Opção 2: Plano do Serviço de Aplicativo novo

Nesse caso, estamos criando o Plano do Serviço de Aplicativo, o Aplicativo Web e o Registro de Canais de Bot.

Dica

Use o modelo do ARM para um grupo de recursos existente,template-with-preexisting-rg.jsem.

az deployment group create --resource-group "<name-of-resource-group>" --template-file "<path-to-template-with-preexisting-rg.json>" --parameters appId="<app-id-from-previous-step>" appSecret="<password-from-previous-step>" botId="<id or bot-app-service-name>" newWebAppName="<bot-app-service-name>" newAppServicePlanName="<name-of-app-service-plan>" appServicePlanLocation="<region-location-name>" --name "<bot-app-service-name>"
Opção Descrição
name O nome da implantação.
resource-group Nome do grupo de recursos do Azure.
arquivo de modelo O caminho para o modelo ARM. Normalmente, o arquivo template-with-preexisting-rg.json é fornecido na pasta deploymentTemplates do projeto. Este é um caminho para um arquivo de modelo existente. Pode ser um caminho absoluto ou relativo ao diretório atual. Todos os modelos de bot geram arquivos de modelo ARM.
local Local. Valores de: az account list-locations. Você pode configurar o local padrão usando az config set defaults.location=<location>.
parâmetros Parâmetros de implantação, fornecidos como uma lista de pares chave=valor. Insira os seguintes valores de parâmetro:
  • appId - O appId valor gerado pela etapa criar o registro do aplicativo.
  • appSecret – A senha fornecida na etapa criar o registro de aplicativo.
  • botId – um nome para o recurso de Registro de Canais do Bot a ser criado. Deve ser globalmente exclusivo. É usado como a ID do bot imutável. Também é usado como o nome de exibição padrão, que é mutável.
  • newWebAppName – um nome para o serviço de aplicativo de bot.
  • newAppServicePlanName – um nome para o recurso do plano de serviço de aplicativo a ser criado.
  • appServicePlanLocation – o local do plano do serviço de aplicativo.

Preparar seu código para implantação

Atribuir ID do aplicativo e senha

Adicione a ID do aplicativo e a senha para o recurso de bot do Azure ao arquivo de configuração do projeto bot.

O appsettings.json arquivo contém estas configurações:

{
  "MicrosoftAppId": "<your app ID>",
  "MicrosoftAppPassword": "<your password>"
}

Importante

Depois de atualizar o arquivo de configuração, certifique-se de limpar e recriar o projeto bot.

Recuperar ou criar os arquivos IIS/Kudu necessários

É necessário preparar os arquivos de projeto para implantar o bot.

Verifique se você está na pasta do projeto do bot. Em seguida, prepare o código de bot para a implantação.

az bot prepare-deploy --lang Csharp --code-dir "." --proj-file-path "MyBot.csproj"

Você deve fornecer o caminho do arquivo .csproj relativo a --code-dir. Isso pode ser feito por meio do argumento --proj-file-path. O comando resolveria --code-dir e --proj-file-path para "./MyBot.csproj".

Esse comando gera um arquivo .deployment na pasta do projeto do bot.

Compacte o diretório de código manualmente

Com o uso da API de implantação de zip não configurada para implantar o código de seu bot, o comportamento do Aplicativo Web/Kudu será o seguinte:

O Kudu assume por padrão que as implantações de arquivos .zip estão prontas para serem executados e não exigem etapas de build adicionais durante a implantação, como instalação npm ou dotnet restore/dotnet publish.

É importante incluir seu código criado com todas as dependências necessárias no arquivo zip que está sendo implantado, caso contrário, o bot não funcionará conforme o esperado. Para obter mais informações, consulte a documentação do Azure sobre como implantar arquivos no Serviço de Aplicativo.

Importante

Antes de zipar os arquivos do projeto, verifique se você está na pasta do projeto do bot.

  • Para bots C#, é a pasta que tem o arquivo .csproj.
  • Para bots JavaScript, é a pasta que tem o arquivo app.js ou index.js.
  • Para bots typeScript, é a pasta que inclui a pasta src (onde estão os arquivos bot.ts e index.ts).
  • Para bots python, é a pasta que tem o arquivo app.py aplicativo.

Dentro da pasta do projeto, certifique-se de selecionar todos os arquivos e pastas antes de executar o comando para criar o arquivo zip. Isso criará um arquivo zip na pasta do projeto. Se o local da pasta raiz estiver incorreto, o bot não será executado no portal do Azure.

Implantar o bot no Azure

Neste ponto, estamos prontos para implantar o código no Aplicativo Web do Azure.

Execute o seguinte comando na linha de comando para executar a implantação usando o serviço de implantação de zip por push do kudu para um aplicativo web.

az webapp deployment source config-zip --resource-group "<resource-group-name>" --name "<name-of-web-app>" --src "<project-zip-path>"
Opção Descrição
resource-group O nome do grupo de recursos do Azure que contém o bot.
name Nome do Aplicativo Web que você usou anteriormente.
src O caminho para o arquivo de projeto compactado que você criou.

Observação

A conclusão dessa etapa pode levar alguns minutos. Além disso, pode levar mais alguns minutos entre a conclusão da implantação e a disponibilidade do bot para teste.

Testar no Webchat

  1. Em seu navegador, navegue até o portal do Azure.
  2. No painel esquerdo, clique em Grupos de recursos.
  3. No painel direito, pesquise por seu grupo.
  4. Clique no nome do grupo.
  5. Clique no link do registro de canais de bot.
  6. No painel Registro de Canais de Bot, clique em Testar no Webchat. Como alternativa, no painel direito, clique na caixa Teste.

Para obter mais informações sobre o registro de canais do bot, confira registrar um bot com o Serviço de Bot.

Informações adicionais

Implantar seu bot no Azure envolve pagar pelos serviços que você usa. O artigo gerenciamento de cobrança e custos ajuda você a entender sua cobrança do Azure, monitorar o uso e os custos, e gerenciar sua conta e assinaturas. Consulte também documentação da CLI (interface de Command-Line do Azure) e notas de versão do CLI do Azure.

Próximas etapas