Passa al contenuto principale

UC-007 — Gestione Contatti e Liste per Campagne

CampoValore
IDUC-007
ObiettivoImportare contatti, creare liste segmentate e prepararle per l'uso in campagne
CanaleTutti
Complessità⭐⭐ Intermedio
Tempo stimato20 minuti
API coinvoltePOST/GET/PUT/DELETE /api/partner-gateway/v1/contacts, POST/GET /contacts/list, POST /contacts/list/contacts, POST /contacts/upload, POST /contacts/upload/vcard

Scenari reali

  • ShopItalia — Import rubrica clienti: Importa l'export dal CRM aziendale (CSV con 5.000 clienti) nella piattaforma per preparare la campagna Black Friday.
  • TurismoVeneto — Segmentazione per regione: Crea liste separate per clienti di Lombardia, Veneto ed Emilia-Romagna per inviare promozioni geolocalizzate sui soggiorni estivi.
  • Studio Legale Ferrara — Rubrica da telefono: Importa la rubrica aziendale in formato VCard per inviare comunicazioni istituzionali via SMS.

Flusso di gestione contatti

Il diagramma mostra i tre percorsi di importazione: aggiunta manuale, upload CSV/Excel o import VCard. Tutti convergono nella verifica e nell'utilizzo in campagna.

Step 1 — Crea una lista contatti

Crea una lista vuota che funzionera da contenitore per i contatti.

curl -X POST https://lora-api.agiletelecom.com/api/partner-gateway/v1/contacts/list \
-H "Content-Type: application/json" \
-H "X-Api-Key: YOUR_API_KEY" \
-d '{
"name": "Clienti Nord Italia",
"description": "Clienti delle regioni Lombardia, Piemonte, Veneto, Emilia-Romagna"
}'

Response — Lista creata

{
"id": 87,
"name": "Clienti Nord Italia",
"description": "Clienti delle regioni Lombardia, Piemonte, Veneto, Emilia-Romagna",
"contactCount": 0,
"createdAt": "2026-04-09T09:00:00Z"
}

:::tip Salva l'ID lista Il campo id e l'identificativo che userai per aggiungere contatti e associare la lista alle campagne. :::

Step 2a — Aggiungi contatti singolarmente

Crea un nuovo contatto nella rubrica e associalo alla lista.

curl -X POST https://lora-api.agiletelecom.com/api/partner-gateway/v1/contacts \
-H "Content-Type: application/json" \
-H "X-Api-Key: YOUR_API_KEY" \
-d '{
"firstName": "Giulia",
"lastName": "Rossi",
"phoneNumber": "+393401234567",
"email": "giulia.rossi@example.it",
"gender": "F",
"city": "Milano",
"province": "MI"
}'

Response — Contatto creato

{
"id": 24501,
"firstName": "Giulia",
"lastName": "Rossi",
"phoneNumber": "+393401234567",
"email": "giulia.rossi@example.it",
"gender": "F",
"city": "Milano",
"province": "MI",
"valid": true,
"createdAt": "2026-04-09T09:01:00Z"
}

Associa il contatto alla lista:

curl -X POST https://lora-api.agiletelecom.com/api/partner-gateway/v1/contacts/list/contacts \
-H "Content-Type: application/json" \
-H "X-Api-Key: YOUR_API_KEY" \
-d '{
"contactIds": [24501],
"listIds": [87]
}'
{
"added": 1,
"skipped": 0
}

:::info Aggiunta multipla Puoi passare più contactIds e più listIds in una sola richiesta per associare N contatti a M liste contemporaneamente. :::

Step 2b — Import bulk da CSV

Per importazioni massive, carica un file CSV o Excel. Il processo avviene in due fasi: upload con anteprima, poi conferma del mapping.

Formato CSV atteso

nome,cognome,telefono,email,citta
Marco,Bianchi,+393489876543,m.bianchi@example.it,Torino
Anna,Verdi,+393331122334,anna.verdi@example.it,Bologna
Luca,Neri,+393201234567,l.neri@example.it,Milano

Fase 1 — Upload e anteprima

curl -X POST https://lora-api.agiletelecom.com/api/partner-gateway/v1/contacts/upload \
-H "X-Api-Key: YOUR_API_KEY" \
-F "file=@clienti_nord_italia.csv" \
-F "listId=87"

Response — File analizzato

{
"uploadId": "upl-a1b2c3d4",
"fileName": "clienti_nord_italia.csv",
"totalRows": 5230,
"parsedRows": 5230,
"columns": ["nome", "cognome", "telefono", "email", "citta"],
"preview": [
{
"nome": "Marco",
"cognome": "Bianchi",
"telefono": "+393489876543",
"email": "m.bianchi@example.it",
"citta": "Torino"
},
{
"nome": "Anna",
"cognome": "Verdi",
"telefono": "+393331122334",
"email": "anna.verdi@example.it",
"citta": "Bologna"
}
]
}

Fase 2 — Conferma mapping colonne

Mappa le colonne del CSV ai campi del sistema e conferma l'import:

curl -X POST https://lora-api.agiletelecom.com/api/partner-gateway/v1/contacts/mapped/file \
-H "Content-Type: application/json" \
-H "X-Api-Key: YOUR_API_KEY" \
-d '{
"uploadId": "upl-a1b2c3d4",
"mapping": {
"nome": "firstName",
"cognome": "lastName",
"telefono": "phoneNumber",
"email": "email",
"citta": "city"
},
"listId": 87
}'

Response — Import completato

{
"imported": 5104,
"duplicates": 98,
"invalid": 28,
"listId": 87,
"totalInList": 5105
}
Dietro le quinte — Processo di import CSV
  1. Upload e parsing: Il file viene caricato e analizzato. Il sistema identifica le colonne e restituisce un'anteprima. Nessun contatto viene ancora creato.
  2. Mapping e conferma: Tu confermi la mappatura delle colonne ai campi del sistema. Solo a questo punto i contatti vengono creati e associati alla lista.
  3. Validazione numeri: I numeri vengono validati in formato internazionale. Numeri malformati o senza prefisso vengono scartati.
  4. Deduplicazione: Contatti con lo stesso numero di telefono vengono conteggiati come duplicates e non inseriti di nuovo.

Questo approccio in due fasi previene errori: puoi verificare che le colonne siano mappate correttamente prima di committare migliaia di record.

Step 2c — Import da VCard

Per importare contatti da una rubrica telefonica in formato .vcf:

curl -X POST https://lora-api.agiletelecom.com/api/partner-gateway/v1/contacts/upload/vcard \
-H "X-Api-Key: YOUR_API_KEY" \
-F "file=@rubrica_aziendale.vcf" \
-F "listId=87"

Response — VCard analizzato

{
"uploadId": "upl-e5f6g7h8",
"fileName": "rubrica_aziendale.vcf",
"totalContacts": 342,
"parsedContacts": 339,
"errors": 3
}

Conferma l'import VCard:

curl -X POST https://lora-api.agiletelecom.com/api/partner-gateway/v1/contacts/mapped/vcard \
-H "Content-Type: application/json" \
-H "X-Api-Key: YOUR_API_KEY" \
-d '{
"uploadId": "upl-e5f6g7h8",
"listId": 87
}'
{
"imported": 335,
"duplicates": 4,
"invalid": 3,
"listId": 87,
"totalInList": 5440
}

:::info Mapping automatico VCard A differenza del CSV, i contatti VCard usano campi standard (FN, TEL, EMAIL, ADR) che vengono mappati automaticamente senza richiedere una configurazione manuale. :::

Step 3 — Verifica i contatti nella lista

Consulta i contatti presenti nella lista con paginazione.

curl -X GET "https://lora-api.agiletelecom.com/api/partner-gateway/v1/contacts/list/87/contacts?page=0&size=10" \
-H "X-Api-Key: YOUR_API_KEY"

Response — Elenco contatti

{
"content": [
{
"id": 24501,
"firstName": "Giulia",
"lastName": "Rossi",
"phoneNumber": "+393401234567",
"email": "giulia.rossi@example.it",
"valid": true
},
{
"id": 24502,
"firstName": "Marco",
"lastName": "Bianchi",
"phoneNumber": "+393489876543",
"email": "m.bianchi@example.it",
"valid": true
}
],
"totalElements": 5440,
"totalPages": 544,
"page": 0,
"size": 10
}

Step 4 — Usa la lista in una campagna

Passa il listId come contactListId nella configurazione della campagna:

curl -X PUT https://lora-api.agiletelecom.com/api/partner-gateway/v1/campaigns/1542 \
-H "Content-Type: application/json" \
-H "X-Api-Key: YOUR_API_KEY" \
-d '{
"sender": "ShopItalia",
"text": "Offerta esclusiva per i clienti del Nord Italia! -30% su tutto con codice NORD30.",
"contactListId": 87
}'

Vedi UC-006 — Campagna SMS Bulk per il flusso completo di invio campagna.

Operazioni aggiuntive

Rimuovi contatti da una lista

curl -X DELETE https://lora-api.agiletelecom.com/api/partner-gateway/v1/contacts/list/contacts \
-H "Content-Type: application/json" \
-H "X-Api-Key: YOUR_API_KEY" \
-d '{
"contactIds": [24501],
"listIds": [87]
}'
{
"removed": 1
}

Cerca contatti per filtro

curl -X GET "https://lora-api.agiletelecom.com/api/partner-gateway/v1/contacts?city=Milano&page=0&size=20" \
-H "X-Api-Key: YOUR_API_KEY"

Riferimento rapido endpoint

AzioneMetodoEndpoint
Lista contattiGET/contacts
Crea contattoPOST/contacts
Aggiorna contattoPUT/contacts/{id}
Elimina contattiDELETE/contacts
Lista delle listeGET/contacts/list
Crea listaPOST/contacts/list
Aggiungi a listaPOST/contacts/list/contacts
Rimuovi da listaDELETE/contacts/list/contacts
Contatti in listaGET/contacts/list/{id}/contacts
Upload CSVPOST/contacts/upload
Upload VCardPOST/contacts/upload/vcard
Conferma CSVPOST/contacts/mapped/file
Conferma VCardPOST/contacts/mapped/vcard

Risultato atteso

StepAzioneRisultato
1POST /contacts/listLista creata con id
2aPOST /contacts + POST /contacts/list/contactsContatto creato e associato alla lista
2bPOST /contacts/upload + POST /contacts/mapped/file5.104 contatti importati da CSV
2cPOST /contacts/upload/vcard + POST /contacts/mapped/vcard335 contatti importati da VCard
3GET /contacts/list/{id}/contactsElenco paginato dei contatti nella lista
4PUT /campaigns/{id} con contactListIdLista associata alla campagna

Prossimi passi