Implementación del botDeploy your bot

SE APLICA A: SíSDK v4 No SDK v3APPLIES TO: yesSDK v4 no SDK v3

En este artículo, se indica cómo implementar un bot básico en Azure.In this article we will show you how to deploy a basic bot to Azure. Se explica cómo preparar el bot para su implementación, cómo implementarlo en Azure y cómo probarlo en Web Chat.We will explain how to prepare your bot for deployment, deploy your bot to Azure, and test your bot in Web Chat. Es conveniente leerlo antes de seguir los pasos, con el fin de tener un conocimiento completo de lo que implica la implementación de un bot.It would be useful to read this article before following the steps, so that you fully understand what is involved in deploying a bot.

Importante

Asegúrese de usar la versión más reciente de la CLI de Azure.Make sure you are using the latest version of the Azure CLI. Si usa una versión de CLI de Azure anterior a la 2.2.0, se producirán errores por el desuso algunos comandos de la CLI.If you are using an Azure CLI version older than 2.2.0, you will encounter errors of CLI commands deprecation. Además, no mezcle la implementación de la CLI de Azure, que se muestra en este artículo, con la implementación de Azure Portal.Also, do not mix Azure CLI deployment shown in this article with Azure portal deployment.

Requisitos previosPrerequisites

Preparar la implementaciónPrepare for deployment

Cuando se crea un bot con una plantilla de Visual Studio, la plantilla de Yeoman o la plantilla de Cookiecutter, el código fuente generado incluye una carpeta deploymentTemplates que contiene plantillas de ARM.When you create a bot using a Visual Studio template, Yeoman template, or Cookiecutter template the source code generated includes a deploymentTemplates folder that contains ARM templates. El proceso de implementación que se documenta aquí utiliza las plantillas de Resource Manager para aprovisionar los recursos necesarios para el bot en Azure mediante la CLI de Azure.The deployment process documented here uses one of the ARM templates to provision required resources for the bot in Azure by using the Azure CLI.

Nota

Con la versión SDK Bot Framework 4.3, hemos dejado en desuso un archivo .bot.With the release of Bot Framework SDK 4.3, we have deprecated the use of a .bot file. En su lugar, usamos un archivo de configuración, como appsettings.json o .env., para administrar los recursos del bot.Instead, we use a configuration file, such as an appsettings.json or .env file, to manage bot resources. Para más información sobre cómo migrar la configuración del archivo .bot a un archivo de configuración, consulte Administración de recursos del bot.For information on migrating settings from the .bot file to a configuration file, see managing bot resources.
Las versiones .NET Core 2.1 y .NET Core 3.1 de las plantillas de C# están disponibles.Both .NET Core 2.1 and .NET Core 3.1 versions of the C# templates are available. Al crear nuevos bots en Visual Studio 2019, debe usar las plantillas de .NET Core 3.1.When creating new bots in Visual Studio 2019, you should use the .NET Core 3.1 templates.
Los ejemplos de bot actuales usan plantillas de .NET Core 3.1.The current bot samples use .NET Core 3.1 templates. Encontrará los ejemplos que usan las plantillas de .NET Core 2.1 en la rama 4.7-archive del repositorio BotBuilder-Samples.You can find the samples that use .NET Core 2.1 templates in the 4.7-archive branch of the BotBuilder-Samples repository. Para obtener información sobre cómo implementar bots de .NET Core 3.1 en Azure, consulte Implementación del bot.For information about deploying .NET Core 3.1 bots to Azure, see Deploy your bot.

Bot listo para la implementaciónBot ready to deploy

En este artículo se supone que tiene un bot listo para su implementación.This article assumes that you have a bot ready to be deployed. Si va a implementar un bot de C#, asegúrese de que se ha compilado en modo de versión.If you are deploying a C# bot make sure that it has been built in Release mode.

Para obtener información sobre cómo crear un bot de eco simple, consulte las guías de inicio rápido Ejemplo de C#, Ejemplo de JavaScript o Ejemplo de Python.For information on how to create a simple echo bot, see the quick start C# sample, JavaScript sample or Python sample. También puede usar uno de los ejemplos proporcionados en el repositorio de ejemplos de Bot Framework.You can also use one of the samples provided in the Bot Framework Samples repository.

1. Inicio de sesión en Azure1. Login to Azure

Una vez que haya creado y probado localmente un bot, puede implementarlo en Azure.Once you've created and tested a bot locally, you can deploy it to Azure. Abra un símbolo del sistema para iniciar sesión en Azure Portal.Open a command prompt to log in to the Azure portal.

az login

Se abrirá una ventana del explorador, lo que le permite iniciar sesión.A browser window will open, allowing you to sign in.

Nota

Si implementa el bot en una nube que no es de Azure, como Gov (US), debe ejecutar az cloud set --name <name-of-cloud> antes de az login, donde <name-of-cloud> es el nombre de una nube registrada, como AzureUSGovernment.If you deploy your bot to a non-Azure cloud such as US Gov, you need to run az cloud set --name <name-of-cloud> before az login, where <name-of-cloud> is the name of a registered cloud, such as AzureUSGovernment. Si desea volver a la nube pública, puede ejecutar az cloud set --name AzureCloud.If you want to go back to public cloud, you can run az cloud set --name AzureCloud.

2. Establecimiento de la suscripción2. Set the subscription

Establezca la suscripción predeterminada que desea usar.Set the default subscription to use.

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

Si no está seguro de la suscripción que debe usar para implementar el bot y desea ver la lista de suscripciones para su cuenta, use el comando az account list.If you are not sure which subscription to use for deploying the bot, you can view the list of subscriptions for your account by using az account list command.

3. Creación del registro de aplicación3. Create the application registration

En este paso, creará un registro de aplicación de Azure que permitirá:In this step you will create an Azure application registration, which will allow:

  • Al usuario, interactuar con el bot mediante un conjunto de canales como Web Chat.The user to interact with the bot via a set of channels such as Web Chat.
  • La definición de la configuración de conexión de OAuth para autenticar a un usuario y para crear un token que será utilizado por el bot para acceder a recursos protegidos en nombre del usuario.The definition of OAuth Connection Settings to authenticate a user and to create a token used by the bot to access protected resources on behalf of the user.

3.1 Creación del registro de aplicación de Azure3.1 Create the Azure application registration

Para crear un registro de aplicación de Azure, ejecute el siguiente comando:To create an Azure application registration, execute the following command:

az ad app create --display-name "displayName" --password "AtLeastSixteenCharacters_0" --available-to-other-tenants
OpciónOption DescripciónDescription
display-namedisplay-name Nombre para mostrar de la aplicación.The display name of the application. Aparece en Azure Portal en la lista general de recursos y en el grupo de recursos al que pertenece.It is listed in the Azure portal in the general resources list and in the resource group it belongs.
passwordpassword Contraseña, también conocida como secreto de cliente, de la aplicación.The password, also known as client secret, for the application. Se trata de una contraseña que crea para este recurso.This is a password you create for this resource. Debe tener al menos 16 caracteres, contener al menos 1 carácter alfabético en mayúsculas o minúsculas y contener al menos 1 carácter especial.It must be at least 16 characters long, contain at least 1 upper or lower case alphabetical character, and contain at least 1 special character.
available-to-other-tenantsavailable-to-other-tenants Indica que se puede usar la aplicación desde cualquier inquilino de Azure AD.Indicates that the application can be used from any Azure AD tenant. Establezca esta opción para permitir al bot que funcione con los canales de Azure Bot Service.Set this to enable your bot to work with the Azure Bot Service channels.

3.2 Registro de los valores de appId y appSecret3.2 Record the appId and appSecret values

Tendrá que registrar dos valores después de ejecutar el comando en el paso anterior (paso 3.1):You will need to record two values after executing the command in the previous step (step 3.1):

  • El valor de password que se crea en el paso anterior.The password you create in the previous step.
  • El valor de appId que encontrará en el código JSON de salida.The appId which you can find in the output JSON.

Copie y guarde los valores de appId y password.Copy and save the appId and password values. Tendrá que utilizarlos en el paso de implementación de ARM para asignar valores a los parámetros appId y appSecret, respectivamente.You will need to use them in the ARM deployment step, to assign values to the appId and the appSecret parameters, respectively.

4. Creación del servicio de aplicación de bot4. Create the bot application service

Al crear el servicio de aplicación de bot, puede implementar el bot en un grupo de recursos nuevo o en uno existente, con la plantilla de Azure Resource Manager (ARM).When creating the bot application service, you can deploy your bot in a new or in an existing resource group, both via the Azure Resource Manager (ARM) template. Una plantilla de ARM es un archivo JSON que define de forma declarativa uno o más recursos de Azure y las dependencias entre los recursos implementados.An ARM template is a JSON file that declaratively defines one or more Azure resources and that defines dependencies between the deployed resources. Asegúrese de que tiene la ruta de acceso correcta al directorio de plantillas de implementación de ARM del proyecto de bot DeploymentTemplates, porque lo necesita para asignar el valor al archivo de plantilla.Make sure that you have the correct path to your bot project ARM deployment templates directory DeploymentTemplates, you need it to assign the value to the template file. Elija la opción más adecuada para su caso:Choose the option that works best for you:

Importante

Los bots de Python no se pueden implementar en un grupo de recursos que contiene servicios o bots de Windows.Python bots cannot be deployed to a resource group that contains Windows services/bots. Se pueden implementar varios bots de Python en el mismo grupo de recursos, pero debe crear otros servicios (LUIS, QnA, etc.) en otro grupo de recursos.Multiple Python bots can be deployed to the same resource group, but create other services (LUIS, QnA, etc.) in another resource group.

Implementación mediante la plantilla de ARM (con un grupo de recursos nuevo)Deploy via ARM template (with new Resource Group)

En este paso, creará un servicio de aplicación de bot que establece la fase de implementación del bot.In this step, you create a bot application service which sets the deployment stage for the bot. Utilizará una plantilla de ARM, un nuevo plan de servicio y un nuevo grupo de recursos.You use an ARM template, a new service plan and a new resource group. Ejecute el siguiente comando de la CLI de Azure para iniciar una implementación en el ámbito de la suscripción desde un archivo de plantilla local.Run the following Azure cli command to start a deployment at subscription scope from a local template file.

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>"

Nota

Este paso puede tardar unos minutos en completarse.This step can take a few minutes to complete.

OpciónOption DescripciónDescription
namename Nombre para mostrar que se usará para el registro de los canales del bot.The display name to use for your bot channels registration. El valor predeterminado es el valor del parámetro botId.Default is the value of the botId parameter.
template-filetemplate-file La ruta de acceso a la plantilla de ARM.The path to the ARM template. Normalmente, el archivo template-with-new-rg.json se proporciona en la carpeta deploymentTemplates del proyecto del bot.Usually, the template-with-new-rg.json file is provided in the deploymentTemplates folder of the bot project. Se trata de una ruta de acceso a un archivo de plantilla existente.This is a path to an existing template file. Puede ser una ruta de acceso absoluta o relativa al directorio actual.It can be an absolute path, or relative to the current directory. Todas las plantillas de bot generan archivos de plantilla de ARM.All bot templates generate ARM template files.
ubicaciónlocation Ubicación.Location. Los valores de: az account list-locations.Values from: az account list-locations. Puede configurar la ubicación predeterminada mediante az configure --defaults location=<location>.You can configure the default location using az configure --defaults location=<location>.
parámetrosparameters Parámetros de implementación, que se proporcionan como una lista de pares clave=valor.Deployment parameters, provided as a list of key=value pairs. Escriba los siguientes valores de parámetro:Enter the following parameter values:
  • appId: valor de app id de la salida JSON generada por el paso de creación del registro de aplicación.appId - The app id value from the JSON output generated by the create the application registration step.
  • appSecret: contraseña que proporcionó en el paso de creación del registro de aplicación.appSecret - The password you provided in the create the application registration step.
  • botId: nombre del recurso de registro de canales de bot que se va a crear.botId - A name for the Bot Channels Registration resource to create. Debe ser único globalmente.It must be globally unique. Se usa como identificador inmutable del bot.It is used as the immutable bot ID. También se utiliza como nombre para mostrar predeterminado, que es mutable.It is also used as the default display name, which is mutable.
  • botSku: plan de tarifa; puede ser F0 (Gratis) o S1 (Estándar).botSku - The pricing tier; it can be F0 (Free) or S1 (Standard).
  • newAppServicePlanName: nombre del nuevo plan de servicio de la aplicación.newAppServicePlanName - The name of the new application service plan.
  • newWebAppName: nombre del servicio de aplicación de bot.newWebAppName - A name for the bot application service.
  • groupName: nombre del nuevo grupo de recursos.groupName - A name for the new resource group.
  • groupLocation: ubicación del grupo de recursos de Azure.groupLocation - The location of the Azure resource group.
  • newAppServicePlanLocation: ubicación del plan de App Service.newAppServicePlanLocation - The location of the application service plan.

Implementación mediante la plantilla de ARM (con un grupo de recursos ya existente)Deploy via ARM template (with existing Resource Group)

En este paso, creará un servicio de aplicación de bot que establece la fase de implementación del bot.In this step, you create a bot application service which sets the deployment stage for the bot. Cuando se usa un grupo de recursos existente, puede usar un plan de App Service que ya exista o crear uno nuevo.When using an existing resource group, you can either use an existing app service plan or create a new one. Elija la opción más adecuada para su caso:Choose the option that works best for you:

Nota

Este paso puede tardar unos minutos en completarse.This step can take a few minutes to complete.

Opción 1: Plan de App Service existenteOption 1: Existing App Service Plan

En este caso, se usará un plan de App Service ya existente, pero se crea una aplicación web y el registro de canales de bot.In this case, we are using an existing App Service Plan, but creating a new Web App and Bot Channels Registration.

El comando siguiente establece el identificador y el nombre para mostrar del bot.This command below sets the bot's ID and display name. El parámetro botId debe ser único globalmente y se utiliza como identificador inmutable del bot.The botId parameter should be globally unique and is used as the immutable bot ID. El nombre para mostrar del bot es mutable.The bot's display name is mutable.

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>"
Opción 2: Nuevo plan de App ServiceOption 2: New App Service Plan

En este caso, se creará un plan de App Service, una aplicación web y el registro de canales de bot.In this case, we are creating App Service Plan, Web App, and Bot Channels Registration.

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>"
OpciónOption DescripciónDescription
namename Nombre para mostrar que se usará para el registro de los canales del bot.The display name to use for your bot channels registration. El valor predeterminado es el valor del parámetro botId.Default is the value of the botId parameter.
resource-groupresource-group El nombre del grupo de recursos de Azure.Name of the azure resource group.
template-filetemplate-file La ruta de acceso a la plantilla de ARM.The path to the ARM template. Normalmente, el archivo template-with-preexisting-rg.json se proporciona en la carpeta deploymentTemplates del proyecto.Usually, the template-with-preexisting-rg.json file is provided in the deploymentTemplates folder of the project. Se trata de una ruta de acceso a un archivo de plantilla existente.This is a path to an existing template file. Puede ser una ruta de acceso absoluta o relativa al directorio actual.It can be an absolute path, or relative to the current directory. Todas las plantillas de bot generan archivos de plantilla de ARM.All bot templates generate ARM template files.
ubicaciónlocation Ubicación.Location. Los valores de: az account list-locations.Values from: az account list-locations. Puede configurar la ubicación predeterminada mediante az configure --defaults location=<location>.You can configure the default location using az configure --defaults location=<location>.
parámetrosparameters Parámetros de implementación, que se proporcionan como una lista de pares clave=valor.Deployment parameters, provided as a list of key=value pairs. Escriba los siguientes valores de parámetro:Enter the following parameter values:
  • appId: valor de appId generado por el paso 3.1 de creación del registro de aplicación.appId - The appId value generated by the 3.1 create the application registration step.
  • appSecret: contraseña que proporcionó en el paso 3.1 de creación del registro de aplicación.appSecret - The password you provided in the the 3.1 create the application registration step.
  • botId: nombre del recurso de registro de canales de bot que se va a crear.botId - A name for the Bot Channels Registration resource to create. Debe ser único globalmente.It must be globally unique. Se usa como identificador inmutable del bot.It is used as the immutable bot ID. También se utiliza como nombre para mostrar predeterminado, que es mutable.It is also used as the default display name, which is mutable.
  • newWebAppName: nombre del servicio de aplicación de bot.newWebAppName - A name for the bot application service.
  • newAppServicePlanName: nombre del recurso de plan de App Service que se va a crear.newAppServicePlanName - A name for the application service plan resource to create.
  • newAppServicePlanLocation: ubicación del plan de App Service.newAppServicePlanLocation - The location of the application service plan.

5. Preparación del código para la implementación5. Prepare your code for deployment

5.1 Recuperación o creación de los archivos IIS/Kudu necesarios5.1 Retrieve or create necessary IIS/Kudu files

Debe preparar los archivos de proyecto para poder implementar el bot de C#, Javascript o Typescript.You need to prepare your project files before you can deploy your C#, Javascript, or Typescript bot. Si va a implementar un bot de Python, puede omitir este paso y seguir en el paso 5.2.If you are deploying a Python bot you can skip this step and continue to step 5.2.

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

Debe proporcionar la ruta de acceso al archivo .csproj relacionada con --code-dir.You must provide the path to the .csproj file relative to --code-dir. Esto puede realizarse mediante el argumento --proj-file-path.This can be performed via the --proj-file-path argument. El comando debería resolver --code-dir y --proj-file-path como "./MyBot.csproj".The command would resolve --code-dir and --proj-file-path to "./MyBot.csproj".

Este comando genera un archivo .deployment en la carpeta del proyecto del bot.This command generates a .deployment file in your bot project folder.

5.2 Compresión del directorio de código manualmente5.2 Zip up the code directory manually

Cuando se usa ZIP deploy API para implementar el código del bot, el comportamiento de la aplicación web o de Kudu es el siguiente:When using the non-configured zip deploy API to deploy your bot's code, Web App/Kudu's behavior is as follows:

Kudu supone de forma predeterminada que las implementaciones de los archivos ZIP están listas para ejecutarse y que no necesitan pasos de compilación adicionales durante la implementación como, por ejemplo, npm install o dotnet restore/dotnet publish.Kudu assumes by default that deployments from zip files are ready to run and do not require additional build steps during deployment, such as npm install or dotnet restore/dotnet publish.

Es importante incluir el código compilado con todas las dependencias necesarias en el archivo ZIP que se va a implementar, de lo contrario, el bot no funcionará como se espera.It is important to include your built code with all necessary dependencies in the zip file being deployed, otherwise your bot will not work as intended.

Importante

Antes de comprimir los archivos del proyecto, asegúrese de que está en la carpeta del proyecto de bot.Before zipping your project files, make sure that you are in the bot's project folder.

  • Para bots de C#, es la carpeta que contiene el archivo .csproj.For C# bots, it is the folder that has the .csproj file.
  • Para los bots de JavaScript, es la carpeta que contiene el archivo app.js o index.js.For JavaScript bots, it is the folder that has the app.js or index.js file.
  • En el caso de los bots de TypeScript, es la carpeta que incluye la carpeta src (donde se encuentran los archivos bot.ts e index.ts).For TypeScript bots, it is the folder that includes the src folder (where the bot.ts and index.ts files are).
  • Para los bots de Python, es la carpeta que contiene el archivo app.py.For Python bots, it is the folder that has the app.py file.

Dentro de la carpeta del proyecto, asegúrese de seleccionar todos los archivos y carpetas antes de ejecutar el comando para crear el archivo zip.Within the project folder, make sure you select all the files and folders before running the command to create the zip file. Esto creará un solo archivo zip dentro de la carpeta del proyecto.This will create a single zip file within the project folder. Si la ubicación de la carpeta raíz es incorrecta, el bot no podrá ejecutarse en Azure Portal.If your root folder location is incorrect, the bot will fail to run in the Azure portal.

Implementación del código en AzureDeploy code to Azure

En este momento, estamos preparados para implementar el código en la aplicación web de Azure.At this point we are ready to deploy the code to the Azure Web App. Ejecute el siguiente comando en la línea de comandos para realizar la implementación mediante la implementación de inserción del archivo ZIP de Kudu para una aplicación web.Run the following command from the command line to perform deployment using the kudu zip push deployment for a web app.

az webapp deployment source config-zip --resource-group "<resource-group-name>" --name "<name-of-web-app>" --src "<project-zip-path>"
OpciónOption DescripciónDescription
resource-groupresource-group El nombre del grupo de recursos de Azure que contiene el bot.The name of the Azure resource group that contains your bot. (Este será el grupo de recursos que usó o creó al crear el registro de la aplicación para el bot).(This will be the resource group you used or created when creating the app registration for your bot.)
namename Nombre de la aplicación web que ha usado anteriormente.Name of the Web App you used earlier.
srcsrc Ruta de acceso al archivo de proyecto comprimido en formato ZIP que ha creado.The path to the zipped project file you created.

Nota

Este paso puede tardar unos minutos en completarse.This step can take a few minutes to complete. También puede tardar unos minutos más entre el momento en que finaliza la implementación y el momento en que el bot está disponible para probarlo.Also it can take a few more minutes between when the deployment finishes and when your bot is available to test.

Probar en Chat en webTest in Web Chat

  1. En el explorador, vaya a Azure Portal.In your browser, navigate to the Azure portal.
  2. Haga clic en Grupos de recursos en el panel izquierdo.In the left panel, click Resource groups.
  3. En el panel derecho, busque el grupo.In the right panel, search for your group.
  4. Haga clic en el nombre del grupo.Click on your group name.
  5. Haga clic en el vínculo del registro de canales de bot.Click the link of your Bot Channels Registration.
  6. En el panel Bot Channels Registration (Registro de canales de bot), haga clic en Test in Web Chat (Probar en Web Chat).In the Bot Channels Registration panel, click Test in Web Chat. O bien, en el panel derecho, haga clic en el cuadro Probar.Alternatively, in the right panel, click the Test box.

Para más información sobre el registro de canales del bot, consulte Registro de un bot en Bot Service.For more information about bot channels registration, see Register a bot with Bot Service.

Información adicionalAdditional information

La implementación de un bot en Azure conllevará el pago de los servicios que se usen.Deploying your bot to Azure will involve paying for the services you use. El artículo acerca de la facturación y administración de costos sirve de ayuda para conocer la facturación de Azure, para supervisar el uso y los costos, y para administrar cuentas y suscripciones.The billing and cost management article helps you understand Azure billing, monitor usage and costs, and manage your account and subscriptions.

Pasos siguientesNext steps