Endpoint di chiamata

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:

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
***Body:*** ```json { "call_type": "Voice Outbound (API)", "agent_email": "allen@somedomain.com", "end_user_number": "+1 205-123-4567", "lang": "en" } ``` ***Status Code:*** 202 #### Error : Agent does not have access to make calls In this example we show the failure scenario where a call creation request is submitted but the agent does not have access to be able to make outbound calls. ##### 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

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.