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 — Team marketing crea template riutilizzabili: Il responsabile marketing crea una rich card con immagine e pulsanti per le promozioni mensili, riutilizzandola ogni mese con placeholders diversi.
  • FashionOutlet — Template stagionali: Template per saldi estivi, Black Friday, Natale: vengono creati in anticipo, utilizzati durante la stagione, poi aggiornati o eliminati.
  • ElettroShop — Catalogo prodotti: Un carousel con i prodotti in evidenza viene aggiornato settimanalmente con nuove immagini, descrizioni e prezzi.

Prerequisites

Before you begin, make sure you have:

:::tip Test without costs Add "simulation": true in the request body to validate the flow without actually sending messages and without consuming credit. :::

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://lora-api.agiletelecom.com/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",
"postbackData": "SHOW_OFFERS_NEW_CUSTOMER"
},
{
"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"
}
}
}'

Step 1b — Creare un template CARD

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

curl -X POST "https://lora-api.agiletelecom.com/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 scorrevoli orizzontalmente:

curl -X POST "https://lora-api.agiletelecom.com/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 tutti i template con filtri opzionali:

curl -X GET "https://lora-api.agiletelecom.com/api/message-server/rcs/templates?type=CARD&sortBy=creationDate&sortOrder=desc&limit=10&page=0" \
-H "X-Api-Key: YOUR_API_KEY"
ParametroDescrizione
searchRicerca per nome/descrizione
typeTEXT, CARD, CAROUSEL
enabled0 = solo disabilitati, 1 = solo abilitati
sortByCampo ordinamento (name, type, creationDate)
sortOrderasc o desc
limitElementi per pagina
pageNumero pagina (0-based)

Step 3 — Inviare un messaggio usando il template

Usa il templateId ottenuto dalla creazione o dalla lista:

curl -X POST "https://lora-api.agiletelecom.com/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"
},
"campaignId": "benvenuto-aprile-2026",
"enableNotification": true
}'

Risposta:

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

:::tip Fallback automatico Se il destinatario non supporta RCS, il messaggio viene inviato automaticamente via SMS usando il testo definito in fallbackSms. Puoi anche configurare un fallbackWhatsApp per tentare WhatsApp prima dell'SMS. :::

Step 4 — Aggiornare un template

Modifica un template esistente con PUT:

curl -X PUT "https://lora-api.agiletelecom.com/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"
}
}
}'

Step 5 — Eliminare un template

Quando un template non serve più':

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

Risposta: 200 OK o 204 No Content

:::warning Eliminazione definitiva La cancellazione di un template e' definitiva. I messaggi già' inviati con quel template non vengono influenzati, ma non sara' 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 visual accattivante
CAROUSEL2-10 card scorrevoliCataloghi prodotti, comparazioni, menu di opzioni

Suggerimenti disponibili

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

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

  1. Creazione -- Il template viene salvato e associato al tuo account. E' immediatamente disponibile per l'invio.
  2. Rendering -- Al momento dell'invio, i placeholders ({name}, {codice}, ecc.) vengono sostituiti con i valori specificati in placeholders.
  3. Fallback -- Se il destinatario non supporta RCS, il sistema prova fallbackWhatsApp (se configurato) e poi fallbackSms. La catena e': RCS -> WhatsApp -> SMS.
  4. Aggiornamento -- L'update con PUT sovrascrive completamente il template. 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 Delivery Reports.

Expected result

AspectDetail
Action completedRCS template created, used for sending, updated or deleted
Channel usedRCS (with SMS fallback)
Delivery confirmationVia webhook (statusCode: 3) within 5-60 sec

Common errors

ProblemProbable causeSolution
HTTP 401Missing or invalid API KeyCheck X-Api-Key header
accepted: falseInsufficient credit or invalid numberCheck credit; verify E.164 format
HTTP 400 — Invalid template typeUnsupported type or malformed body structureVerify type is TEXT, CARD, or CAROUSEL with correct body schema
HTTP 404 — Template not foundWrong template ID or template was deletedList templates with GET /rcs/templates to verify the ID
Fallback SMS sent instead of RCSRecipient device does not support RCSExpected behavior; verify the fallbackSms content is appropriate

Prossimi passi