Compartir vía


Configuración de un bot de Node.js para la extensión

A partir del 1 de septiembre de 2023, se recomienda encarecidamente emplear el método de etiqueta de servicio de Azure para el aislamiento de red. El uso de DL-ASE debe limitarse a escenarios muy específicos. Antes de implementar esta solución en un entorno de producción, se recomienda consultar al equipo de soporte técnico para obtener instrucciones.

SE APLICA A: SDK v4

En este artículo se describe cómo actualizar un bot para trabajar con canalizaciones con nombre y cómo habilitar la extensión de App Service para Direct Line en el recurso de Azure App Service en el que se hospeda el bot.

Requisitos previos

  • Una cuenta de Azure. Si aún no tiene una, cree una cuenta gratuita antes de empezar.
  • Un bot Node.js implementado en Azure.
  • Bot Framework SDK para Node.js, 4.7 o posterior.

Habilitación de la extensión de App Service para Direct Line

Esta sección describe cómo habilitar la extensión de servicio de aplicaciones de Direct Line mediante la clave de extensión de App Service de la configuración de canal de Direct Line del bot.

Actualizar el código del bot

Para permitir que la aplicación use la canalización con nombre de la extensión de App Service para Direct Line:

  1. Edite el archivo index.js del bot.

    1. Busque la línea donde crea el adaptador del bot.

    2. Una vez creado el adaptador, agregue la siguiente instrucción, que extraerá el nombre del App Service del entorno e indicará al adaptador que se conecte a la canalización con nombre adecuada.

      • Si el bot usa el CloudAdapter (recomendado):

        adapter.connectNamedPipe(
            process.env.APPSETTING_WEBSITE_SITE_NAME + '.directline',
            async (context) => {
                await myBot.run(context);
            },
            process.env.MicrosoftAppId,
            AuthenticationConstants.ToChannelFromBotOAuthScope);
        
      • Si el bot usa el BotFrameworkAdapter en desuso:

        adapter.useNamedPipe(async (context) => {
            await myBot.run(context);
            },
            process.env.APPSETTING_WEBSITE_SITE_NAME + '.directline'
        );
        
    3. Guarde los cambios.

  2. Edite el archivo web.config del bot para agregar el controlador AspNetCore necesario para la extensión de App Service para Direct Line a las solicitudes de servicio.

    1. Edite el archivo web.config del bot.

    2. Cambie el atributo enabled de la etiqueta webSocket a true.

      <webSocket enabled="true" />
      
    3. En la sección <handlers>, agregue un registro para el controlador siguiente.

      <add name="aspNetCore" path="*/.bot/*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
      
    4. En la sección <rewrite>, agregue la siguiente regla a la lista de reglas.

      <!-- Do not interfere with Direct Line App Service extension requests. (This rule should be as high in the rules section as possible to avoid conflicts.) -->
      <rule name ="DLASE" stopProcessing="true">
        <conditions>
          <add input="{REQUEST_URI}" pattern="^/.bot"/>
        </conditions>
      </rule>
      
    5. Guarde los cambios.

  3. Volver a implementar el bot actualizado en Azure.

Habilitación de la extensión del bot de App Service para Direct Line

  1. En Azure Portal, vaya al recurso de Azure Bot.

    1. En Configuración selecciona Canales para configurar los canales desde los que el bot acepta mensajes.
    2. Si aún no está habilitado, selecciona el canal Direct Line en la lista de canales disponibles para habilitar el canal.
    3. Después de habilitar Direct Line, selecciónalo de nuevo en la página Canales.
    4. Selecciona la pestaña Extensión de App Service.
    5. En Claves de extensión de App Service, selecciona el icono de ojo situado junto a la clave correspondiente.
  2. Ve a la página principal y selecciona App Services en la parte superior de la página. Como alternativa, muestra el menú del portal y, a continuación, selecciona el elemento de menú App Services. Azure mostrará la página App Services.

  3. En el cuadro de búsqueda, escribe el nombre del recurso de Azure Bot. Se mostrará el recurso.

    Ten en cuenta que si mantienes el puntero sobre el icono o el elemento de menú, obtendrás una lista de los últimos recursos vistos. Es probable que se muestre el recurso de Azure Bot.

  4. Selecciona el vínculo de recursos.

    1. En la sección Configuración, selecciona el elemento de menú Configuraciones.

    2. En el panel de la derecha, añada la siguiente configuración:

      Nombre Value
      DirectLineExtensionKey Valor de la clave de extensión de App Service que copiaste anteriormente.
      DIRECTLINE_EXTENSION_VERSION latest
    3. Si el bot está hospedado en una nube soberana o restringida de Azure, donde no tienes acceso a Azure a través del portal público, también tendrás que agregar la siguiente configuración:

      Nombre Value
      DirectLineExtensionABSEndpoint El punto de conexión específico de la nube de Azure en la que se hospeda el bot. Por ejemplo, en la nube de USGov, el punto de conexión es https://directline.botframework.azure.us/v3/extension.
    4. Desde la sección Configuración, haz clic en la sección de configuración General y activa Sockets web.

    5. Haga clic en Save (Guardar) para guardar la configuración. Esto reinicia la instancia de Azure App Service.

Confirma que la extensión direct Line y el bot están configurados

En el navegador, vaya a https://<your_app_service>.azurewebsites.net/.bot. Si todo está correcto, la página devolverá este contenido JSON:

    {"v":"123","k":true,"ib":true,"ob":true,"initialized":true}
  • v muestra la versión de compilación de la extensión de App Service de Direct Line.
  • k indica si la extensión pudo leer una clave de extensión de su configuración.
  • inicializado indica si la extensión pudo descargar metadatos del bot desde el servicio de Bot de Azure AI.
  • ib indica si la extensión pudo establecer una conexión entrante al bot.
  • ob indica si la extensión pudo establecer una conexión saliente desde el bot.

Solución de problemas

  • Si los valores ib y ob mostrados por el punto de conexión .bot son falsos, el bot y la extensión App Service de Direct Line no se pueden conectar entre sí.

    1. Comprueba el código para usar canalizaciones con nombre que se ha agregado al bot.
    2. Confirma que el bot puede iniciarse y ejecutarse. Las herramientas útiles son Probar en WebChat, conectar un canal adicional, depuración remota o registro.
    3. Reinicia todo el Azure App Service en el que se hospeda el bot para garantizar un inicio limpio de todos los procesos.
  • Si el valor inicializado del punto de conexión .bot es falso, la extensión de App Service de Direct Line no puede validar la clave de extensión de App Service agregada a la Configuración de la aplicación anterior del bot.

    1. Confirma que el valor se ha escrito correctamente.
    2. Cambia a la clave de extensión alternativa que se muestra en la página Configurar Direct Line del bot.

Pasos siguientes