VoiceBooker

Estado

Introdução

Agentes de voz são frequentemente usados para coletar diversos dados de clientes, usuários ou pacientes. Por exemplo, os clientes são solicitados a informar nome, data de nascimento e o produto que desejam reservar ou cancelar, além do horário preferido. Já os pacientes podem solicitar prescrições.

Esses dados geralmente são coletados por meio das ações/ferramentas definidas, nas quais os parâmetros ou variáveis contêm as informações que o LLM extrai das respostas do cliente.

Para armazenar esses dados entre chamadas de função e stages e repassá-los a sistemas de backend (por exemplo, CRM, ticketing ou sistemas PVS) via webhook, existe um objeto de estado que fica ativo durante toda a sessão de chamada e pode ser usado para armazenar e recuperar essas informações.

O objeto de estado

O objeto de estado é um simples objeto JavaScript que pode armazenar informações planas ou aninhadas.

No início de uma chamada, o objeto já contém informações padrão, como o número de telefone do chamador, desde que ele não tenha ocultado.

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

Abordagem no‑code

A coleta de dados acontece durante uma ação, ou seja, uma chamada de função. Portanto, você pode definir onde as informações coletadas devem ser armazenadas no objeto de estado diretamente na seção ações/ferramentas da definição/configuração da função:

A chave/caminho define onde os dados coletados/extraídos são armazenados dentro do objeto de estado. A notação com pontos permite armazenar dados em uma estrutura aninhada.

Abordagem low‑code

Habilitar o estado

Para acessar o objeto de estado em um prompt dinâmico ou dentro de uma chamada de função de um ação/ferramenta, o estado deve ser habilitado explicitamente:

Habilitar para uma função de prompt

Habilitar para uma função de ação/ferramenta

Usar/modificar o estado

Exemplo

Suponha que a função collectName capture o nome de um chamador e o forneça como campo name no objeto params. Você pode então armazenar esse nome no estado da seguinte forma:

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

Após a execução da função, o objeto de estado contém as seguintes informações:

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

Importante: após qualquer mudança, o objeto de estado modificado deve ser retornado — semelhante à stack — caso contrário as alterações não serão visíveis nas próximas chamadas de função e stages.

Nesta página