Aggiorna la configurazione dello schema hangup con semantica PATCH merge.
Parametri modificabili:
hangupUrl
schema
schema[].name
schema[].type
schema[].description
schema[].required
schema[].enumValues
schema[].children
Come recuperare i dati correnti:
- usa
GET /api/v1/assistants/{assistantApiKey}/runtime/hangup/schema
Regole operative
- Almeno uno tra
hangupUrl e schema deve essere presente nel body
- I campi omessi mantengono il valore corrente
- Inviare
schema sostituisce completamente lo schema corrente (non è un merge)
- Inviare
hangupUrl: null rimuove il webhook URL, disabilita il tool di hangup e azzera automaticamente anche lo schema
- Inviare
schema: [] svuota lo schema mantenendo l'URL corrente
- Sugli assistenti
voice_to_voice, il backend aggiorna pbxTools.hangupEndpoint.endpoint e pbxTools.hangupEndpoint.input_schema
Come costruire il body dello schema
Lo schema è un array di proprietà che definiscono i campi del body JSON inviato
all'hangupUrl al termine della chiamata. Ogni proprietà ha la seguente struttura:
| Campo |
Tipo |
Obbligatorio |
Descrizione |
name |
string |
sì |
Nome del campo nel body JSON |
type |
string |
sì |
Tipo del campo: string, number, boolean, enum, object |
description |
string |
no |
Descrizione del campo (aiuta il modello LLM a capire cosa inserire) |
required |
boolean |
no |
Se true, il campo è obbligatorio nel body hangup |
enumValues |
string[] |
solo per enum |
Lista di valori ammessi (solo se type: enum) |
children |
Property[] |
solo per object |
Campi annidati (solo se type: object) |
Tipi supportati e come usarli
string — campo testo libero:
{ "name": "motivo", "type": "string", "description": "Motivo del termine della chiamata", "required": true }
number — campo numerico:
{ "name": "durata_secondi", "type": "number", "description": "Durata della chiamata in secondi" }
boolean — campo booleano:
{ "name": "cliente_soddisfatto", "type": "boolean", "description": "Il cliente si è dichiarato soddisfatto" }
enum — campo a scelta multipla, richiede enumValues:
{ "name": "esito", "type": "enum", "description": "Esito della chiamata", "required": true, "enumValues": ["positivo", "negativo", "richiamata"] }
object — gruppo di campi annidati, richiede children:
{
"name": "dati_cliente",
"type": "object",
"description": "Dati raccolti durante la chiamata",
"children": [
{ "name": "nome", "type": "string", "description": "Nome del cliente" },
{ "name": "email", "type": "string", "description": "Email del cliente" }
]
}
Esempio di body JSON risultante
Con lo schema sopra, il webhook riceverà un body simile a:
{
"motivo": "Cliente ha chiesto informazioni sul prodotto X",
"esito": "positivo",
"cliente_soddisfatto": true,
"durata_secondi": 182,
"dati_cliente": {
"nome": "Mario Rossi",
"email": "mario@example.com"
}
}