VoiceBooker

Estado

Introducción

Los agentes de voz suelen utilizarse para recopilar diversos datos de clientes, usuarios o pacientes. Por ejemplo, se les pide a los clientes su nombre, fecha de nacimiento y el producto que desean reservar o cancelar, así como su franja horaria preferida. Los pacientes, por su parte, pueden solicitar recetas.

Estos datos generalmente se recopilan mediante las acciones/herramientas definidas, donde los parámetros o variables contienen la información que el LLM extrae de las respuestas del cliente.

Para almacenar estos datos entre llamadas de función y stages y enviarlos a sistemas backend (p. ej., CRM, ticketing o sistemas PVS) mediante un webhook, existe un objeto de estado que está activo durante toda la sesión de la llamada y puede usarse para almacenar y recuperar esta información.

El objeto de estado

El objeto de estado es un simple objeto JavaScript que puede almacenar información plana o anidada.

Al inicio de una llamada, el objeto ya contiene información estándar como el número de teléfono del llamante, siempre que no lo haya ocultado.

{
    "call": {
        "from": "+49-351-1234567",
        "to": "+49-351-7654321"
    }
}

Enfoque no‑code

La recopilación de datos ocurre durante una acción, es decir, una llamada de función. Por lo tanto, puedes definir dónde deben almacenarse los datos recopilados dentro del objeto de estado directamente en la sección acciones/herramientas de la definición/configuración de la función:

La clave/ruta define dónde se almacenan los datos recopilados/extraídos dentro del objeto de estado. La notación con puntos permite almacenar datos en una estructura anidada.

Enfoque low‑code

Habilitar el estado

Para acceder al objeto de estado en un prompt dinámico o dentro de una llamada de función de una acción/herramienta, el estado debe habilitarse explícitamente:

Habilitar para una función de prompt

Habilitar para una función de acción/herramienta

Usar/modificar el estado

Ejemplo

Supongamos que la función collectName captura el nombre de un llamante y lo proporciona como campo name en el objeto params. Luego puedes almacenar ese nombre en el estado de la siguiente manera:

function collectName(params) {
    if (!params["state"]["user"]) params["state"]["user"] = {};
    params["state"]["user"]["name"] = params["name"];
    return { state: params["state"] };
}

Después de ejecutar la función, el objeto de estado contiene la siguiente información:

{
    "call": {
        "from": "+49-351-1234567",
        "to": "+49-351-7654321"
    },
    "user": {
        "name": "Max"
    }
}

Importante: después de cualquier cambio, el objeto de estado modificado debe devolverse — al igual que la stack — de lo contrario, los cambios no serán visibles en las siguientes llamadas de función y stages.

En esta página