Documentazione API web – v 1.0

Transcript

Documentazione API web – v 1.0
Documentazione API web – v 1.0
Web: www.kalliopepbx.it
Supporto tecnico: [email protected]
Documentazione API web – v1.0
-1-
Rev.: 05-09-2011
NetResults S.r.l.
Via Giuntini, 63 – 56023 - Navacchio di Cascina (PI)
Tel. +39 050 754730
Web: http://www.netresults.it – E-mail: [email protected]
Documentazione API web – v1.0
-2-
Rev.: 05-09-2011
Changelog
Versione 1.0 – Release KalliopePBX 3.7.4
Con il firmware 3.7.4 è stato aggiunto il supporto ad HTTPS (su porta standard 443) per
accedere all’API, mediante l’utilizzo di un certificato self-signed da una Autorità di
Certificazione interna.
La versione dell’API rimane 1.0 in quanto non sono state effettuate modifiche all’interfaccia.
Documentazione API web – v1.0
-3-
Rev.: 05-09-2011
Introduzione
A partire dalla release firmware 3.7.3, sono disponibili API web per l’integrazione di alcune
funzioni telefoniche offerte da KalliopePBX in software di terze parti. Questo documento
illustra le API introdotte, specificandone modalità di invocazione e relativo effetto/risposta.
Attualmente sono disponibili API dedicate alla consultazione del registro chiamate (CDR) ed al
servizio click-to-dial, invocate mediante metodi http GET/POST.
Ad ogni richiesta corrisponde una eventuale azione da parte di KalliopePBX ed una risposta
contenente i dati richiesti e/o l’esito della richiesta. La risposta viene fornita in formato
JSON, uno standard orientato alla rappresentazione in formato human-readable di strutture
dati generiche.
L’API è accessibile al seguente URL1:
http://<IP_KalliopePBX>/api/?<arg1>=<val1>[&<arg2>=<val2>[&…]]
Gli argomenti che vengono passati all’API includono il comando richiesto, le eventuali
credenziali di autenticazione, e gli eventuali parametri dello specifico comando. Nel seguito
vengono descritti in dettaglio il formato di invocazione dei singoli comandi ed i relativi
messaggi di risposta che costituiscono la versione corrente dell’API.
1
Con la release firmware 3.7.4 è possibile accedere all’API anche mediante HTTPS.
Documentazione API web – v1.0
-4-
Rev.: 05-09-2011
Descrizione API
L’indicazione del comando richiesto è effettuata utilizzando l’argomento “command”, che
può assumere uno dei seguenti valori:

version

c2c

cdr
Ad esclusione del comando “version”, che non richiede autenticazione, gli altri richiedono
che vengano passate all’API le credenziali di autenticazione e controllo di autorizzazione. Le
credenziali di autenticazione sono passate utilizzando i due parametri “user” e “password”:
http://<IP_KalliopePBX>/api/?command=<comando>&
user=<username>&password=<md5pwd>&...
Le credenziali utilizzate per le API sono le stesse utilizzate per il pannello WEB utente. In
aggiunta agli username degli utenti abilitati, per alcuni comandi sono validi anche gli utenti
“admin” (l’amministratore del PBX) e “cdradmin” (l’utente abilitato alla visualizzazione non
oscurata del CDR). Le password non vengono fornite in clear-text ma tramite il relativo hash
md5.
Ogni invocazione dell’API genera, oltre all’eventuale azione, una risposta in formato JSON.
Tutte le risposte hanno il medesimo formato:
{
"banner": "KalliopePBX web API",
"api_version": "1.0",
"command": <comando>,
"exit_code": <exit_code>,
"exit_msg": <exit_message>,
"data": []
}
dove:

“banner” è una stringa prefissata che identifica KalliopePBX come originatore della
risposta;

“api_version” è una stringa che contiene la versione dell’API che ha originato la
risposta;
Documentazione API web – v1.0
-5-
Rev.: 05-09-2011

“command” è una stringa che riporta il comando invocato;

“exit_code” è un codice numerico che, mediante il valore assunto, identifica l’esito
dell’invocazione del comando, secondo quanto specificato nel seguito;

“exit_msg” è una stringa contenente una descrizione sommaria dell’esito del
comando.

“data” è un array contente l’eventuale informazione richiesta a KalliopePBX (es. il
registro chiamate)
I valori dell’exit_code dipendono dal particolare comando richiesto. Sono presenti alcuni
codici comuni a tutti i comandi, raccolti nella tabella seguente insieme ai corrispondenti
messaggi, ma ciascun comando estende tale set con codici specifici (questi sono elencati
nella descrizione di ciascun messaggio).
exit_code
exit_msg
0
Success
1
Internal Error
2
Missing or unknown command
3
Authentication error
4
Missing or wrong argument
Documentazione API web – v1.0
descrizione
Comando completato con successo
Errore interno all’API
Comando
mancante,
non
specificato
o
sconosciuto
Errore di autenticazione (username e/o
password errati o vuoti)
Uno o più parametri necessari al comando
specificato sono mancanti o di tipo errato
-6-
Rev.: 05-09-2011
Comandi
Di seguito si riportano i comandi disponibili e le relative modalità di invocazione (parametri),
insieme alla descrizione dell’effetto del comando e della risposta attesa. Per quei comandi
che prevedono messaggi di errore addizionali rispetto a quelli base, ne vengono riportati
codici e descrizione.
La tabella seguente raccoglie tutti i comandi disponibili, specificando per ciascuno di essi le
versioni di API in cui è stato introdotto ed in cui ne è stato modificato.
Comando
Versione API introduzione
Versione API ultima modifica
c2c
1.0 (fw 3.7.3)
1.0 (fw 3.7.3)
cdr
1.0 (fw 3.7.3)
1.0 (fw 3.7.3)
version
1.0 (fw 3.7.3)
1.0 (fw 3.7.3)
- c2c
Implementa la funzione click-to-call (o click-to-dial). All’invocazione, il KalliopePBX farà
squillare il telefono dell’utente, e quando questi risponde (con timeout 10 secondi) verrà
generata la chiamata verso il numero richiesto.
Il comando richiede autenticazione con credenziali associate ad un interno (gli username
“admin” e “cdradmin” non sono utenti validi).
Il comando supporta i seguenti parametri (M: Mandatory, O: Optional):
Parametro
M/O
number
M
Descrizione
Numero telefonico che deve essere chiamato, eventualmente
comprensivo di prefisso internazionale
Tipologia di numero. Può assumere i valori
type
O
-
“exten” (il numero specificato è un interno del centralino),
-
“out” (il numero specificato è un numero esterno)
Nel caso in cui questo parametro sia mancante, vuoto o diverso da uno
dei precedenti, KalliopePBX gestirà la chiamata come se fosse
selezionata l’opzione “Ometti lo 0 per le chiamate esterne”,
verificando se il numero specificato corrisponde ad un interno o ad un
servizio del PBX, ed inoltrando altrimenti la chiamata verso l’esterno.
Documentazione API web – v1.0
-7-
Rev.: 05-09-2011
Oltre ai codici e messaggi di risposta standard, ne è previsto uno ulteriore:
exit_code
exit_msg
10
Error
descrizione
Errore di comunicazione con KalliopePBX
nell’attivazione della chiamata
Il comando non prevede di restituire valori nel campo “data” della risposta.
- cdr
Questo comando sostituisce ed estende la web API exportCDR introdotta nella release
firmware 3.7.2 e correntemente deprecata, fornendo uno strumento per l’accesso al registro
chiamate.
Il comando richiede autenticazione con credenziali associate ad un interno, oppure
“cdradmin”. Nel primo caso, viene restituito l’elenco delle chiamate che interessano
l’interno nell’intervallo specificato, limitatamente al periodo di validità dell’utente a cui tale
interno è associato. Nel secondo caso, vengono restituite le chiamate di tutti gli utenti. In
entrambi i casi i numeri chiamanti e chiamati vengono presentati nella loro interezza, e non
in forma anonimizzata.
Il comando supporta i seguenti parametri (M: Mandatory, O: Optional):
Parametro
M/O
Descrizione
La data ed ora di inizio dell’intervallo temporale di interesse, in
begin
M
formato ISO (Y-m-d H:i:s, es. “2011-07-01 14:52:30”), ora locale
adeguatamente codificata per poterla passare nell'URL (2011-0701+14%3A52%3A30).
end
M
La data ed ora di termine dell’intervallo temporale di interesse, in
formato analogo a “begin”
Flag che indica se l’intervallo temporale di interesse si riferisce agli
startFlag
O
istanti di inizio (se “startFlag”=”true”) o di fine (parametro mancante
o diverso da “true”) delle chiamate
Oltre ai codici e messaggi di risposta standard, ne sono previsti ulteriori:
exit_code
exit_msg
descrizione
Uno dei due parametri “begin” o “end” è
10
Invalid date time
mancante
o
formattato
in
modo
non
conforme
11
Invalid date time interval
Documentazione API web – v1.0
L’istante “begin” è successivo all’istante
“end”
-8-
Rev.: 05-09-2011
12
Internal error
Errore durante l’accesso al database del
registro chiamate
Il comando prevede di restituire le singole entry del CDR nel periodo selezionato come
elementi distinti dell’array “data”.
Per ciascun entry del CDR vengono riportate le seguenti informazioni:
dove:
“id”
seriale univoco della forma YYYYMMnnnnnnnn (YYYY=anno,
MM=mese, nnnnnnnn=sequenziale all’interno del mese.
“direction”
assume valori numerici che hanno il seguente significato:
-
1  Chiamata in ingresso (dall’esterno verso un interno)
-
2  Chiamata in uscita (da un interno verso l’esterno)
-
3  Chiamata locale (tra interni)
“caller_num”
Numero telefonico del chiamante.
“caller_name”
Identificativo del chiamante. In caso di chiamata effettuata da
un interno coincide con la stringa “Nome Cognome” impostata
sul PBX. In caso di chiamata proveniente dall’esterno questo
campo viene riempito dal centralino sfruttando la rubrica
telefonica. Se il numero non è contenuto in rubrica, questo
campo rimane vuoto
“called_num”
Numero telefonico del chiamato
“called_name”
Identificativo del chiamante, analogo al “caller_name”
“called_callgroup”
In caso di chiamate in ingresso destinate ad un gruppo o ad una
coda, contiene il nome del gruppo/coda.
“gateway_id”
ID del gateway, come definito su KalliopePBX
“gateway_name”
Nome assegnato al gateway
“status”
assume valori numerici che hanno il seguente significato:
“billsec”
-
1  chiamata fallita
-
2  numero chiamato occupato
-
3  congestione
-
4  chiamata non risposta
-
8  chiamata risposta
Durata effetiva della chiamata, dal momento della risposta al
riaggancio. Assume valori diversi da 0 solo per chiamate il cui
Documentazione API web – v1.0
-9-
Rev.: 05-09-2011
“status” sia pari a “8”; il valore di “billsec” è pari alla
differenza tra gli istanti “end” e “answer”
“start”
Istante di inizio della chiamata
“answer”
Istante di risposta
“end”
Istante di fine della chiamata
“duration”
Durata complessiva della chiamata, pari alla differenza tra gli
istanti “end” e “start”.
Il formato tipico di una invocazione e della relativa risposta sono riportate di seguito:
Request:
http://<IP_KalliopePBX>/api/?command=cdr&
user=cdradmin&
password=1234567890abcdef1234567890abcdef&
begin=2011-06-01+10%3A50%3A00&
end=2011-06-02+10%3A50%3A00&
startFlag=false
Response:
{
"banner": "KalliopePBX web API",
"api_version": "1.0",
"command": "cdr",
"exit_code": 0,
"exit_msg": "Success",
"data": [
{
"id": "20110600000017",
"direction": "2",
"caller_num": "104",
"caller_name": "Nome Cognome",
"called_num": "050123456",
"called_name": "",
"called_callgroup": "",
"gateway_id": "9001",
"gateway_name": "Patton SN4552",
"status": "8",
"billsec": "590",
"start": "2011-06-01 13:35:32",
"answer": "2011-06-01 13:35:50",
"end": "2011-06-01 13:45:40",
"duration": "608"
Documentazione API web – v1.0
- 10 -
Rev.: 05-09-2011
},
{
. . .
}
]
}
Nella response è evidenziata una chiamata in uscita (“direction”: “2”), effettuata
dall’interno 104 verso il numero 050123456 attraverso il gateway Patton SN4552 (con ID
9001); la chiamata è stata effettuata alle 13:35:52 del 01/06/2011, ed è stata risposta
(“status”: “8”) dopo 18 secondi. La conversazione è durata 590 secondi, per un totale di 608
secondi complessivi.
- version
Questo comando non richiede autenticazione (possono essere omessi i campi “user” e
“password”. Permette di verificare la corretta comunicazione con il KalliopePBX, ed ottenere
la versione delle API disponibili. Il codice di uscita del comando è sempre “0” (Success); di
seguito viene riportata l’invocazione del comando e la relativa risposta:
Request:
http://<IP_KalliopePBX>/api/?command=version
Response:
{
"banner": "KalliopePBX web API",
"api_version": "1.0",
"command": version,
"exit_code": 0,
"exit_msg": “Success”,
"data": null
}
Documentazione API web – v1.0
- 11 -
Rev.: 05-09-2011