Adición de un paquete de componentes a una aptitud

Para agregar un paquete de componentes a una aptitud, cree un servicio de componentes.

Para los paquetes de componentes que aloje en un servidor externo, en Oracle Cloud Infrastructure Functions o en Oracle Mobile Hub, un servicio de componentes es una conexión activa de la aptitud al servidor host. También puede cargar el paquete de componentes y alojarlo desde la instancia de Oracle Digital Assistant. Esto se conoce como un servicio de componentes incrustados.

Un servicio de componente tiene dos funciones:

  • Consulta el componente para obtener los metadatos del paquete, incluidos los nombres de los componentes, sus propiedades y las acciones permitidas para cada uno. Después de agregar un servicio a la aptitud, esta información puede verse en el separador Componentes, al que se puede acceder haciendo clic en Componentes Imagen del icono Componentes. , en la barra de navegación izquierda. Puede hacer referencia a esta página para obtener los nombres de los componentes, las propiedades y las acciones que necesitará para utilizar los componentes en el flujo de diálogo.

  • Permite que la aptitud llame a los componentes.

    La carga útil de JSON de la llamada realizada por el motor de diálogo a los componentes incluye parámetros de entrada, valores de variable, contexto a nivel de usuario y el texto del mensaje del usuario. El componente devuelve los resultados cambiando los valores de las variables existentes o agregando unas nuevas (o ambas cosas). El motor de diálogo analiza la carga útil devuelta y continúa.

Para agregar un paquete de componentes personalizados a una aptitud, vaya al separador Componentes de la aptitud Imagen del icono Componentes. y haga clic en Agregar servicio, que abre un cuadro de diálogo para configurar el servicio.

La configuración del servicio depende de dónde esté alojando el paquete de componentes. En estos temas se proporcionan instrucciones para cada tipo:

Después de crear el servicio, puede llamar a los componentes personalizados desde el flujo de diálogo como se describe en Componentes personalizados.

Al cargar un paquete en el contenedor integrado, Digital Assistant verifica que el paquete sea válido y puede rechazar el paquete por estos motivos:

  • Se han producido errores de JavaScript.

  • El paquete no contiene todas las dependencias del módulo de nodos.

  • Un nombre de componente tiene más de 100 caracteres, empieza por System. o contiene otros caracteres alfanuméricos y guiones bajos, por lo que se produce un fallo en la creación del servicio.

  • La instancia ya tiene el número máximo de servicios de componentes incrustados.

  • El archivo es demasiado grande. Esto ocurre normalmente cuando el archivo .npmignore no contiene una entrada *.tgz y, por lo tanto, cada vez que empaqueta los archivos, se agrega una copia anidada del TGZ existente.

Consulte Adición de un servicio de componentes incrustado para obtener más información sobre estas comprobaciones de verificación.

Adición de un servicio de componentes incrustado

Si desea alojar el paquete de componentes personalizados desde la instancia de Oracle Digital Assistant, realice estos pasos:

  1. Preparación del paquete para un servicio de contenedor incrustado.

  2. Carga del paquete para crear un servicio de componentes incrustado.

Preparación del paquete para un servicio de contenedor incrustado

Si desea alojar el paquete de componentes personalizados de Oracle Digital Assistant como un servicio de componentes incrustado, primero debe empaquetar los componentes personalizados en un archivo TGZ. A continuación, cargue este archivo al crear el servicio de componentes incrustado.

Este archivo TGZ, que se empaqueta mediante bots-node-sdk pack, debe contener los activos y la estructura descritos en Implantación de componentes personalizados. También debe contener todos los módulos de nodo de los que depende (bots-node-sdk pack lo hace por usted).

Nota

Hay un límite para el número de servicios de componentes personalizados incrustados que puede tener una instancia. Si no conoce el límite, pida al administrador del servicio que obtenga su embedded-custom-component-service-count como se describe en Visualización de los límites de servicio en la consola de Infrastructure. Si intenta agregar un servicio de componentes después de haber alcanzado ese límite, fallará la creación del servicio.

Para preparar un paquete para cargarlo en el servicio de contenedor incrustado:

  1. Asegúrese de tener la última versión de las herramientas de línea de comandos de Node.js de bots.

    El contenedor incrustado requiere que el archivo TGZ incluya todos los elementos dependencies. Las versiones anteriores no incluían los elementos dependencies en el archivo. Ahora, el comando que utilizará para crear el archivo TGZ garantiza que el archivo package.json contiene un nodo bundledDependencies que muestra todos los módulos dependientes que se deben incluir en el archivo TGZ.

  2. En el directorio que contiene el archivo main.js, ejecute el siguiente comando para cada uno de los módulos de los que depende el paquete. No es necesario que lo haga para elementos devDependencies, como el SDK del nodo de bots.

    Este comando agrega el módulo a la carpeta node_modules y lo agrega como dependencia en package.json.

    npm install <module>

    Si package.json ya nombra todas las dependencias, puede ejecutar npm install en su lugar.

  3. Asegúrese de que la carpeta de nivel superior contiene un archivo .npmignore que tiene una entrada *.tgz. Por ejemplo:

    *.tgz
    spec
    service-*

    De lo contrario, al empaquetar los archivos en un archivo TGZ, se incluirá el archivo TGZ que ya existe en la carpeta de nivel superior, y el archivo TGZ doblará su tamaño. Después de empaquetar los archivos unas cuantas veces, el archivo TGZ será demasiado grande para cargarlo en el contenedor.

  4. Ejecute este comando:

    bots-node-sdk pack

    Este comando valida el paquete de componentes, lo actualiza para incluir devDependencies si es necesario y, a continuación, crea un archivo TGZ, el cual deberá cargar al crear un servicio de componentes incrustado desde el separador Componentes de la aptitud. Tenga en cuenta que los archivos que ha enumerado como dependencies se incluyen como bundledDependencies, a excepción del SDK del nodo de bots y Express , que son devDependencies.

El paquete debe ser compatible con el nodo 14.17.0.

Para obtener más información sobre el comando pack, consulte https://github.com/oracle/bots-node-sdk/blob/master/bin/CLI.md.

Carga del paquete para crear un servicio de componentes incrustado

Después de empaquetar un paquete de componentes personalizado en un archivo TGZ, puede cargarlo para crear un servicio de componentes incrustado desde el separador Componentes de la aptitud.

Para obtener más información sobre cómo crear el archivo TGZ, consulte Preparación del paquete para un servicio de contenedor incrustado.

Nota

Al cargar el paquete en el servicio de componentes incrustado, este se despliega en Oracle Functions Service. Si la instancia se aprovisiona en Oracle Cloud Platform (como ocurre con todas las instancias de la versión 19.4.1), el servicio se despliega en su lugar en la instancia del Digital Assistant.

Para crear el servicio de componentes incrustado:

  1. En la aptitud, haga clic en Componentes icono Componentes.

  2. Haga clic en + Botón Agregar Servicio..

  3. Seleccione Contenedor incrustado.

  4. Haga clic en Cargar un archivo de paquete de componentes y apunte al archivo TGZ que desea cargar o arrástrelo hasta el cuadro Archivo de paquete.

  5. (Opcional) Si desea enviar sentencias context.logger() del componente personalizado al log del servicio, cambie Activar registro del componente a Activado. Este conmutador solo está disponible en las instancias de Oracle Digital Assistant aprovisionadas en Oracle Cloud Infrastructure (a veces denominada infraestructura en la nube de 2ª generación).

    Puede ver el log desde el separador Componentes haciendo clic en Diagnóstico > Ver logs.

    Nota

    La aptitud mantiene una entrada de log durante dos días. Al suprimir un servicio de componente personalizado embebido, se suprimen las entradas de log de la aptitud para ese servicio.
  6. Haga clic en Crear.

    Digital Assistant carga el archivo TGZ y crea el servicio de componentes incrustado. Durante la carga, Digital Assistant verifica que el paquete es válido y puede rechazar el paquete por los motivos que se describen más adelante en esta sección.

    Después de cargar el archivo TGZ, se crea el servicio de componentes personalizados y se despliegan sus componentes. Si la página Componentes muestra un mensaje de espera de despliegue después de cargar el archivo TGZ, significa que el servicio se ha creado, pero aún no está disponible. Cuando el servicio esté disponible, se mostrarán los metadatos del despliegue, en lugar del mensaje de espera de despliegue.

  7. Asegúrese de que Servicio activado se haya activado.

Durante la carga, Digital Assistant podría rechazar el paquete. A continuación se indican los motivos de rechazo y las formas de resolver los problemas.

  • JavaScript contiene errores de sintaxis: si JavaScript de un componente tiene errores de sintaxis, dicho componente no se agrega al contenedor, lo que da como resultado al siguiente mensaje de error:

    Error Message: failed to start service built: Invalid component
          path:

    Visualice los archivos del componente en un editor que detecte errores de sintaxis. Además, intente alojar el paquete en un servidor local que envíe mensajes de error al log de una consola.

    Otra causa de este mensaje podría ser que el paquete no contenga todas las dependencias del módulo de nodos. Consulte el siguiente elemento de esta lista.

  • Faltan módulos de nodo: si el paquete no contiene todas las dependencias del módulo de nodos, obtendrá el mismo mensaje de error que en el caso anterior:

    Error Message: failed to start service built: Invalid component
          path:

    Para saber cómo incluir las dependencias del módulo de nodos, consulte Preparación del paquete para un servidor de contenedor incorporado.

  • El nombre del componente es demasiado largo: si un nombre de componente tiene más de 100 caracteres, comienza por System. o contiene caracteres alfanuméricos y subrayados, se producirá un fallo durante la creación del servicio.

    Cambie el nombre en el JavaScript del componente, y vuelva a empaquetarlo y a cargarlo.

  • Se ha excedido el límite de servicios de componentes: si la instancia ya tiene el número máximo de servicios de componentes personalizados incrustados, se producirá un fallo durante la creación del servicio. Consulte al administrador del servicio el límite embedded-custom-component-service-count, como se describe en Visualización de los límites de servicio en la consola de Infrastructure.

    Si necesita incrementar el límite, puede solicitar un aumento. Consulte Solicitud de aumento del límite de servicio.

  • El archivo TGZ es demasiado grande: normalmente ocurre cuando el archivo .npmignore no contiene una entrada *.tgz y, por lo tanto, cada vez que empaqueta los archivos, se agrega una copia anidada del TGZ existente.

    Cuando la carpeta de nivel superior contiene un archivo .npmignore con *.tgz, la versión anterior del archivo TGZ no se incluye al actualizar el paquete.

Si desea enviar sentencias context.logger() de componente personalizado al log del servicio, cambie Activar registro del componente a Activado. Este conmutador solo está disponible en las instancias de Oracle Digital Assistant aprovisionadas en Oracle Cloud Infrastructure (a veces denominada infraestructura en la nube de 2ª generación).

Cuando se cambia Activar registro del componente a Activado, puede hacer clic en el botón Diagnóstico del servicio para acceder a los logs de vista y los informes de fallos para diagnosticar el problema.

  • Seleccione Ver logs para ver los mensajes que el componente personalizado envía a context.logger(). Esta función solo está disponible en instancias de Oracle Digital Assistant aprovisionadas en Oracle Cloud Infrastructure (a veces denominada infraestructura en la nube de 2ª generación). El conmutador Activar registro del componente debe estar activado para que el log contenga estos mensajes.
  • Seleccione Ver informe de bloqueo para ver detalles sobre lo que puede haber causado el bloqueo del contenedor.

Después de crear el servicio, puede llamar a los componentes personalizados desde el flujo de diálogo como se describe en Componentes personalizados.

Adición de un servicio de Oracle Functions

Puede desplegar los componentes personalizados en Oracle Cloud Infrastructure Functions y agregarlos a una aptitud como servicio de función de Oracle.

Para agregar un servicio de Oracle Functions:

  1. Necesitará conocer la URL de la función. Un usuario con privilegios de desarrollo de funciones puede obtener la URL de la consola de Integration.

    1. Conéctese a la consola de Integration.
    2. Haga clic en Icono del menú de navegación en la parte superior izquierda para abrir el menú de navegación, haga clic en Servicios para desarrolladores > Funciones y, a continuación, seleccione el compartimento que se ha configurado para el desarrollo de funciones.

    3. Haga clic en la aplicación.

    4. En la sección Funciones, haga clic en el icono Más para la función y haga clic en Copiar llamada del punto final. Los desarrolladores de aptitudes necesitan este valor para agregar el paquete de componentes personalizados como servicio de componentes en una aptitud.

  2. Un desarrollador de aptitudes agrega el servicio de componentes a una aptitud de Oracle Digital Assistant. Inicie sesión en Oracle Digital Assistant, abra la aptitud y haga clic en Componentes icono Componentes.

  3. Haga clic en botón + Servicio..

  4. Proporcione un nombre y una descripción para el servicio.

  5. Seleccione Función de Oracle.

  6. En el cuadro de texto URL, introduzca la URL de punto final de llamada que ha copiado de la página Servicios para desarrolladores > Funciones de la consola de Infrastructure mientras realiza los pasos de Configuración de su cuenta de usuario para Oracle Functions.

  7. Haga clic en Crear.

    Si obtiene un error "No se puede crear el servicio", vaya a Servicios para desarrolladores > Funciones en la consola de Infrastructure, seleccione el compartimento, haga clic en la aplicación y haga clic en Logs en el menú Recursos. A continuación, active el log para la función, vuelva a intentar realizar el despliegue y consulte los logs (haga clic en el nombre del log para ver el log). Para obtener más información sobre los logs, consulte Almacenamiento y visualización de logs de funciones en la documentación de Oracle Cloud Infrastructure.

    Si ve un error como este, es porque la carpeta no tiene los permisos adecuados. En la máquina local, utilice chmod 775 para cambiar los permisos de la carpeta y, a continuación, vuelva a desplegar:

    "Error: EACCES: permission denied, stat
    '/function/components/hello.world.js.js'"

    Si ve un error como este, en la máquina local, suprima node_modules, ejecute npm install y vuelva a desplegar.

    "Error: Cannot find module '@fnproject/fdk'"
  8. Asegúrese de que Servicio activado se haya activado.

Después de crear el servicio, puede llamar a los componentes personalizados desde el flujo de diálogo como se describe en Componentes personalizados.

Adición de un servicio de componentes externo

Puede alojar sus componentes personalizados en su propio servidor Node.js y agregarlos a una aptitud como servicio de componentes externo.

Consejo:

Puede utilizar la opción de servicio externo durante el desarrollo, como se describe en Ejecución del servicio de componentes en un entorno de desarrollo.

Para agregar un servicio de componentes externo:

  1. En la aptitud, haga clic en Componentes icono Componentes.

  2. Haga clic en botón + Servicio..

  3. Seleccione Externo.

  4. En el cuadro de texto URL de metadatos, introduzca la URL que apunta al punto final GET que devuelve la lista de componentes.

  5. Introduzca el nombre de usuario y la contraseña del servicio.

  6. Haga clic en Crear.

  7. Asegúrese de que Servicio activado se haya activado.

Después de crear el servicio, puede llamar a los componentes personalizados desde el flujo de diálogo como se describe en Componentes personalizados.

Adición del servicio de componentes de Mobile Hub

Puede alojar los componentes personalizados de Oracle Mobile Hub y agregarlos a una aptitud como un servicio de componentes de Oracle Mobile Cloud. Los componentes personalizados alojados en Mobile Hub se pueden integrar con servicios remotos mediante conectores controlados por un backend de Mobile Hub y tienen acceso a las API de la plataforma Mobile Hub.

Ya que el backend que aloja el código personalizado gestiona la autenticación de los componentes personalizados, debe consultar la página Configuración del backend para obtener la información necesaria para completar la configuración.

Para agregar un servicio de componentes para el backend de Mobile Hub:

  1. En la aptitud, haga clic en Componentes icono Componentes.

  2. Haga clic en botón + Servicio..

  3. Seleccione Oracle Mobile Cloud.

  4. Introduzca el identificador exclusivo asignado al backend Mobile Hub en el campo ID de backend. Este ID se pasa a la cabecera REST de cada llamada de la aptitud.

  5. En el campo URL de metadatos, introduzca el punto final /components de la API del código personalizado. Por ejemplo, http://<servidor>:<puerto>/mobile/custom/ccPackage/components.

  6. Seleccione Usar acceso anónimo si el servicio permite las conexiones anónimas. Si selecciona esta opción, introduzca la clave anónima, que es una cadena exclusiva que permite a la aplicación acceder a las API anónimas sin enviar un nombre de usuario y una contraseña codificados. En su lugar, se envía la clave anónima. Puede encontrar la clave anónima en la página Configuración del backend en Mobile Hub. (Puede que tenga que hacer clic en Mostrar.)

    Si el servicio de componente necesita una conexión (lo que significa que el acceso no es anónimo), introduzca el nombre de usuario y la contraseña.

  7. Si el servicio necesita parámetros específicos, haga clic en Agregar cabecera HTTP y, a continuación, defina los pares clave-valor de las cabeceras.

  8. Haga clic en Crear.

  9. Asegúrese de que Servicio activado se haya activado.

Después de crear el servicio, puede llamar a los componentes personalizados desde el flujo de diálogo como se describe en Componentes personalizados.