Rubrica
Rubrica aziendale e personale degli interni. I contatti danno il nome mostrato sul display dei telefoni per le chiamate in arrivo, possono essere VIP (priorità) o bloccati. Scope contacts:read / contacts:write.
Contatti
curl -s -X POST https://centralino.exovoip.it/api/v1/contacts \
-H "X-API-Key: $EXOPBX_API_KEY" -H "Content-Type: application/json" \
-d '{"name":"Laura Neri","company":"Neri Impianti","vip":true,
"numbers":[{"number":"+393471234567","label":"mobile"}]}'
curl -s "https://centralino.exovoip.it/api/v1/contacts/lookup?number=%2B393471234567" -H "X-API-Key: $EXOPBX_API_KEY"await pbx.contacts.create({
name: 'Laura Neri',
company: 'Neri Impianti',
vip: true,
numbers: [{ number: '+393471234567', label: 'mobile' }],
});
const { match } = await pbx.contacts.lookup({ number: '+393471234567' }); // nome mostrato sul display$pbx->contacts->create([
'name' => 'Laura Neri',
'company' => 'Neri Impianti',
'vip' => true,
'numbers' => [['number' => '+393471234567', 'label' => 'mobile']],
]);
$match = $pbx->contacts->lookup(number: '+393471234567')['match'];pbx.contacts.create({
"name": "Laura Neri",
"company": "Neri Impianti",
"vip": True,
"numbers": [{"number": "+393471234567", "label": "mobile"}],
})
match = pbx.contacts.lookup(number="+393471234567")["match"]ownerExtensionId: assente per i contatti aziendali, valorizzato per quelli personali di un interno.numbers[]: uno o più numeri con etichetta.vip,blocked: contatto prioritario / chiamate bloccate (azione definita nelle impostazioni).- Ricerca:
q,tag,vip,blocked,scope(all,company,personal).
GET /v1/contacts/lookup?number= restituisce il contatto associato a un numero, con le stesse regole usate dal centralino per il nome sul display.
Importazione ed esportazione
curl -s -X POST https://centralino.exovoip.it/api/v1/contacts/import \
-H "X-API-Key: $EXOPBX_API_KEY" -H "Content-Type: application/json" \
-d '{"format":"csv","onDuplicate":"update","data":"nome;telefono\nLaura Neri;+393471234567"}'
curl -s "https://centralino.exovoip.it/api/v1/contacts/export?format=vcard" -H "X-API-Key: $EXOPBX_API_KEY" -o rubrica.vcfawait pbx.contacts.import({
format: 'csv',
onDuplicate: 'update',
data: 'nome;telefono\nLaura Neri;+393471234567',
});
const vcf = await pbx.contacts.export({ format: 'vcard' });$pbx->contacts->import(['format' => 'csv', 'onDuplicate' => 'update', 'data' => "nome;telefono\nLaura Neri;+393471234567"]);
$vcf = $pbx->contacts->export(format: 'vcard');pbx.contacts.import_({"format": "csv", "onDuplicate": "update", "data": "nome;telefono\nLaura Neri;+393471234567"})
vcf = pbx.contacts.export(format="vcard")L'importazione accetta CSV e vCard; con onDuplicate si sceglie se aggiornare (update, predefinito) o saltare (skip) i contatti già presenti. L'esportazione produce CSV o vCard.
Impostazioni
PUT /v1/contacts/settings: ricerca del nome attiva, ordine di ricerca, prefisso per i VIP, nome dell'azienda nel display, azione per i numeri bloccati.
Endpoint
| Descrizione | Richiesta | Scope | Metodo SDK |
|---|---|---|---|
| Rubrica aziendale e personale | GET /v1/contacts | contacts:read | contacts.list() |
| Crea contatto | POST /v1/contacts | contacts:write | contacts.create() |
| Ricerca per numero (nome sul display) | GET /v1/contacts/lookup | contacts:read | contacts.lookup() |
| Importa CSV / vCard | POST /v1/contacts/import | contacts:write | contacts.import() |
| Esporta CSV / vCard | GET /v1/contacts/export | contacts:read | contacts.export() |
| Impostazioni ricerca nome e blacklist | GET /v1/contacts/settings | contacts:read | contacts.getSettings() · py: contacts.get_settings() |
| Modifica impostazioni rubrica | PUT /v1/contacts/settings | contacts:write | contacts.setSettings() · py: contacts.set_settings() |
| Dettaglio contatto | GET /v1/contacts/:id | contacts:read | contacts.get() |
| Modifica contatto (numbers sostituisce) | PATCH /v1/contacts/:id | contacts:write | contacts.update() |
| Elimina contatto | DELETE /v1/contacts/:id | contacts:write | contacts.delete() |
