IBM Cloud Docs
Llamar a una extensión personalizada

Llamar a una extensión personalizada

Una extensión es una integración con un servicio externo. Llamando a una extensión desde una acción, el asistente puede enviar solicitudes al servicio externo y recibir datos de respuesta que puede utilizar en la conversación.

Por ejemplo, puede utilizar una extensión para interactuar con un sistema de gestión de relaciones con los clientes (CRM) o de tíquets, o para recuperar datos en tiempo real, como tipos de intereses hipotecarios o condiciones meteorológicas. A continuación, los datos de respuesta de la extensión estarán disponibles como variables de acción, que el asistente puede utilizar en la conversación.

Para obtener información sobre cómo crear una extensión personalizada, consulte Crear una extensión personalizada.

Llamar a la extensión desde un paso

Para llamar a una extensión personalizada desde una acción:

  1. En el editor de acciones, cree o abra el paso desde el que desea llamar a la extensión.

  2. Opcional: En el campo El asistente indica, escriba un mensaje que se mostrará al cliente antes de llamar a la extensión (por ejemplo, Please wait while I retrieve your account balance...).

    La salida de este paso se envía al canal con la variable de contexto global skip_user_input establecida en true. Esta variable indica al canal que muestre el mensaje, pero no que solicite una respuesta al cliente. En su lugar, el canal envía un mensaje vacío, lo que permite al asistente continuar con la llamada a la extensión.

    Todas las integraciones de canal incorporadas (como la conversación web) respetan la variable de contexto skip_user_input. Si está utilizando la API para desarrollar un cliente personalizado, es su responsabilidad incluir la comprobación lógica para esta variable. Para obtener más información, consulte Proceso de entrada de usuario.

  3. En el editor de pasos, pulse Y luego.

  4. Haga clic en Utilizar una extensión.

  5. En la ventana Configuración de la extensión, especifique la siguiente información:

    • En el campo Extensión, seleccione la extensión a la que desea llamar.

    • En el campo Operación, seleccione la operación que desea realizar. (Una operación es un método o función soportados por la extensión).

  6. Especifique valores para cada uno de los parámetros de entrada necesarios. Un parámetro es un valor de entrada enviado a una operación, como el ID de un registro de cliente que desea recuperar o la ubicación que se debe utilizar para un pronóstico meteorológico.

    Para asignar un valor a un parámetro, pulse el campo de entrada correspondiente al valor. A continuación, puede seleccionar en la lista de variables disponibles o escribir una expresión para especificar el valor.

    Establecimiento de un valor de parámetro

    Cada parámetro tiene un tipo de datos (como número o serie). La variable que seleccione debe ser compatible con el tipo de datos del parámetro; para más información, consulte Variables compatibles para parámetros.

    Debe especificar valores para todos los parámetros necesarios para poder continuar.

  7. Si desea especificar un valor para algún parámetro opcional, pulse Parámetros opcionales. A continuación, puede repetir este proceso para cada parámetro opcional que desee utilizar.

  8. Haga clic en Aplicar. (Si el botón Aplicar no está disponible, compruebe que haya especificado valores para todos los parámetros necesarios).

La sección Y luego del editor de pasos muestra ahora una visión general de la llamada a la extensión:

Visión general de la llamada a la extensión configurada

Si necesita realizar cambios, pulse Editar extensión para volver a abrir la ventana Configuración de la extensión.

Variables compatibles para parámetros

Para pasar un valor de parámetro de entrada para una operación, debe seleccionar una variable de sesión o una variable de acción compatible.

Una variable de acción contiene un valor que se basa en una respuesta del cliente en un paso anterior. Una variable de sesión puede tener un valor basado en una respuesta del cliente o un valor definido por una expresión. (Para obtener más información sobre las variables de acción y las variables de sesión, consulte Utilización de variables para gestionar la información de conversación.)

Al asignar un valor a un parámetro, la variable que elija debe ser compatible con el tipo de datos del parámetro. (Por ejemplo, a un parámetro número se le debe asignar un valor numérico en lugar de texto.)

La tabla siguiente muestra los posibles tipos de respuesta de cliente y el tipo de datos de parámetro compatible con cada uno de ellos.

Tipos de respuesta compatibles para parámetros
Tipo de respuesta del cliente Tipos de datos compatibles Notas
options string Una opción seleccionada siempre se trata como una serie, aunque sea un valor numérico.
number number
integer
Un número de coma flotante pasado como valor para un parámetro integer puede causar un error, en función del comportamiento de la API REST.
fecha string Las fechas se representan en el formato YYYY-MM-DD.
Hora string Las horas se representan como HH:MM:SS en formato de 24 horas, convertido a la zona horaria del usuario.
Moneda number
integer
Porcentaje number
integer
Un valor de porcentaje se pasa como un entero (por lo que 75% se convierte en 75).
Texto libre string
Expresión regular string

Matrices

Además de los tipos de respuesta de cliente soportados, una variable también puede contener un valor de matriz. Si necesita pasar un parámetro de matriz a una operación, debe crear una variable de sesión de matriz:

  1. Cree una nueva variable de sesión, utilizando Establecer valores de variable en el editor de pasos o desde la página Variables > Creado por el usuario. (Para obtener más información sobre cómo crear una variable de sesión, consulte Creación de una variable de sesión.)

  2. En el campo Tipo, seleccione Cualquiera.

  3. En el campo Valor inicial, pulse el conmutador Utilizar expresión para habilitarlo. Especifique una expresión que defina un valor de matriz (por ejemplo, ["New York", "London", "Tokyo"], [123, 456, 789] o []).

Puesto que esta variable contiene un valor de matriz, las acciones pueden utilizar expresiones con métodos de matriz para acceder o modificar los valores de matriz. Por ejemplo, es posible que desee crear una variable que inicialmente contenga una matriz vacía ([]) y, a continuación, utilizar el método add() para crear una lista de un elemento a la vez. Para obtener más información sobre los métodos de matriz que puede utilizar en expresiones, consulte Métodos de matriz.

Ahora puede seleccionar esta variable como valor para un parámetro que requiere una matriz.

Acceso a los datos de respuesta de la extensión

Después de llamar a una extensión, los valores de los datos de respuesta se almacenan en variables de acción especiales a las que puede acceder en los pasos posteriores.

Puede acceder a estas variables de la misma manera que a otras variables de acción. Puede hacer referencia a ellas en el texto de El asistente dic:, evaluarlas como parte de una condición de paso o asignarlas a una variable de sesión para que otras acciones puedan acceder a ellas. Las variables de respuesta se muestran en la lista de variables disponibles, categorizadas bajo el nombre de la extensión y el paso desde el que se han llamado:

Referencia a una variable de respuesta

Cada llamada a una extensión crea un conjunto separado de variables de respuesta. Si la acción llama varias vaces a la misma extensión desde distintos pasos, asegúrese de seleccionar las variables del paso correcto.

Cada variable representa un valor del cuerpo de la respuesta. Para facilitar el acceso a estos valores, los datos se extraen de objetos complejos anidados y se correlacionan con variables de respuesta individuales. El nombre de cada variable refleja su ubicación dentro del cuerpo de la respuesta (por ejemplo, body.name o body.customer.address.zipcode).

Por ejemplo, este paso de acción utiliza una expresión para comprobar la propiedad availability en una respuesta de extensión:

Variable de extensión en condición de paso

Si una variable de respuesta contiene una matriz, puede escribir una expresión que utilice métodos de matriz para acceder a los elementos de la matriz. Por ejemplo, puede utilizar el método contains() en una condición de paso para probar si la matriz contiene un valor determinado, o el método join() para formatear datos de la matriz como una serie que puede incluir en una respuesta de asistente. Para obtener más información sobre los métodos de matriz, consulte Métodos de matriz.

Comprobar el éxito o el fracaso

Es posible que desee que el asistente pueda manejar los errores que se producen al llamar a una extensión personalizada. Puede hacerlo comprobando la variable de respuesta Ran successfully que se devuelve junto con la respuesta de la llamada a la extensión. Esta variable es un valor booleano (true o false).

Si define condiciones de paso que comprueban la variable Ran successfully, puede crear pasos que permitan al asistente responder de forma diferente en función de si la llamada a la extensión ha sido satisfactoria. (Para obtener más información sobre las condiciones de paso, consulte Condiciones de paso).

El ejemplo siguiente muestra una condición de paso que comprueba una anomalía de una extensión en el paso 3. Mediante esta condición, puede crear un paso que indique al cliente que se ha producido un error, y tal vez ofrezca la posibilidad de conectarse a un agente para obtener más ayuda.

Comprobación de condición de paso para anomalía de extensión

Condicionamiento del estado HTTP

Además de la variable Ran successfully, es posible que también desee crear una condición de paso basada en el estado HTTP de la respuesta. Al hacerlo, puede crear pasos que manejen la situación de forma diferente en función de la causa del error. Por ejemplo, si la llamada falló debido a un error de tiempo de espera ( HTTP status 408), es posible que desee volver a intentar la llamada.

Hay muchos códigos de estado HTTP posibles, y diferentes métodos utilizan códigos de estado diferentes para indicar varios tipos de éxito o anomalía. Para condicionar el estado HTTP, necesita saber qué códigos de estado HTTP devuelve el servicio externo y en qué circunstancias. Estos códigos de estado suelen especificarse en el documento OpenAPI que describe la API externa.

Para crear una condición de paso basada en el código de estado HTTP, siga estos pasos:

  1. Para el valor que desea probar, pulse Expresión.

  2. En el campo de expresión, escriba un signo de dólar ($) para mostrar la lista de variables disponibles.

  3. Seleccione cualquier variable que sea un valor de respuesta de la extensión. (No importa qué variable seleccione, siempre y cuando sea una variable de respuesta de extensión).

    La expresión se actualiza automáticamente para mostrar una referencia a la variable que ha seleccionado, en el formato ${step_xxx_result_y.body.variablename}. Por ejemplo, si ha seleccionado una variable de respuesta denominada body.id, la referencia puede ser ${step_596_result_1.body.id}.

  4. Dentro de las llaves, ({}), edite esta referencia para eliminar .body.variablename. Debería quedar algo parecido a ${step_596_result_1}.

  5. Después de la llave de cierre (}), añada .status. La referencia resultante identifica el código de estado devuelto desde la llamada a la extensión (por ejemplo, ${step_596_result_1}.status).

    Para obtener más información sobre cómo escribir expresiones, consulte Cómo escribir expresiones.

  6. Complete la expresión añadiendo un operador y un valor de comparación, de modo que la expresión se evalúe como un valor booleano (true/false). Por ejemplo, la siguiente expresión comprueba el estado HTTP 408, que indica un error de tiempo de espera:

    ${step_549_result_1}.status==408
    

Errores de depuración de la extensión personalizada

Si sus llamadas a una extensión están fallando, es posible que desee depurar el problema viendo información detallada sobre lo que se envía y devuelve desde la API del sistema. Para ello, puede utilizar el Inspector del panel Vista previa:

  1. Vaya a la página Acciones, o al editor de acciones, y haga clic en Vista previa para abrir el panel Vista previa.

    No puede acceder al Inspector desde la vista previa del Asistente en la página Vista previa, que sólo muestra lo que vería un cliente. En su lugar, utilice la característica de vista previa que forma parte de la página Acciones, que le proporciona acceso a información adicional.

  2. Interactúa con tu Asistente como lo haría un cliente.

  3. Cada vez que se llama a una extensión, el panel de vista previa muestra un mensaje que le proporciona acceso a información detallada:

    Pulse Inspeccionar para ver detalles sobre la llamada a la extensión.

    También puede hacer clic en el icono Inspector de extensiones para mostrar u ocultar el Inspector. Sin embargo, debe hacer clic en Inspeccionar en el panel de vista previa para mostrar información sobre una llamada concreta a una extensión.

    La pestaña Resumen del Inspector muestra la siguiente información sobre una llamada a una extensión:

    Opción de depuración Descripción
    Extensión El nombre de la extensión, tal como se especifica en los valores de extensión.
    Operación La operación a la que se ha llamado.
    Estado El código de estado HTTP de la respuesta. Este código puede ayudarle a determinar si se devuelve un error desde el servicio externo.
    Parámetros de solicitud Los parámetros de entrada que se enviaron a la API del sistema como parte de la solicitud.
    Propiedades de respuesta Los valores de todas las propiedades incluidas en la respuesta de la API del sistema. Estos son los valores que se correlacionan con las variables de acción después de que se complete la llamada a la extensión.

    En las tablas Parámetros de solicitud y Propiedades de respuesta, los nombres de propiedad largos pueden truncarse para mostrar sólo la última parte de la vía de acceso JSON. Para ver la vía de acceso completa y el nombre de propiedad, pase el puntero del ratón sobre el nombre de propiedad en la tabla.

  4. Pulse la pestaña Avanzado en el inspector de extensión si desea ver los datos de solicitud y respuesta sin formato:

    • La solicitud se muestra como un mandato cURL, que puede ejecutar en un indicador de mandatos o importar en una herramienta como Postman. (Por razones de seguridad, el contenido de cualquier cabecera Authorization no se incluye.)
    • La respuesta se muestra como los datos JSON completos devueltos por la API del sistema.

Reconfiguración de una extensión que falta

Una extensión puede dejar de estar disponible si alguien la elimina del asistente en la página Integraciones, o si la acción se exporta y, a continuación, se importa a un asistente diferente donde la extensión necesaria no está configurada. Si esto sucede, cualquier paso de acción que llame a la extensión no será válido.

Para corregir el problema, siga estos pasos:

  1. Si es necesario, vuelva a crear la extensión utilizando la misma especificación OpenAPI que se utilizaba antes. (Para obtener más información, consulte Creación de una extensión personalizada.)

  2. Asegúrese de que la extensión se haya añadido al asistente. (Para obtener más información, consulte Adición de una extensión al asistente.)

  3. En el editor de acciones, edite el paso de acción que llama a la extensión y compruebe si la llamada a la extensión se ha configurado correctamente. Si watsonx Assistant reconoce la extensión necesaria, la configuración de extensión se restaura automáticamente.

    Si ve el mensaje Extension not fully configured, significa que watsonx Assistant no ha encontrado la extensión necesaria. Pulse Editar extensión.

  4. En la ventana de configuración de la extensión, seleccione la extensión a la que desea llamar.

    Si watsonx Assistant reconoce una extensión disponible que se ha creado utilizando el mismo documento OpenAPI, aparece un mensaje que sugiere que seleccione esta extensión. Sin embargo, puede seleccionar cualquier extensión disponible.

  5. Verifique que se han especificado los valores correctos en los campos Operación y Parámetros.

  6. Haga clic en Aplicar.

  7. Si ha seleccionado una extensión que no es idéntica a la que se ha utilizado para crear la acción, es posible que tenga que modificar los pasos posteriores que acceden a las propiedades de respuesta de extensión. Compruebe los pasos posteriores que hagan referencia a las propiedades de respuesta y asegúrese de que las referencias siguen siendo válidas y correctas.