Gli endpoint API di chiamata forniscono l'accesso agli oggetti di chiamata. Viene creato un oggetto chiamata per ogni chiamata effettuata da e verso Contact Center AI Platform (CCAI Platform).
Di seguito sono riportati gli endpoint API di chiamata:
Aggiornare gli attributi di dati riservati durante una chiamata
Trasferire i parametri dei dati agli agenti virtuali a metà sessione
Oggetto di chiamata
Di seguito è riportato un esempio dell'oggetto chiamata:
[
{
"id": 0,
"parent_id": 0,
"lang": "en",
"call_type": "Voice Scheduled (API)",
"status": "scheduled",
"created_at": "2018-06-07T19:49:52.896Z",
"queued_at": "2018-06-07T19:49:52.896Z",
"assigned_at": "2018-06-07T19:49:52.896Z",
"connected_at": "2018-06-07T19:49:52.896Z",
"ends_at": "2018-06-07T19:49:52.896Z",
"scheduled_at": "2018-06-07T19:49:52.896Z",
"wait_duration": 0,
"call_duration": 0,
"hold_duration": 0,
"rating": 0,
"has_feedback": true,
"voip_provider": "voip_provider_twilio",
"out_ticket_id": "string",
"out_ticket_url": "string",
"verified": true,
"recording_url": "string",
"recording_permission": "not_asked",
"voicemail_reason": "not_voicemail",
"deflection": "no_deflection",
"disconnected_by": "disconnected_by_unknown",
"fail_details": "string",
"fail_reason": "nothing",
"support_number": "string",
"selected_menu": {
"id": 0,
"name": "string",
"parent_id": 0,
"position": 0,
"deleted": true,
"hidden": "string",
"menu_type": "ivr_menu",
"output_msg": "string"
},
"menu_path": {
"items_count": 0,
"name": "string",
"materialized_path": "string"
},
"agent_info": {
"id": 0,
"name": "string",
"last_name": "string",
"first_name": "string",
"agent_number": "string",
"avatar_url": "string"
},
"end_user": {
"id": 0,
"identifier": "string",
"out_contact_id": "string"
},
"photos": [
{
"id": 0,
"photo_type": "photo",
"url": "string"
}
],
"videos": [
{
"id": 0,
"url": "string"
}
],
"transfers": [
{
"id": 0,
"status": "transferring",
"fail_reason": "nothing",
"created_at": "2018-06-07T19:49:52.896Z",
"from_menu": {
"items_count": 0,
"name": "string",
"materialized_path": "string"
},
"to_menu": {
"items_count": 0,
"name": "string",
"materialized_path": "string"
},
"from_agent": {
"id": 0,
"name": "string",
"last_name": "string",
"first_name": "string",
"agent_number": "string",
"avatar_url": "string"
},
"to_agent": {
"id": 0,
"name": "string",
"last_name": "string",
"first_name": "string",
"agent_number": "string",
"avatar_url": "string"
}
}
],
"participants": [
{
"id": 0,
"type": "end_user",
"status": "waiting",
"call_id": 0,
"user_id": 0,
"end_user_id": 0,
"call_duration": 0,
"hold_duration": 0,
"connected_at": "2018-06-07T19:49:52.896Z",
"ended_at": "2018-06-07T19:49:52.896Z",
"fail_reason": "nothing"
}
]
}
]
Definizioni degli stati delle chiamate
Il campo dello stato può avere uno dei seguenti stati:
| Stato della chiamata | Descrizione |
|---|---|
| Selezione | Stato che si verifica quando un utente finale ha chiamato il contact center, ma sta ancora navigando tra le opzioni del menu prima di essere inserito in un menu secondario. |
| In coda | Stato che si verifica dopo che l'utente finale ha selezionato un nodo del menu secondario e ha avviato una richiesta di chiamata da trasmettere in modalità unicast o multicast a un agente. |
| Assegnata | Stato che si verifica quando un agente viene selezionato per ricevere la chiamata dell'utente finale. Ciò si verifica quando una chiamata viene presa in carico da un agente. |
| Connessione in corso… | Stato che si verifica dopo l'assegnazione di un agente e l'instaurazione di una connessione tra l'utente finale e l'agente. |
| Connesso | Stato che si verifica quando la chiamata ha stabilito una connessione e l'agente e l'utente finale vengono entrambi inseriti in una chiamata. |
| Terminato | Stato che si verifica quando una chiamata termina dopo essere stata connessa. |
| Non riuscito | Stato che si verifica quando una chiamata termina prima di essere connessa correttamente. Verrà fornito anche un motivo di errore per ulteriori dettagli. |
| Cambiamento modalità in corso | Stato che si verifica quando una chiamata non va a buon fine durante il tentativo di connessione e CCAI Platform tenta di connettere la chiamata con un altro fornitore VoIP. |
| Recuperato | Stato che si verifica quando viene richiamata una chiamata non riuscita. Questa nuova chiamata è una chiamata secondaria della chiamata originale. Recupera le note che la richiamata è terminata senza errori. |
| Pianificato | Stato che si verifica quando un utente finale ha pianificato una chiamata futura utilizzando In-Web o In-App. |
| Solo azione | Stato che si verifica quando una chiamata gestita dal provider di telefonia del nostro cliente viene connessa al nostro SDK per iOS o Android. |
| Azione solo terminata | Stato che si verifica quando una chiamata gestita dal provider di telefonia del nostro cliente viene connessa al nostro SDK per iOS o Android e termina |
| Deviato | Stato che si verifica in base alla configurazione per le code in sovracapacità o le chiamate fuori orario. Le opzioni di deviazione includono la segreteria, la pianificazione della chiamata e altre. La deviazione varia in base al canale (in-app, IVR, in-web) |
| Segreteria | Stato che si verifica quando un utente finale viene reindirizzato a un'opzione di segreteria telefonica e sceglie di lasciare un messaggio vocale da ascoltare in un secondo momento. Questo stato è presente quando l'utente finale sta lasciando il messaggio vocale |
| Messaggio vocale ricevuto | Stato che si verifica dopo che un utente finale ha lasciato un messaggio vocale e un agente non lo ha ascoltato |
| Messaggio vocale letto | Stato che si verifica quando un agente ha aperto il messaggio vocale per ascoltarlo. |
Definizioni dei tipi di chiamata
Il campo call_type può contenere solo uno dei seguenti valori:
| Tipo di chiamata | Descrizione |
|---|---|
| Chiamate in uscita (API) | Chiamata effettuata dall'API Outbound Call. |
| Voice Inbound (API) | Chiamata effettuata dall'API Chiamata in arrivo. |
| Voice Scheduled (API) | Chiamata effettuata dall'API Scheduled Call. |
Codici di risposta API comuni
Di seguito sono riportate le risposte dell'API più comuni:
| Codice di risposta | Significato |
|---|---|
| 201 | La richiesta API è andata a buon fine e verrà creata una chiamata |
| 202 | La richiesta API è andata a buon fine, ma è necessario un intervento manuale all'interno del widget per completare l'azione |
| 400 | invalid call type - ensure call_type is supported |
| 400 | L'agente non è disponibile a rispondere a questa chiamata |
| 400 | Parametro mancante: verifica di aver aggiunto i parametri obbligatori |
| 404 | Risorsa non trovata. Controlla il sottodominio |
Chiamata in uscita - end_user_number
| Parametro | Obbligatorio | Tipo di dati | Definizione |
|---|---|---|---|
| call_tye | VERO | Stringa | Chiama il tipo da creare. "Voice Outbound (API)" e "OutboundCall" (ritirato) sono disponibili per il momento |
| agent_email | VERO | Stringa | L'indirizzo email dell'agente a cui verrà assegnata la chiamata in uscita. |
| ticket_id | FALSE | Stringa | ID ticket CRM e chiamerà l'utente finale associato al ticket. |
| end_user_number | FALSE | Stringa | Numero di telefono dell'utente finale che effettuerà la chiamata. ticket_id ha una priorità più alta rispetto a end_user_number. |
| outbound_number | FALSE | Stringa | Numero in uscita ben formato gestito da Impostazioni > Numeri di telefono > Gestione numeri di telefono. Se il campo è vuoto, verrà utilizzato il numero in uscita predefinito |
| lang | FALSE | Stringa | Lingua della chiamata. Utilizza i codici ISO 639-1. (Valore predefinito: "en") |
Endpoint:
Method: POST
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/calls
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "agent@somedomain.com",
"outbound_number": "+1 760-867-5309",
"end_user_number": "123123",
"lang": "en"
}
Esempio di richiesta e risposte
Le sezioni seguenti forniscono richieste di esempio all'endpoint.
Errore : l'agente non è disponibile per rispondere a questa chiamata
Questo esempio mostra lo scenario di errore quando l'agente non è disponibile per ricevere la chiamata.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "agent@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Risposta: Errore : l'agente non è disponibile a rispondere a questa chiamata
{
"message": "Agent is not available to take this call"
}
Codice di stato: 400
Crea una chiamata in uscita con il numero dell'utente finale
Questo esempio mostra come effettuare una chiamata in uscita per un numero di utente finale specifico.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "admin@somedomain.com",
"end_user_number": "+1 859-657-9625",
"outbound_number": "+1 339-219-5276",
"lang": "en"
}
Risposta: crea una chiamata in uscita con end_user_number
{
"id": 397,
"lang": "en",
"call_type": "Voice Outbound (API)",
"status": "assigned",
"created_at": "2019-06-07T01:27:30.406Z",
"queued_at": null,
"assigned_at": "2019-06-07T01:27:30.441Z",
"connected_at": null,
"ends_at": null,
"scheduled_at": null,
"wait_duration": 0,
"call_duration": 0,
"hold_duration": 0,
"rating": null,
"has_feedback": false,
"voip_provider": "voip_provider_twilio",
"out_ticket_id": null,
"out_ticket_url": null,
"verified": false,
"recording_url": null,
"recording_permission": "not_asked",
"voicemail_reason": "not_voicemail",
"deflection": "no_deflection",
"disconnected_by": "disconnected_by_unknown",
"fail_reason": "nothing",
"fail_details": null,
"support_number": null,
"selected_menu": null,
"menu_path": null,
"agent_info": {
"id": 1,
"agent_number": null,
"name": "Admin UJET",
"last_name": "UJET",
"first_name": "Admin",
"avatar_url": "https://somedomain.com/avatar.jpg"
},
"end_user": null,
"photos": [],
"videos": [],
"transfers": [],
"deflection_details": [],
"participants": [
{
"id": 610,
"type": "agent",
"status": "waiting",
"call_id": 397,
"user_id": 1,
"end_user_id": null,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
},
{
"id": 611,
"type": "end_user",
"status": "waiting",
"call_id": 397,
"user_id": null,
"end_user_id": null,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
}
],
"offer_type": null,
"offer_events": [],
"answer_type": "manual",
"outbound_number": "+1 339-219-5276"
}
Codice di stato: 201
Crea una chiamata in uscita con l'ID ticket
Questo esempio mostra la creazione di una chiamata in uscita con un ID ticket specifico.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "agent@somedomain.com",
"ticket_id": "71450",
"outbound_number": "+1 339-219-5276",
"lang": "en"
}
Risposta: crea una chiamata in uscita con ticket_id
{
"id": 398,
"lang": "en",
"call_type": "Voice Outbound (API)",
"status": "assigned",
"created_at": "2019-06-07T01:28:47.955Z",
"queued_at": null,
"assigned_at": "2019-06-07T01:28:47.971Z",
"connected_at": null,
"ends_at": null,
"scheduled_at": null,
"wait_duration": 0,
"call_duration": 0,
"hold_duration": 0,
"rating": null,
"has_feedback": false,
"voip_provider": "voip_provider_twilio",
"out_ticket_id": "71450",
"out_ticket_url": null,
"verified": false,
"recording_url": null,
"recording_permission": "not_asked",
"voicemail_reason": "not_voicemail",
"deflection": "no_deflection",
"disconnected_by": "disconnected_by_unknown",
"fail_reason": "nothing",
"fail_details": null,
"support_number": null,
"selected_menu": null,
"menu_path": null,
"agent_info": {
"id": 1,
"agent_number": null,
"name": "Admin UJET",
"last_name": "UJET",
"first_name": "Admin",
"avatar_url": "https://somedomain.com/avatar.png"
},
"end_user": {
"id": 67,
"identifier": null,
"out_contact_id": "381630957514"
},
"photos": [],
"videos": [],
"transfers": [],
"deflection_details": [],
"participants": [
{
"id": 612,
"type": "agent",
"status": "waiting",
"call_id": 398,
"user_id": 1,
"end_user_id": null,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
},
{
"id": 613,
"type": "end_user",
"status": "waiting",
"call_id": 398,
"user_id": null,
"end_user_id": 67,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
}
],
"offer_type": null,
"offer_events": [],
"answer_type": "manual",
"outbound_number": "+1 339-219-5276"
}
Codice di stato: 201
Errore : ID richiesta o numero dell'utente finale obbligatorio
Questo esempio mostra lo scenario di errore in cui l'ID ticket o il numero dell'utente finale sono obbligatori, ma non forniti.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Risposta: Errore : ticket_id o end_user_number obbligatori
{
"message": "ticket_id or end_user_number required"
}
Codice di stato: 400
Errore : l'email dell'agente non è valida
Questo esempio mostra l'errore che si verifica quando l'indirizzo email fornito per un agente non è valido.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "admin@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Risposta: Errore : l'email dell'agente non è valida
{
"message": "Not a valid agent email"
}
Codice di stato: 400
Errore : email dell'agente obbligatoria
Questo esempio mostra l'errore quando non viene fornito un indirizzo email per l'agente.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Risposta: Errore : è richiesta l'email dell'agente
{
"message": "Agent email required"
}
Codice di stato: 400
Errore : l'agente non ha accesso per effettuare chiamate
Questo esempio mostra l'errore quando l'agente specificato non è autorizzato a effettuare chiamate in uscita.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Risposta: Errore : l'agente non ha accesso per effettuare chiamate
{
"message": "Agent does not have access to make calls"
}
Codice di stato: 400
Errore : end_user_number non è ben formato
Questo esempio mostra lo scenario di errore in cui il numero dell'utente finale fornito non è formattato correttamente.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"outbound_number": "+1 760-410-8538",
"end_user_number": "123123",
"lang": "en"
}
Risposta: Errore : end_user_number non è ben formato
{
"message": "end_user_number is not well-formed"
}
Codice di stato: 400
Errore : contatto non trovato
Questo esempio mostra lo scenario di errore in cui il contatto fornito non esiste.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"outbound_number": "+1 760-410-8538",
"ticket_id": 1,
"lang": "en"
}
Risposta: Errore : contatto non trovato
{
"message": "Contact not found"
}
Codice di stato: 400
Accettato : devi scegliere un numero in uscita
In questo esempio, la chiamata in uscita viene accettata, ma l'agente deve scegliere il numero in uscita da utilizzare prima di effettuare la chiamata.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "agent@somedomain.com",
"outbound_number": "+1 760-867-5309",
"end_user_number": "123123",
"lang": "en"
}
Risposta
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Codice di stato: 200
Errore : tipo di chiamata non valido
Questo esempio mostra lo scenario di errore in cui il tipo di chiamata fornito non è valido.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"outbound_number": "+1 760-410-8538",
"end_user_number": "123123",
"lang": "en"
}
Risposta: Errore : tipo di chiamata non valido
{
"message": "Invalid call type"
}
Codice di stato: 400
Richiedere l'adattatore chiamate tramite più numeri in uscita
In questo scenario, all'adattatore chiamate vengono richiesti più numeri in uscita.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "agent@somedomain.com",
"outbound_number": "+1 760-867-5309",
"end_user_number": "123123",
"lang": "en"
}
Risposta
{
"call_type": "Voice Outbound (API)",
"agent_email": "admin@somedomain.com",
"end_user_number": "+1 859-657-9625",
"lang": "en"
}
Codice di stato: 200
Accettato : l'agente deve effettuare una chiamata in uscita con l'ID ticket
Questo esempio mostra una richiesta in cui l'agente deve effettuare una chiamata in uscita in base all'ID ticket fornito.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Codice di stato: 202
Chiamata in uscita - ticket_id
| Parametro | Obbligatorio | Tipo di dati | Definizione |
|---|---|---|---|
| call_type | VERO | Stringa | Il tipo di chiamata da creare. "Voice Outbound (API)" e "OutboundCall" (ritirato) sono disponibili per il momento |
| agent_email | VERO | Stringa | L'indirizzo email dell'agente a cui verrà assegnata la chiamata in uscita. |
| ticket_id | FALSE | Stringa | ID ticket CRM e chiamerà l'utente finale associato al ticket. |
| end_user_number | FALSE | Stringa | Numero di telefono dell'utente finale che effettuerà la chiamata. ticket_id ha una priorità più alta rispetto a end_user_number. |
| outbound_number | FALSE | Stringa | Numero in uscita ben formato gestito da Impostazioni > Numeri di telefono > Gestione numeri di telefono. Se il campo è vuoto, verrà utilizzato il numero in uscita predefinito |
| lang | FALSE | Stringa | Lingua della chiamata. Utilizza i codici ISO 639-1. (Valore predefinito: "en") |
Endpoint:
Method: POST
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/calls
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"outbound_number": "+1 760-867-5309",
"ticket_id": "123123",
"lang": "en"
}
Esempio di richiesta e risposte
Le sezioni seguenti forniscono richieste di esempio all'endpoint.
Errore : ID richiesta o numero dell'utente finale obbligatorio
In questo esempio, lo scenario di errore dell'ID ticket o del numero dell'utente finale non è presente, ma è obbligatorio.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Risposta: Errore : ticket_id o end_user_number obbligatori
{
"message": "ticket_id or end_user_number required"
}
Codice di stato: 400
Errore : email dell'agente obbligatoria
In questo esempio mostriamo lo scenario di errore in cui l'email dell'agente non viene fornita, ma è obbligatoria.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Risposta: Errore : è richiesta l'email dell'agente
{
"message": "Agent email required"
}
Codice di stato: 400
Crea una chiamata in uscita con il numero dell'utente finale
In questo esempio mostriamo come creare una chiamata in uscita fornendo il numero dell'utente finale.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "admin@somedomain.com",
"end_user_number": "+1 859-657-9625",
"outbound_number": "+1 339-219-5276",
"lang": "en"
}
Risposta: crea una chiamata in uscita con end_user_number
{
"id": 397,
"lang": "en",
"call_type": "Voice Outbound (API)",
"status": "assigned",
"created_at": "2019-06-07T01:27:30.406Z",
"queued_at": null,
"assigned_at": "2019-06-07T01:27:30.441Z",
"connected_at": null,
"ends_at": null,
"scheduled_at": null,
"wait_duration": 0,
"call_duration": 0,
"hold_duration": 0,
"rating": null,
"has_feedback": false,
"voip_provider": "voip_provider_twilio",
"out_ticket_id": null,
"out_ticket_url": null,
"verified": false,
"recording_url": null,
"recording_permission": "not_asked",
"voicemail_reaso": "not_voicemail",
"deflection": "n_deflection",
"disconnected_by": "disconnected_by_unknown",
"fail_reason": "nothing",
"fail_details": null,
"support_number": null,
"selected_menu": null,
"menu_path": null,
"agent_info": {
"id": 1,
"agent_number": null,
"name": "Admin UJET",
"last_name": "UJET",
"first_name": "Admin",
"avatar_url": "https://somedomain.com/default-profile.png"
},
"end_user": null,
"photos": [],
"videos": [],
"transfers": [],
"deflection_details": [],
"participants": [
{
"id": 610,
"type": "agent",
"status": "waiting",
"call_id": 397,
"user_id": 1,
"end_user_id": null,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
},
{
"id": 611,
"type": "end_user",
"status": "waiting",
"call_id": 397,
"user_id": null,
"end_user_id": null,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
}
],
"offer_type": null,
"offer_events": [],
"answer_type": "manual",
"outbound_number": "+1 339-219-5276"
}
Codice di stato: 201
Errore : tipo di chiamata non valido
In questo esempio mostriamo lo scenario di errore in cui il tipo di chiamata fornito non è valido.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "ScheduledCall",
"agent_email": "allen@somedomain.com",
"outbound_number": "+1 760-410-8538",
"end_user_number": "123123",
"lang": "en"
}
Risposta: Errore : tipo di chiamata non valido
{
"message": "Invalid call type"
}
Codice di stato: 400
Richiedere l'adattatore chiamate tramite più numeri in uscita
In questo esempio mostriamo come richiedere all'adattatore chiamate più numeri di telefono in uscita.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "admin@somedomain.com",
"end_user_number": "+1 859-657-9625",
"lang": "en"
}
Codice di stato: 202
Accettato : l'agente deve effettuare una chiamata in uscita con l'ID ticket
In questo esempio mostriamo come effettuare una chiamata in uscita con un ID ticket e l'agente accetta la richiesta.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Risposta: Errore : l'agente non ha accesso per effettuare chiamate
{
"message": "Agent does not have access to make calls"
}
Codice di stato: 400
Crea una chiamata in uscita con l'ID ticket.
In questo esempio mostriamo lo scenario di creazione di una chiamata in uscita con un ID ticket.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "admin@somedomain.com",
"ticket_id": "71450",
"outbound_number": "+1 339-219-5276",
"lang": "en"
}
Risposta: crea una chiamata in uscita con ticket_id
{
"id": 398,
"lang": "en",
"call_type": "Voice Outbound (API)",
"status": "assigned",
"created_at": "2019-06-07T01:28:47.955Z",
"queued_at": null,
"assigned_at": "2019-06-07T01:28:47.971Z",
"connected_at": null,
"ends_at": null,
"scheduled_at": null,
"wait_duration": 0,
"call_duration": 0,
"hold_duration": 0,
"rating": null,
"has_feedback": false,
"voip_provider": "voip_provider_twilio",
"out_ticket_id": "71450",
"out_ticket_url": null,
"verified": false,
"recording_url": null,
"recording_permission": "not_asked",
"voicemail_reason": "not_voicemail",
"deflection": "no_deflection",
"disconnected_by": "disconnected_by_unknown",
"fail_reason": "nothing",
"fail_details": null,
"support_number": null,
"selected_menu": null,
"menu_path": null,
"agent_info": {
"id": 1,
"agent_number": null,
"name": "Admin UJET",
"last_name": "UJET",
"first_name": "Admin",
"avatar_url": "https://somedomain.com/default-profile.png"
},
"end_user": {
"id": 67,
"identifier": null,
"out_contact_id": "381630957514"
},
"photos": [],
"videos": [],
"transfers": [],
"deflection_details": [],
"participants": [
{
"id": 612,
"type": "agent",
"status": "waiting",
"call_id": 398,
"user_id": 1,
"end_user_id": null,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
},
{
"id": 613,
"type": "end_user",
"status": "waiting",
"call_id": 398,
"user_id": null,
"end_user_id": 67,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
}
],
"offer_type": null,
"offer_events": [],
"answer_type": "manual",
"outbound_number": "+1 339-219-5276"
}
Codice di stato: 201
Accettato : devi scegliere un numero in uscita
In questo esempio mostriamo lo scenario in cui viene creata una richiesta di chiamata in uscita con la necessità di scegliere un numero in uscita e poi viene accettata.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Codice di stato: 202
Errore : l'agente non è disponibile per rispondere a questa chiamata
In questo esempio mostriamo lo scenario di errore in cui viene creata una chiamata, ma l'agente non è disponibile per accettarla.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Risposta: Errore : l'agente non è disponibile a rispondere a questa chiamata
{
"message": "Agent is not available to take this call"
}
Codice di stato: 400
Errore : il numero dell'utente finale non è ben formato
In questo esempio mostriamo lo scenario di errore in cui il numero di telefono dell'utente finale fornito non è formato correttamente.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"outbound_number": "+1 760-410-8538",
"end_user_number": "123123",
"lang": "en"
}
Risposta: Errore : end_user_number non è ben formato
{
"message": "end_user_number is not well-formed"
}
Codice di stato: 400
Errore : l'email dell'agente non è valida
In questo esempio mostriamo lo scenario di errore in cui l'email dell'agente fornita non è valida.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "admin@somedomain.com",
"end_user_number": "+1 205-123-4567",
"lang": "en"
}
Risposta: Errore : l'email dell'agente non è valida
{
"message": "Not a valid agent email"
}
Codice di stato: 400
Errore : contatto non trovato
In questo esempio mostriamo lo scenario di errore in cui non è stato possibile trovare il contatto fornito.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Outbound (API)",
"agent_email": "allen@somedomain.com",
"outbound_number": "+1 760-410-8538",
"ticket_id": 1,
"lang": "en"
}
Risposta: Errore : contatto non trovato
{
"message": "Contact not found"
}
Codice di stato: 400
Chiamata in arrivo
| Parametro | Obbligatorio | Tipo di dati | Definizione |
|---|---|---|---|
| call_type | VERO | Stringa | Il tipo di chiamata da creare. Utilizza "Voice Inbound (API)" o "IncomingCall" (ritirato) per creare una chiamata in arrivo. |
| menu_id | VERO | Numero intero | L'ID del menu a cui attribuire la chiamata. Sono accettati solo gli ID menu IVR e web. |
| end_user_number | VERO | Stringa | Il numero di telefono dell'utente finale che verrà chiamato. Se vengono passati sia un ticket_id che un end_user_number, il ticket_id avrà la precedenza. |
| lang | FALSE | Stringa | Lingua della chiamata. Utilizza i codici ISO 639-1. (Valore predefinito: "en") |
| ticket_id | FALSE | Stringa | ID ticket CRM. Verrà composto il numero di telefono dell'utente finale associato al ticket. Se vengono passati sia un ticket_id che un end_user_number, il ticket_id avrà la precedenza. |
| outbound_number | FALSE | Stringa | Il numero di telefono in uscita da utilizzare per la chiamata. Se l'input non viene passato o non è valido, verrà utilizzato il numero di telefono in uscita globale predefinito. I numeri in uscita vengono gestiti da Impostazioni > Coda > MODIFICA / VISUALIZZA > Seleziona una coda > Numeri di telefono in uscita. |
| recording_permission | FALSE | Stringa | Il valore viene valutato solo se la funzionalità "Opzioni di registrazione delle chiamate" è impostata su "Chiedi all'utente l'autorizzazione a registrare". Configurabile in Impostazioni > Coda > MODIFICA / VISUALIZZA > Seleziona una coda > Opzioni di registrazione delle chiamate. Se il valore è "recording_permission_not_asked" (predefinito) o "recording_permission_denied", la chiamata non verrà registrata. Se il valore è "recording_permission_granted", la chiamata verrà registrata. |
Endpoint:
Method: POST
Type: RAW
URL: https://{{subdomain}}.{{domain}}/apps/api/v1/calls
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": 9,
"ticket_id": "76517",
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Esempio di richiesta e risposte
Le sezioni seguenti forniscono richieste di esempio all'endpoint.
Errore : il numero dell'utente finale non è ben formato
In questo esempio mostriamo lo scenario di errore in cui viene creata una chiamata in entrata, ma il numero dell'utente finale fornito è formato in modo errato.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": 9,
"end_user_number": "+1 999-657-12",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : end_user_number non è ben formato
{
"message": "end_user_number is not well formed"
}
Codice di stato: 400
Errore : il menu è in stato di "reindirizzamento manuale", non è possibile accettare chiamate
In questo esempio mostriamo lo scenario di errore in cui una chiamata viene indirizzata a un ID menu, ma il menu è in stato di reindirizzamento manuale e pertanto non può ricevere chiamate in arrivo.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : il menu è in stato di "reindirizzamento manuale", non è possibile accettare chiamate
{
"message": "Menu is in 'manual redirection' state, can't accept calls"
}
Codice di stato: 400
Errore : tipo di chiamata non valido
In questo esempio mostriamo lo scenario di errore in cui viene creata una chiamata in arrivo, ma il tipo di chiamata fornito non è valido.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "InvalidCallType",
"lang": "en",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : tipo di chiamata non valido
{
"message": "Invalid call type"
}
Codice di stato: 400
Errore : l'ID menu è obbligatorio
In questo esempio mostriamo lo scenario di errore in cui viene creata una chiamata in entrata, ma l'ID menu fornito non è valido.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : menu_id è obbligatorio
{
"message": "menu_id is required"
}
Codice di stato: 400
Errore : sono consentiti solo ID menu IVR e mobile
In questo esempio mostriamo lo scenario di errore in cui viene creata una chiamata in arrivo, ma l'ID menu fornito non è un ID menu IVR o mobile.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": 50,
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : sono consentiti solo ID menu IVR e mobile
{
"message": "Only IVR and mobile menu IDs are permitted"
}
Codice di stato: 400
Crea una chiamata in entrata con il numero dell'utente finale
Questo esempio mostra come creare una chiamata in entrata con un numero specifico dell'utente finale.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": 9,
"end_user_number": "+82-10-6861-2345",
"recording_permission": "recording_permission_granted"
}
Risposta: crea una chiamata in arrivo con end_user_number
{
"id": 515,
"lang": "en",
"call_type": "Voice Inbound (API)",
"status": "queued",
"created_at": "2019-09-10T00:19:14.000Z",
"queued_at": "2019-09-10T00:19:14.421Z",
"assigned_at": null,
"connected_at": null,
"ends_at": null,
"scheduled_at": null,
"wait_duration": 0,
"call_duration": 0,
"hold_duration": 0,
"rating": null,
"has_feedback": false,
"out_ticket_id": null,
"out_ticket_url": null,
"verified": false,
"recording_url": null,
"recording_permission": "not_asked",
"voicemail_reason": "not_voicemail",
"deflection": "no_deflection",
"disconnected_by": "disconnected_by_unknown",
"fail_reason": "nothing",
"fail_details": null,
"support_number": null,
"selected_menu": {
"id": 9,
"name": "Lock Star",
"parent_id": null,
"position": 0,
"deleted": false,
"menu_type": "ivr_menu",
"output_msg": "You selected Lock Star.",
"hidden": false
},
"menu_path": {
"items_count": 1,
"name": "Lock Star",
"materialized_path": "9"
},
"agent_info": null,
"end_user": {
"id": 75,
"identifier": null,
"out_contact_id": "389391400633"
},
"photos": [],
"videos": [],
"transfers": [],
"deflection_details": [],
"participants": [
{
"id": 820,
"type": "end_user",
"status": "waiting",
"call_id": 515,
"user_id": null,
"end_user_id": 75,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
}
],
"offer_type": "cascade",
"offer_events": [
{
"casting_time": "2019-09-10T00:19:14.000Z",
"group": "Group 1"
}
],
"answer_type": "manual",
"outbound_number": "+1 339-219-5276"
}
Codice di stato: 201
Errore : il menu è in stato "fuori orario", non è possibile accettare chiamate in arrivo
Questo esempio mostra l'errore quando l'ID menu fornito è nello stato dopo l'orario di chiusura.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : il menu è in stato "fuori orario", non è possibile accettare chiamate in arrivo
{
"message": "Menu is in 'after hours' state, can't accept incoming calls"
}
Codice di stato: 400
Errore : la lingua non è disponibile
Questo esempio mostra la richiesta non riuscita quando la lingua specificata non è disponibile.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Inbound (API)",
"lang": "fr",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : la lingua non è disponibile
{
"message": "Language 'fr' is not available"
}
Codice di stato: 400
Crea una chiamata in arrivo con l'ID ticket
Questo esempio mostra la richiesta di creazione di una chiamata in entrata con un ID ticket associato.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": 9,
"ticket_id": "76517",
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Risposta: crea una chiamata in arrivo con ticket_id
{
"id": 519,
"lang": "en",
"call_type": "Voice Inbound (API)",
"status": "queued",
"created_at": "2019-09-10T05:12:26.000Z",
"queued_at": "2019-09-10T05:12:26.295Z",
"assigned_at": null,
"connected_at": null,
"ends_at": null,
"scheduled_at": null,
"wait_duration": 0,
"call_duration": 0,
"hold_duration": 0,
"rating": null,
"has_feedback": false,
"out_ticket_id": "76517",
"out_ticket_url": null,
"verified": false,
"recording_url": null,
"recording_permission": "not_asked",
"voicemail_reason": "not_voicemail",
"deflection": "no_deflection",
"disconnected_by": "disconnected_by_unknown",
"fail_reason": "nothing",
"fail_details": null,
"support_number": null,
"selected_menu": {
"id": 9,
"name": "Lock Star",
"parent_id": null,
"position": 0,
"deleted": false,
"menu_type": "ivr_menu",
"output_msg": "You selected Lock Star.",
"hidden": false
},
"menu_path": {
"items_count": 1,
"name": "Lock Star",
"materialized_path": "9"
},
"agent_info": null,
"end_user": {
"id": 75,
"identifier": null,
"out_contact_id": "389391400633"
},
"photos": [],
"videos": [],
"transfers": [],
"deflection_details": [],
"participants": [
{
"id": 826,
"type": "end_user",
"status": "waiting",
"call_id": 519,
"user_id": null,
"end_user_id": 75,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
}
],
"offer_type": "cascade",
"offer_events": [
{
"casting_time": "2019-09-10T05:12:26.000Z",
"group": "Group 1"
}
],
"answer_type": "manual",
"outbound_number": "+1 339-219-5276"
}
Codice di stato: 201
Errore : lingua non trovata
Questo esempio mostra l'errore quando la lingua fornita non viene trovata.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Inbound (API)",
"lang": "xy",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : lingua non trovata
{
"message": "Language 'xy' is not found"
}
Codice di stato: 400
Errore : menu_id non trovato
Questo esempio mostra l'errore quando l'ID menu fornito non viene trovato.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": 9999,
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : menu_id non trovato
{
"message": "menu_id 9999 is not found"
}
Codice di stato: 400
Errore : menu_id non è ben formato
Questo esempio mostra l'errore quando l'ID menu fornito non è corretto.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": "menu_999",
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : menu_id non è ben formato
{
"message": "menu_id is not well formed"
}
Codice di stato: 400
Errore : il numero dell'utente finale è obbligatorio
In questo esempio mostriamo lo scenario di errore in cui viene creata una chiamata in entrata, ma non è stato fornito il numero di telefono dell'utente finale.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Inbound (API)",
"lang": "en",
"menu_id": 9,
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : end_user_number è obbligatorio
{
"message": "end_user_number is required"
}
Codice di stato: 400
Chiamata pianificata
| Parametro | Obbligatorio | Tipo di dati | Definizione |
|---|---|---|---|
| call_type | VERO | Stringa | Il tipo di chiamata da creare. Utilizza "Voice Scheduled (API)" o "ScheduledCall" (ritirato) per creare una chiamata pianificata. |
| menu_id | VERO | Numero intero | L'ID del menu a cui attribuire la chiamata. Sono accettati solo gli ID menu per dispositivi mobili e web. |
| call_id | FALSE | Numero intero | ID chiamata della chiamata precedente, che verrà collegata come chiamata principale della nuova chiamata pianificata creata. Quando viene utilizzato l'ID chiamata, menu_id può essere facoltativo. |
| end_user_number | VERO | Stringa | Il numero di telefono dell'utente finale che verrà chiamato. Se vengono passati sia un ticket_id che un end_user_number, il ticket_id avrà la precedenza. |
| lang | FALSE | Stringa | Lingua della chiamata. Utilizza i codici ISO 639-1. (Valore predefinito: "en") |
| ticket_id | FALSE | Stringa | ID ticket CRM. Verrà composto il numero di telefono dell'utente finale associato al ticket. Se vengono passati sia un ticket_id che un end_user_number, il ticket_id avrà la precedenza. |
| scheduled_at | VERO | Stringa | Orario pianificato della chiamata. Utilizza il formato ISO 8601 per un orario futuro valido. |
| recording_permission | FALSE | Stringa | Il valore viene valutato solo se la funzionalità "Opzioni di registrazione delle chiamate" è impostata su "Chiedi all'utente l'autorizzazione a registrare". Configurabile in Impostazioni > Coda > MODIFICA / VISUALIZZA > Seleziona una coda > Opzioni di registrazione delle chiamate. Se il valore è "recording_permission_not_asked" (predefinito) o "recording_permission_denied", la chiamata non verrà registrata. Se il valore è "recording_permission_granted", la chiamata verrà registrata. |
Endpoint:
Method: POST
Type: RAW
URL: https://{{subdomain}}.{{domain}}/apps/api/v1/calls
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": 9,
"ticket_id": "76517",
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Esempio di richiesta e risposte
Le sezioni seguenti forniscono richieste di esempio all'endpoint.
Errore : end_user_number non è ben formato
Questo esempio mostra l'errore dovuto alla formattazione errata di end_user_namber.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": 9,
"end_user_number": "+1 999-657-12",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : end_user_number non è ben formato
{
"message": "end_user_number is not well formed"
}
Codice di stato: 400
Errore : il menu è in stato di "reindirizzamento manuale", non è possibile accettare chiamate
Questo esempio mostra l'errore quando l'ID menu specificato è impostato sul reindirizzamento del menu e non è in grado di accettare chiamate.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : il menu è in stato di "reindirizzamento manuale", non è possibile accettare chiamate
{
"message": "Menu is in 'manual redirection' state, can't accept calls"
}
Codice di stato: 400
Errore : tipo di chiamata non valido
Questo esempio mostra l'errore che si verifica quando viene effettuata una richiesta e il tipo di chiamata non è valido.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "InvalidCallType",
"lang": "en",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : tipo di chiamata non valido
{
"message": "Invalid call type"
}
Codice di stato: 400
Errore : menu_id è obbligatorio
Questo esempio mostra la richiesta e la risposta quando un ID menu non viene fornito, ma è obbligatorio.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : menu_id è obbligatorio
{
"message": "menu_id is required"
}
Codice di stato: 400
Errore : sono consentiti solo gli ID menu web e mobile
Questo esempio mostra una richiesta che non va a buon fine quando viene fornito un ID menu che non è un ID menu web o mobile.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": 50,
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : sono consentiti solo gli ID menu web e mobile
{
"message": "Only mobile and web menu IDs are permitted"
}
Codice di stato: 400
Crea una chiamata programmata con l'ID menu
Questo esempio mostra come creare una chiamata pianificata con un ID menu specifico.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": 9,
"end_user_number": "+82-10-6861-2345",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Risposta: crea una chiamata pianificata con l'ID menu
{
"id": 515,
"lang": "en",
"call_type": "Voice Inbound (API)",
"status": "queued",
"created_at": "2019-09-10T00:19:14.000Z",
"queued_at": null,
"assigned_at": null,
"connected_at": null,
"ends_at": null,
"scheduled_at": "2019-09-15T00:19:14.421Z",
"wait_duration": 0,
"call_duration": 0,
"hold_duration": 0,
"rating": null,
"has_feedback": false,
"out_ticket_id": null,
"out_ticket_url": null,
"verified": false,
"recording_url": null,
"recording_permission": "not_asked",
"voicemail_reason": "not_voicemail",
"deflection": "no_deflection",
"disconnected_by": "disconnected_by_unknown",
"fail_reason": "nothing",
"fail_details": null,
"support_number": null,
"selected_menu": {
"id": 9,
"name": "Lock Star",
"parent_id": null,
"position": 0,
"deleted": false,
"menu_type": "ivr_menu",
"output_msg": "You selected Lock Star.",
"hidden": false
},
"menu_path": {
"items_count": 1,
"name": "Lock Star",
"materialized_path": "9"
},
"agent_info": null,
"end_user": {
"id": 75,
"identifier": null,
"out_contact_id": "389391400633"
},
"photos": [],
"videos": [],
"transfers": [],
"deflection_details": [],
"participants": [
{
"id": 820,
"type": "end_user",
"status": "waiting",
"call_id": 515,
"user_id": null,
"end_user_id": 75,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
}
],
"offer_type": "cascade",
"offer_events": [
{
"casting_time": "2019-09-10T00:19:14.000Z",
"group": "Group 1"
}
],
"answer_type": "manual",
"outbound_number": "+1 339-219-5276"
}
Codice di stato: 201
Creare una chiamata pianificata con l'ID chiamata
Questo esempio mostra come creare una chiamata pianificata con un ID chiamata specifico.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"call_id": 514,
"end_user_number": "+82-10-6861-2345",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Risposta: crea una chiamata pianificata con ID chiamata
{
"id": 515,
"lang": "en",
"call_type": "Voice Inbound (API)",
"status": "queued",
"created_at": "2019-09-10T00:19:14.000Z",
"queued_at": null,
"assigned_at": null,
"connected_at": null,
"ends_at": null,
"scheduled_at": "2019-09-15T00:19:14.421Z",
"wait_duration": 0,
"call_duration": 0,
"hold_duration": 0,
"rating": null,
"has_feedback": false,
"out_ticket_id": null,
"out_ticket_url": null,
"verified": false,
"recording_url": null,
"recording_permission": "not_asked",
"voicemail_reason": "not_voicemail",
"deflection": "no_deflection",
"disconnected_by": "disconnected_by_unknown",
"fail_reason": "nothing",
"fail_details": null,
"support_number": null,
"selected_menu": {
"id": 9,
"name": "Lock Star",
"parent_id": null,
"position": 0,
"deleted": false,
"menu_type": "ivr_menu",
"output_msg": "You selected Lock Star.",
"hidden": false
},
"menu_path": {
"items_count": 1,
"name": "Lock Star",
"materialized_path": "9"
},
"agent_info": null,
"end_user": {
"id": 75,
"identifier": null,
"out_contact_id": "389391400633"
},
"photos": [],
"videos": [],
"transfers": [],
"deflection_details": [],
"participants": [
{
"id": 820,
"type": "end_user",
"status": "waiting",
"call_id": 515,
"user_id": null,
"end_user_id": 75,
"call_duration": null,
"hold_duration": null,
"connected_at": null,
"ended_at": null,
"fail_reason": "nothing"
}
],
"offer_type": "cascade",
"offer_events": [
{
"casting_time": "2019-09-10T00:19:14.000Z",
"group": "Group 1"
}
],
"answer_type": "manual",
"outbound_number": "+1 339-219-5276"
}
Codice di stato: 201
Errore : il menu è in stato "fuori orario", non è possibile accettare chiamate in arrivo
In questo esempio mostriamo lo scenario di errore in cui viene creata una chiamata pianificata, ma il menu fornito non è disponibile e pertanto non può ricevere chiamate in entrata.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : il menu è in stato "fuori orario", non è possibile accettare chiamate in arrivo
{
"message": "Menu is in 'after hours' state, can't accept incoming calls"
}
Codice di stato: 400
Errore : la lingua non è disponibile
Questo esempio mostra l'errore quando la lingua specificata non è valida.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Scheduled (API)",
"lang": "fr",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : la lingua non è disponibile
{
"message": "Language 'fr' is not available"
}
Codice di stato: 400
Errore : lingua non trovata
In questo esempio mostriamo lo scenario di errore in cui viene creata una chiamata pianificata, ma la lingua non è valida o non è disponibile.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Scheduled (API)",
"lang": "xy",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : lingua non trovata
{
"message": "Language 'xy' is not found"
}
Codice di stato: 400
Errore : ID menu non trovato
In questo esempio mostriamo lo scenario di errore in cui viene creata una chiamata pianificata, ma l'ID menu fornito non è valido e non viene trovato.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": 9999,
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : ID menu non trovato
{
"message": "menu_id 9999 is not found"
}
Codice di stato: 400
Errore : l'ID menu non è ben formato
In questo esempio mostriamo lo scenario di errore in cui viene creata una chiamata pianificata, ma l'ID menu fornito non è formato correttamente.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": "menu_999",
"end_user_number": "+1 859-657-9625",
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : menu_id non è ben formato
{
"message": "menu_id is not well formed"
}
Codice di stato: 400
Errore : il numero dell'utente finale è obbligatorio
In questo esempio mostriamo lo scenario di errore in cui viene creata una chiamata pianificata, ma non è stato fornito il numero dell'utente finale.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": 9,
"scheduled_at": "2019-09-15T00:19:14.421Z",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : end_user_number è obbligatorio
{
"message": "end_user_number is required"
}
Codice di stato: 400
Errore : scheduled_at è obbligatorio
In questo esempio mostriamo lo scenario di errore in cui viene creata una chiamata pianificata, ma il valore di pianificazione è mancante ma obbligatorio.
Richiesta
Intestazioni:
| Chiave | Valore | Descrizione |
|---|---|---|
| Content-Type | application/json |
Corpo:
{
"call_type": "Voice Scheduled (API)",
"lang": "en",
"menu_id": 9,
"end_user_number": "+1 859-657-9625",
"recording_permission": "recording_permission_granted"
}
Risposta: Errore : scheduled_at è obbligatorio
{
"message": "scheduled_at is required"
}
Codice di stato: 400
Recuperare gli attributi dei dati riservati durante una chiamata
Endpoint
Method: GET
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/calls/:id/customer_flag
Esempio di richiesta e risposte
Questa sezione contiene una richiesta e una risposta di esempio per l'endpoint.
Operazione riuscita
Questo esempio mostra una chiamata riuscita.
Richiesta
Variabili URL
| Chiave | Valore | Descrizione |
|---|---|---|
| id | integer | (Obbligatorio) |
Risposta
{
"verified_customer": "boolean",
"bad_actor": "boolean",
"repeat_customer": "boolean"
}
Codice di stato 0
Aggiornare gli attributi dei dati riservati durante una chiamata
Endpoint
Method: PATCH
Type: RAW
URL: https://{subdomain}.{domain}/apps/api/v1/calls/:id/customer_flag
Variabili URL
| Chiave | Valore | Descrizione |
|---|---|---|
| id | integer | (Obbligatorio) |
Body
{
"verified_customer": "boolean",
"bad_actor": "boolean",
"repeat_customers": "boolean"
}
Trasferire parametri di dati agli agenti virtuali a metà sessione
Per utilizzare l'API delle app per trasmettere i parametri dei dati agli agenti virtuali a metà di una sessione di chiamata, consulta Trasmettere i parametri dei dati agli agenti virtuali a metà sessione.