Passa al contenuto principale

UC-012 — Ciclo di Vita dei Template RCS

CampoValore
IDUC-012
ObiettivoGestire il ciclo completo dei template RCS: creazione, invio, aggiornamento, eliminazione
CanaleRCS
Complessità⭐⭐⭐ Avanzato
Tempo stimato20 minuti
API coinvoltePOST /api/message-server/rcs/templates, GET /rcs/templates, PUT /rcs/templates/{id}, DELETE /rcs/templates/{id}, POST /api/message-server/rcs/send

Scenari reali​

  • TechStore — Il team marketing crea template riutilizzabili: Il responsabile marketing crea una rich card con immagine e pulsanti per le promozioni mensili e la riutilizza ogni mese con placeholder diversi.
  • FashionOutlet — Template stagionali: I template per saldi estivi, Black Friday e Natale vengono creati in anticipo, usati durante la stagione, poi aggiornati o eliminati.
  • ElettroShop — Catalogo prodotti: Un carousel con i prodotti in evidenza viene aggiornato ogni settimana con nuove immagini, descrizioni e prezzi.

Prerequisiti​

Prima di iniziare, assicurati di avere:

Test senza costi

Aggiungi "simulation": true nel body della richiesta di invio per validare il flusso senza inviare davvero i messaggi e senza consumare credito.

Ciclo di vita del template​

Guida passo-passo​

Step 1 — Creare un template TEXT​

Il tipo più semplice: un messaggio di testo con suggerimenti interattivi.

curl -X POST "https://api.qlara.ai/api/message-server/rcs/templates" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "benvenuto_cliente",
"description": "Template di benvenuto per nuovi clienti",
"type": "TEXT",
"body": {
"text": "Ciao {name}! Benvenuto in TechStore. Siamo felici di averti con noi. Scopri le offerte riservate ai nuovi clienti!",
"suggestions": [
{
"type": "reply",
"text": "Mostra offerte",
"reply": {}
},
{
"type": "url",
"text": "Visita il sito",
"url": { "url": "https://techstore.it/benvenuto" }
},
{
"type": "dial",
"text": "Chiamaci",
"dial": { "phoneNumber": "+390212345678" }
}
],
"fallbackSms": {
"sender": "TechStore",
"text": "Ciao {name}! Benvenuto in TechStore. Scopri le offerte: https://techstore.it/benvenuto"
}
}
}'

Risposta: 201 Created con il template salvato (id, name, description, type, enabled, body, createdAt, updatedAt). Conserva l'id: è il templateId da passare in fase di invio.

Step 1b — Creare un template CARD​

Una rich card con immagine, titolo, descrizione e pulsanti:

curl -X POST "https://api.qlara.ai/api/message-server/rcs/templates" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "promo_estate_2026",
"description": "Promozione saldi estivi con immagine",
"type": "CARD",
"body": {
"cardOrientation": "VERTICAL",
"thumbnailAlignment": "LEFT",
"card": {
"title": "Saldi Estivi TechStore",
"description": "Fino al 40% di sconto su tutta la collezione estate. Offerta valida fino al 31 luglio 2026.",
"media": {
"height": "TALL",
"fileUrl": "https://cdn.techstore.it/img/saldi-estate-2026.jpg"
},
"suggestions": [
{
"type": "url",
"text": "Scopri i saldi",
"url": { "url": "https://techstore.it/saldi-estate" }
},
{
"type": "calendar",
"text": "Ricordami la scadenza",
"calendar": {
"title": "Fine saldi estivi TechStore",
"description": "Ultimo giorno per i saldi estivi!",
"startTime": "2026-07-31T09:00:00Z",
"endTime": "2026-07-31T23:59:00Z"
}
}
]
},
"fallbackSms": {
"sender": "TechStore",
"text": "Saldi estivi TechStore! Fino al 40% di sconto. Scopri: https://techstore.it/saldi-estate"
}
}
}'

Un carousel con più card che scorrono in orizzontale:

curl -X POST "https://api.qlara.ai/api/message-server/rcs/templates" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "catalogo_prodotti_top",
"description": "Carousel prodotti in evidenza",
"type": "CAROUSEL",
"body": {
"cardWidth": "MEDIUM",
"cards": [
{
"title": "Cuffie Wireless Pro",
"description": "79.99 EUR - Noise cancelling attivo",
"media": {
"height": "MEDIUM",
"fileUrl": "https://cdn.techstore.it/img/cuffie-pro.jpg"
},
"suggestions": [
{
"type": "url",
"text": "Dettagli",
"url": { "url": "https://techstore.it/p/cuffie-pro" }
}
]
},
{
"title": "Smartwatch FitPlus",
"description": "149.99 EUR - GPS integrato",
"media": {
"height": "MEDIUM",
"fileUrl": "https://cdn.techstore.it/img/smartwatch-fitplus.jpg"
},
"suggestions": [
{
"type": "url",
"text": "Dettagli",
"url": { "url": "https://techstore.it/p/smartwatch" }
}
]
},
{
"title": "Speaker Bluetooth Mini",
"description": "39.99 EUR - Waterproof IP67",
"media": {
"height": "MEDIUM",
"fileUrl": "https://cdn.techstore.it/img/speaker-mini.jpg"
},
"suggestions": [
{
"type": "url",
"text": "Dettagli",
"url": { "url": "https://techstore.it/p/speaker-mini" }
}
]
}
],
"fallbackSms": {
"sender": "TechStore",
"text": "Scopri i prodotti in evidenza su TechStore: https://techstore.it/top"
}
}
}'

Step 2 — Elencare i template​

Recupera i template, con filtri opzionali:

curl -X GET "https://api.qlara.ai/api/message-server/rcs/templates?type=CARD&sortBy=creationDate&sortOrder=desc&limit=10&page=0" \
-H "X-Api-Key: YOUR_API_KEY"

La risposta racchiude i template in un array data.

ParametroDescrizione
searchRicerca full-text su nome e descrizione
idFiltra per ID del template
nameFiltra per nome del template
descriptionFiltra per descrizione
typeTEXT, CARD, CAROUSEL
enabled0 = solo disabilitati, 1 = solo abilitati
sortByCampo di ordinamento (name, type, creationDate)
sortOrderasc o desc
limitElementi per pagina (default 10)
pageNumero di pagina (da 0)

Step 3 — Inviare un messaggio con il template​

Usa il templateId ottenuto dalla creazione o dalla lista:

curl -X POST "https://api.qlara.ai/api/message-server/rcs/send" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"destination": "+393471234567",
"agentId": 1,
"templateId": 55,
"placeholders": {
"name": "Laura"
},
"maxSmsParts": 2,
"campaignId": "benvenuto-aprile-2026",
"enableNotification": true
}'

Risposta:

{
"messageId": "b7e4f201-9a3c-4d58-a612-fedcba987654",
"simulation": false,
"results": {
"rcs": {
"accepted": true,
"reasons": []
},
"sms": null
}
}
Fallback automatico

Se il destinatario non supporta RCS, il messaggio viene inviato via SMS con il testo definito in fallbackSms. Il fallback SMS scatta solo se la richiesta di invio imposta maxSmsParts: se il testo di fallback richiede più parti, l'SMS viene saltato, non troncato. Puoi anche configurare un fallbackWhatsApp per tentare WhatsApp prima dell'SMS; in quel caso fallbackSms diventa obbligatorio.

Step 4 — Aggiornare un template​

Modifica un template esistente con PUT. Vengono aggiornati solo i campi che invii; se invii body, invia anche type:

curl -X PUT "https://api.qlara.ai/api/message-server/rcs/templates/55" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "benvenuto_cliente_v2",
"description": "Template benvenuto aggiornato con nuove offerte",
"type": "TEXT",
"body": {
"text": "Ciao {name}! Benvenuto in TechStore. Usa il codice WELCOME10 per il 10% di sconto sul primo acquisto!",
"suggestions": [
{
"type": "url",
"text": "Usa lo sconto",
"url": { "url": "https://techstore.it/promo/WELCOME10" }
}
],
"fallbackSms": {
"sender": "TechStore",
"text": "Ciao {name}! Benvenuto in TechStore. Codice sconto WELCOME10 su techstore.it"
}
}
}'

Risposta: 200 OK con il template aggiornato.

Step 5 — Eliminare un template​

Quando un template non serve più:

curl -X DELETE "https://api.qlara.ai/api/message-server/rcs/templates/55" \
-H "X-Api-Key: YOUR_API_KEY"

Risposta: 204 No Content

Eliminazione definitiva

L'eliminazione di un template è definitiva. I messaggi già inviati con quel template non vengono toccati, ma non sarà più possibile usarlo per nuovi invii.

Tipi di template a confronto​

TipoContenutoQuando usarlo
TEXTTesto + suggerimenti (pulsanti)Notifiche, conferme, messaggi semplici con azioni
CARDImmagine/video + titolo + descrizione + pulsantiPromozioni singole, offerte con un visual accattivante
CAROUSEL2-10 card scorrevoliCataloghi prodotti, confronti, menu di opzioni

Suggerimenti disponibili​

TipoDescrizione
replyRisposta rapida con testo predefinito
urlApre un link nel browser
dialAvvia una chiamata
locationCoordinatesMostra una posizione sulla mappa
locationQueryCerca un indirizzo sulla mappa
calendarCrea un evento nel calendario
Dietro le quinte

I template RCS sono gestiti internamente dalla piattaforma Qlara, senza approvazione esterna (a differenza dei template WhatsApp, che richiedono l'approvazione di Meta):

  1. Creazione -- Il template viene salvato e associato al tuo account. È subito disponibile per l'invio.
  2. Rendering -- Al momento dell'invio, i placeholder ({name}, {codice}, ecc.) vengono sostituiti con i valori indicati in placeholders.
  3. Fallback -- Se il destinatario non supporta RCS, il sistema prova fallbackWhatsApp (se configurato) e poi fallbackSms. La catena è: RCS -> WhatsApp -> SMS.
  4. Aggiornamento -- PUT modifica solo i campi che invii. I messaggi già inviati non vengono modificati.
  5. Metriche -- Usa il campaignId per raggruppare gli invii e poi esportare i report con UC-011: Export Report di Consegna.

Risultato atteso​

AspettoDettaglio
Azione completataTemplate RCS creato, usato per l'invio, aggiornato o eliminato
Canale usatoRCS (con fallback SMS)
Conferma di consegnaVia webhook (statusCode: 3) entro 5-60 secondi

Errori comuni​

ProblemaCausa probabileSoluzione
HTTP 401API Key mancante o non validaControlla l'header X-Api-Key
accepted: falseCredito insufficiente o numero non validoVerifica il credito e il formato E.164
HTTP 400 — Tipo di template non validoTipo non supportato o struttura del body malformataVerifica che type sia TEXT, CARD o CAROUSEL con lo schema di body corrispondente; quando aggiorni body, invia anche type
HTTP 404 — Template non trovatoID template errato o template eliminatoElenca i template con GET /rcs/templates per verificare l'ID
SMS di fallback inviato al posto dell'RCSIl dispositivo del destinatario non supporta RCSComportamento atteso; verifica che il contenuto di fallbackSms sia adeguato
Nessun fallback SMSmaxSmsParts assente nella richiesta di invio, oppure il testo di fallback richiede più partiImposta maxSmsParts abbastanza alto per il testo di fallbackSms

Prossimi passi​