Guide

Cos'è una "parte" SMS

Come un messaggio diventa 1, 2 o 4 SMS in fattura: la codifica GSM-7, il confine dei 160 caratteri e il momento esatto in cui il prezzo raddoppia.

Si paga a parti, non a messaggi

La rete mobile non trasporta "un messaggio": trasporta parti. Un SMS lungo viene spezzato in più parti, ognuna viaggia come un SMS autonomo e ognuna viene fatturata come un SMS. Il campo parts nella risposta dell'API dice esattamente quante parti sono state addebitate, in modo sincrono.

Quante parti servono dipende da due sole cose: la codifica del testo e la sua lunghezza. Entrambe seguono regole fisse dello standard GSM — non scelte nostre — ma conviene conoscerle, perché un singolo carattere può cambiare il prezzo.

GSM-7: 160 caratteri, poi 153

La codifica di base è GSM-7: 7 bit per carattere, un set che copre lettere latine, cifre, punteggiatura comune e alcune lettere accentate (è, é, ù, ì, ò, à…). Finché il testo resta dentro il set, in una parte singola entrano 160 caratteri.

Superati i 160 caratteri scatta la concatenazione: ogni parte deve trasportare un'intestazione tecnica (UDH) che dice al telefono come ricomporre il messaggio, e quell'intestazione costa 7 caratteri. Ogni parte concatenata ne trasporta quindi 153, non 160. Un testo di 161 caratteri occupa 2 parti.

I caratteri estesi contano doppio

Alcuni caratteri utili — € [ ] { } ~ \ | ^ — non stanno nel set base: vengono codificati come coppia di escape e costano 2 caratteri l'uno. Un testo pieno di parentesi, o con il simbolo dell'euro, riempie la parte più in fretta di quanto suggerisca il conteggio a occhio.

La coppia non viene mai spezzata a cavallo di due parti: se non ci sta, slitta per intero nella parte successiva.

Un carattere fuori dal set e tutto il messaggio diventa Unicode

La codifica è una proprietà dell'intero messaggio, non del singolo carattere. Basta un'emoji, una virgoletta tipografica (quelle "curve" che molti editor inseriscono da soli) o un ideogramma perché tutto il testo passi a Unicode (UCS-2): 70 caratteri in parte singola, 67 per parte concatenata.

Lo stesso testo di 100 caratteri costa 1 parte in GSM-7 e 2 parti se contiene una sola emoji. Il campo encoding nella risposta ("gsm7" o "unicode") dice quale codifica è stata applicata.

Ogni parte è un SMS in fattura: l'esempio dei 320 caratteri

Il limite della piattaforma è 4 parti per messaggio (612 caratteri GSM-7, 268 Unicode); oltre, la richiesta viene rifiutata con VALIDATION_FAILED. Fino a lì il conto è lineare: numero di parti × prezzo per parte.

Un messaggio GSM-7 di 320 caratteri supera i 160 della parte singola, quindi si concatena a 153 caratteri per parte. L'esempio usa il prezzo del mittente di sistema per un invio transazionale:

Esempio (mittente di sistema)

text: 320 GSM-7 characters
per-part capacity: 153 (concatenated)
price basis: system sender, transactional

parts = ceil(320 / 153) = 3
price = 3 × 0.0298 EUR = 0.0894 EUR
3 parti fatturate

In pratica

  • Tieni OTP e messaggi transazionali sotto i 160 caratteri GSM-7: restano sempre 1 parte, al prezzo minimo.
  • Attenzione al copia-incolla dagli editor di testo: virgolette tipografiche e trattini lunghi sono fuori dal set GSM e trasformano l'intero messaggio in Unicode.
  • Il simbolo € è legittimo ma sta nel set esteso: conta come 2 caratteri.
  • Non serve fare i conti a mano: ogni risposta dell'API riporta parts e price_eur per quell'invio.
Account attivati dal nostro team

Pronto a inviare il primo SMS?

Niente self-signup, niente carta di credito: scrivici, ti attiviamo l'account e la prima consegna è a una POST di distanza.

Credito prepagato, ricariche con fattura — nessuna carta richiesta.