Provisionar recursos de nuvem no Microsoft Visual Studio

O TeamsFx se integra ao Azure e à nuvem Microsoft 365, o que permite colocar seu aplicativo no Azure com um único comando. O TeamsFx se integra ao Azure Resource Manager (ARM), que permite provisionar Azure recursos de que seu aplicativo precisa para a abordagem de código.

Entrar na sua conta do Azure

  1. Abra o Visual Studio.

  2. Abra o Microsoft 365 Agents.

  3. Selecione Project>Microsoft 365 Agents Toolkit>provisionar na nuvem.

    A captura de tela mostra o login na conta do Azure.

  4. Selecione Entrar....

    A captura de tela mostra a entrada na conta do Azure.

    Observação

    Se você já estiver conectado, seu nome de usuário será exibido ou você tem uma opção para Adicionar uma conta.

    Depois de entrar na sua conta do Azure usando suas credenciais, o navegador fechará automaticamente.

Provisionar recursos de nuvem

Depois de abrir seu projeto no Visual Studio, para provisionar recursos na nuvem, siga estas etapas:

  1. Selecionar Projeto>Microsoft 365 Agents Toolkit>Provisionar na nuvem....

    A captura de tela mostra como provisionar na nuvem.

    A janela Provisionar é exibida.

  2. Insira os seguintes detalhes para provisionar seus recursos:

    1. Selecione o Nome da sua assinatura no menu suspenso.
    2. Selecione seu Grupo de recursos no menu suspenso ou você pode criar um novo Grupo de recursos selecionando Novo....
    3. Selecione sua região no menu suspenso.
    4. Selecione Provisionar.

    A captura de tela mostra a seleção do grupo de recursos.

  3. Na janela pop-up exibida, selecione Provisionar.

    A captura de tela mostra o aviso de provisão.

    O processo de provisionamento cria recursos na nuvem do Azure. Você pode monitorar o progresso observando a janela de saída do Microsoft 365 Agents Toolkit (anteriormente conhecido como Teams Toolkit).

  4. Na janela pop-up exibida, para exibir todos os recursos provisionados, selecione Exibir recursos provisionados.

    A captura de tela mostra os recursos provisionados.

Provisionar ações

As seguintes ações são projetadas para provisionamento:

teamsApp/create

Se a variável de ambiente que armazena a ID do aplicativo Teams estiver vazia ou a ID do aplicativo não for encontrada no Portal do Desenvolvedor do Teams, a teamsApp/create ação criará um novo aplicativo Teams. Ele opera no aplicativo Teams no Portal do Desenvolvedor do Teams.

  - uses: teamsApp/create
    with: 
      # #required. Name of Teams app
      name: <your-preferred-app-name>
      # Write the information of created resources into environment file for the specified environment variable(s).
    writeToEnvironmentFile:
      # The id for Teams app
      teamsAppId: <your-preferred-env-var-name>

teamsApp/update

Quando você aplica o manifesto do aplicativo Teams a um aplicativo existente do Teams no Portal do Desenvolvedor do Teams. teamsApp/update usa a ID do aplicativo em manifest.json arquivo para determinar qual aplicativo do Teams atualizar. Ele opera no aplicativo Teams no Portal do Desenvolvedor do Teams.

- uses: teamsApp/update
    with:
      # Required. Relative path to the yaml file. This is the path for built zip file.
      appPackagePath: <path-to-teams-app-package-file>

teamsApp/validateManifest

A teamsApp/validateManifest ação renderiza o modelo de manifesto do aplicativo do Teams com variáveis de ambiente e valida o arquivo de manifesto do aplicativo do Teams usando seu esquema.

- uses: teamsApp/validateManifest
    with:
      # Required. Relative path to the yaml file. Path to Teams app manifest file
    manifestPath: <path-to-manifest-file>

teamsApp/validateAppPackage

A teamsApp/validateAppPackage ação valida o pacote de aplicativos do Teams usando regras de validação.

  - uses: teamsApp/validateAppPackage
      with:
      # Required. Relative path to the yaml file. This is the path for built zip file.
    appPackagePath: <path-to-teams-app-package-file>

teamsApp/zipAppPackage

A teamsApp/zipAppPackage ação renderiza o modelo de manifesto do aplicativo do Teams com variáveis de ambiente e compacta o arquivo de manifesto com dois ícones em um arquivo zip.

- uses: teamsApp/zipAppPackage
    with:
      # Required. Relative path to the yaml file. This is the path for Teams app manifest file. Environment variables in manifest will be replaced before apply to Microsoft Entra app.
    manifestPath: <path-to-manifest-file>
      # Required. Relative path to the yaml file. This is the path for built zip file.
    outputZipPath: <path-to-generated-zip-file>
      # Required. Relative path to the yaml file. This is the path for built manifest json file.
    outputJsonPath: <path-to-generated-json-file>

teamsApp/publishAppPackage

A teamsApp/publishAppPackage ação publica o arquivo zip do aplicativo do Teams criado no catálogo de aplicativos do locatário. Ele opera no catálogo de aplicativos de locatário do Microsoft 365.

- uses: teamsApp/publishAppPackage
    with:
      # Required. Relative path to this file. This is the path for built zip file.
    appPackagePath: <path-to-teams-app-package>
    # Write the information of created resources into environment file for the specified environment variable(s).
    writeToEnvironmentFile:
      # The Teams app id in tenant app catalog.
    publishedAppId: <your-preferred-env-var-name>

aadApp/create

A aadApp/create ação cria um novo aplicativo do Microsoft Entra para autenticar usuários se a variável de ambiente que armazena o clientId estiver vazia. Ele opera no Microsoft Entra ID no locatário do Microsoft 365.

- uses: aadApp/create
    with:
      # Required. The Microsoft Entra app's display name. When you run aadApp/update, the Microsoft Entra app name will be updated based on the definition in manifest. If you don't want to change the name, make sure the name in Microsoft Entra app manifest is the same with the name defined here.
      name: <your-application-name>
      # Required. If the value is false, the action will not generate client secret for you
      generateClientSecret: true
      # Required. Specifies what Microsoft accounts are supported for the current application. Supported values are: `AzureADMyOrg`, `AzureADMultipleOrgs`, `AzureADandPersonalMicrosoftAccount`, `PersonalMicrosoftAccount`.
      signInAudience: "AzureADMyOrg"
    # Write the information of created resources into environment file for the specified environment variable(s).
    writeToEnvironmentFile:
      # Required. The client (application) ID of Microsoft Entra application. The action will refer the environment variable defined here to determine whether to create a new Microsoft Entra app.
      clientId: <your-preferred-env-var-name>
      # Required when `generateClientSecret` is `true`. The action will refer the environment variable defined here to determine whether to create a new client secret. It's recommended to add `SECRET_` prefix to the environment variable name so it will be stored to the .env.{envName}.user environment file.
      clientSecret: <your-preferred-env-var-name>
      # Required. The object ID of Microsoft Entra application
      objectId: <your-preferred-env-var-name>
      # Optional. The tenant ID of Microsoft Entra tenant
      tenantId: <your-preferred-env-var-name>
      # Optional. The Microsoft Entra authority
      authority: <your-preferred-env-var-name>
      # Optional. The host name of Microsoft Entra authority
      authorityHost: <your-preferred-env-var-name>

aadApp/update

aadApp/updateatualiza seu aplicativo Microsoft Entra com base no manifesto do aplicativo Microsoft Entra. Refere-se à propriedade ID no manifesto do aplicativo Microsoft Entra para determinar qual aplicativo do Microsoft Entra atualizar. O aadApp/update opera no Microsoft Entra ID em seu locatário do Microsoft 365.

- uses: aadApp/update
    with:
      # Required. Relative path to the yaml file. Path to the Microsoft Entra app manifest. Environment variables in manifest will be replaced before apply to Microsoft Entra app.
      manifestPath: <path-to-manifest-file>
      # Required. Relative path to the yaml folder. This action will output the final Microsoft Entra app manifest used to update Microsoft Entra app to this path.
      outputFilePath : <path-to-output-file>

botAadApp/create

A botAadApp/create ação cria um novo aplicativo do Microsoft Entra para bot ou reutiliza um existente. Ele opera no Microsoft Entra ID no locatário do Microsoft 365.

- uses: botAadApp/create
    with:
      # Required. The Microsoft Entra app's display name
      name: <your-app-name>
    writeToEnvironmentFile:
      # The Microsoft Entra app's client id created for bot.
      botId: <your-preferred-env-var-name>
      # The Microsoft Entra app's client secret created for bot. 
      botPassword: <your-preferred-env-var-name>

armar/implantar

A arm/deploy ação implanta determinados modelos ARM em paralelo. Ele opera com assinatura do Azure.

- uses: arm/deploy
    with:
      # Required. You can use built-in environment variable `AZURE_SUBSCRIPTION_ID` here. TeamsFx will ask you select one subscription if its value is empty. You're free to reference other environment variable here, but TeamsFx will not ask you to select subscription if it's empty in this case.
      subscriptionId: ${{AZURE_SUBSCRIPTION_ID}}
      # Required. You can use built-in environment variable `AZURE_RESOURCE_GROUP_NAME` here. TeamsFx will ask you to select or create one resource group if its value is empty. You're free to reference other environment variable here, but TeamsFx will not ask you to select or create resource group if it's empty in this case.
      resourceGroupName: ${{AZURE_RESOURCE_GROUP_NAME}}
      # Required. The ARM templates to be deployed.
      templates:
        # Required. Relative path to the yaml file.
      - path: <path-to-arm-template>
        # Optional. Relative path to the yaml file. TeamsFx will replace the environment variable reference with real value before deploy ARM template.
        parameters: <path-to-arm-template-parameter>
        # Required. Name of the ARM template deployment.
        deploymentName: <arm-deployment-name>
      # Optional. Microsoft 365 Agents Toolkit will download this bicep CLI version from github for you, will use bicep CLI in PATH if you remove this config.
      bicepCliVersion: v0.9.1

azureStorage/enableStaticWebsite

A azureStorage/enableStaticWebsite ação habilita a configuração de site estático no Armazenamento do Azure. Ele opera no Armazenamento do Azure.

- uses: azureStorage/enableStaticWebsite
    with:
      # Required. The resource id of Azure Storage
      storageResourceId: ${{<env-name-of-azure-storage-resource-id>}}
      # Required. The path to index page.
      indexPage: <path-to-index-page>
      # Required. The path to error page.
      errorPage: <path-to-error-page>

script

A script ação executa um script definido pelo usuário.

- uses: script
    with:
     # Required. Command to run or path to the script. Succeeds if exit code is 0. '::set-teamsfx-env key=value' is a special command to generate output variables into .env file, in this case, "mykey=abc" will be added the output in the corresponding .env file.
     run: $my_key="abc"; echo "::set-teamsfx-env mykey=${my_key}"
     # Optional. Available values are: bash, sh, powershell(Powershell Desktop), pwsh(powershell core), cmd. If omitted, it defaults to bash on Linux/MacOS, defaults to pwsh on windows.
     shell: <shell-name>
     # Optional. Current working directory. Defaults to the directory of this file.
     workingDirectory: <working-directory>
     # Optional. Timeout in ms.
     timeout: <timeout-in-ms>
     # Optional. Redirect stdout and stderr to a file.
     redirectTo: <path-to-output-file>

Personalizar o provisionamento de recursos

As etapas de provisionamento são definidas no m365agents.yml arquivo, na provision propriedade. Você pode adicionar, remover ou atualizar ações na propriedade para definir as ações esperadas que deseja executar durante o provision provisionamento.

Referenciar variáveis de ambiente em arquivos de parâmetros

O Kit de Ferramentas de Agentes dá suporte à referência aos valores de variáveis de ambiente no arquivo, no manifesto do aplicativo Teams, no manifesto m365agents.yml do aplicativo Microsoft Entra e nos arquivos de parâmetros do Azure. Você pode usar a sintaxe ${{ENV_VARIABLE_NAME}} para fazer referência a variáveis de ambiente.

O exemplo a seguir define o valor da variável MY_AZURE_SUBSCRIPTION_ID de ambiente como subscriptionId:

subscriptionId: ${{MY_AZURE_SUBSCRIPTION_ID}}

Personalizar arquivos de modelo do ARM

Se os modelos predefinidos não atenderem aos requisitos do aplicativo, você poderá criar seu próprio modelo do ARM ou atualizar o modelo do ARM existente e fornecer o caminho para arm/deploy a ação da seguinte maneira:

- uses: arm/deploy
    with:
      subscriptionId: ${{AZURE_SUBSCRIPTION_ID}}
      resourceGroupName: ${{AZURE_RESOURCE_GROUP_NAME}}
      templates:
      - path: <path-to-your-arm-template>
        parameters: <path-to-your-parameter-file>
        deploymentName: <arm-deployment-name>
      bicepCliVersion: <bicep-cli-version>

A arm/deploy ação suporta modelos ARM escritos nos formatos bíceps e json. Se você usar o formato json, poderá omitir o bicepCliVersion parâmetro. Você precisa ter conhecimentos básicos de Azure Resource Manager. Para obter mais informações, consulte Azure Resource Manager documentação.

Gerenciar seus recursos

Você pode entrar no portal do Azure e gerenciar todos os recursos criados usando o Agents Toolkit.

  • Você pode selecionar um grupo de recursos na lista existente ou no novo grupo de recursos que você criou.
  • Você pode ver os detalhes do grupo de recursos selecionado na seção de visão geral do sumário.

Personalizar aplicativos do Teams

Você pode personalizar seu bot ou o aplicativo Teams adicionando variáveis de ambiente para usar um aplicativo do Microsoft Entra que você criou. Você pode personalizar o aplicativo Teams das seguintes maneiras:

Usar um aplicativo Microsoft Entra existente para seu aplicativo do Teams

Para usar um aplicativo do Microsoft Entra criado para seu aplicativo do Teams e adicionar variáveis de ambiente aos arquivos .env, siga estas etapas.

  1. Abra o m365agents.yml arquivo e encontre a aadApp/create ação.

  2. Encontre os nomes de variáveis de ambiente que armazenam informações do writeToEnvironmentFile aplicativo Microsoft Entra na propriedade. Se você criar projetos usando o Agents Toolkit, a definição de propriedade padrão writeToenvironmentFile será a seguinte:

     writeToEnvironmentFile:
      clientId: AAD_APP_CLIENT_ID
      clientSecret: SECRET_AAD_APP_CLIENT_SECRET
      objectId: AAD_APP_OBJECT_ID
      tenantId: AAD_APP_TENANT_ID
      authority: AAD_APP_OAUTH_AUTHORITY
      authorityHost: AAD_APP_OAUTH_AUTHORITY_HOST
    
  3. Adicione valores para cada variável de ambiente da etapa 2.

    1. Adicione as variáveis de ambiente a seguir e seus valores ao env\.env.{env} arquivo. Por exemplo:

       AAD_APP_CLIENT_ID=<value of Microsoft Entra application's client id (application id)> # example: 00000000-0000-0000-0000-000000000000
       AAD_APP_OBJECT_ID=<value of Microsoft Entra application's object id> # example: 00000000-0000-0000-0000-000000000000
       AAD_APP_TENANT_ID=<value of Microsoft Entra's (tenant) id>> # example: 00000000-0000-0000-0000-000000000000
       AAD_APP_OAUTH_AUTHORITY=<value of Microsoft Entra's authority> # example: https://login.microsoftonline.com/<Directory (tenant) ID>
       AAD_APP_OAUTH_AUTHORITY_HOST=<host of Microsoft Entra's authority> # example: https://login.microsoftonline.com
       AAD_APP_ACCESS_AS_USER_PERMISSION_ID=<id of access_as_user permission> # example: 00000000-0000-0000-0000-000000000000
      
    2. Se o aplicativo exigir um segredo de cliente do aplicativo Microsoft Entra, adicione a seguinte variável de ambiente e seu valor ao env\.env.{env}.user arquivo. Por exemplo:

      SECRET_AAD_APP_CLIENT_SECRET=<value of Microsoft Entra application's client secret>
      

Se você ainda não tiver um aplicativo Microsoft Entra ou tiver um, mas não souber onde encontrar o valor correto, consulte Usar o aplicativo Microsoft Entra existente no projeto TeamsFx.

Observação

  • Lembre-se de atualizar os nomes das variáveis de ambiente nos exemplos se você usar nomes diferentes no writeToEnvironmentFile.
  • Se você não usar aadApp/create a ação para criar o aplicativo Microsoft Entra, poderá adicionar as variáveis de ambiente necessárias com seu nome preferencial sem seguir as etapas acima.
  • Verifique se você não compartilha o mesmo aplicativo Microsoft Entra em vários ambientes.

Usar um aplicativo Microsoft Entra existente para o bot

Você pode seguir as etapas para adicionar variáveis de ambiente aos arquivos .env para usar um aplicativo Microsoft Entra criado para seu aplicativo do Teams.

  1. Abra o m365agents.yml arquivo e encontre a botAadApp/create ação.

  2. Encontre os nomes de variáveis de ambiente que armazenam informações do writeToEnvironmentFile aplicativo Microsoft Entra na propriedade. A definição padrão writeToEnvironmentFile se você criar projetos usando o Agents Toolkit é a seguinte:

     writeToEnvironmentFile:
       botId: BOT_ID
       botPassword: SECRET_BOT_PASSWORD
    
  3. Adicione valores para cada variável de ambiente da etapa 2.

    1. Adicione a variável de ambiente e seu valor ao env\.env.{env} arquivo. Por exemplo:

      BOT_ID=<value of Microsoft Entra application's client id (application id)> # example: 00000000-0000-0000-0000-000000000000    
      
    2. Adicione a variável de ambiente e seu valor ao env\.env.{env}.user arquivo. Por exemplo:

      SECRET_BOT_PASSWORD=<value of Microsoft Entra application's client secret>
      

Se você ainda não tiver um aplicativo Microsoft Entra para seu bot ou tiver um, mas não souber onde encontrar os valores corretos, consulte Usar o aplicativo Microsoft Entra existente no projeto TeamsFx.

Observação

  • Lembre-se de atualizar os nomes das variáveis de ambiente nos exemplos se você usar nomes diferentes no writeToEnvironmentFile.
  • Se você não usar botAadApp/create a ação para criar o aplicativo Microsoft Entra, poderá adicionar as variáveis de ambiente necessárias com seu nome preferencial sem seguir as etapas acima.
  • Verifique se você não compartilha o mesmo aplicativo Microsoft Entra em vários ambientes.

Confira também