E’ possibile utilizzare le API di Transactionale per inviare SMS a destinatari singoli.
Autenticazione
Per autenticarsi è necessario utilizzare l’API KEY reperibile dal tuo account Transactionale, passandola come valore dell’header Authorization.
Esempio:
GET https://api.transactionale.com/platform/api/sms/send
Authorization: <API KEY>
Esempio cURL:
curl -H "Authorization: abc123" "https://api.transactionale.com/platform/api/sms/send"
Invio di un SMS
Esempio di chiamata:
POST https://api.transactionale.com/platform/api/sms/send
Authorization: <API KEY>
Content-Type: application/json
{
"phone": "393000000000",
"sender_id": "MyShop",
"body": "Hello, world!",
"webhook_url": "https://www.myshop.com/webhook/sms",
"receive_dlr": "default"
}
Esempio cURL:
curl -H "Authorization: abc123" \
-H "Content-Type: application/json" \
-X POST -d '{"phone": "393000000000", "sender_id": "MyShop", "body": "Hello, world!", "webhook_url": "https://www.myshop.com/webhook/sms"}' \
"https://api.transactionale.com/platform/api/sms/send"
Descrizione dei parametri
Parametri | Descrizione |
---|---|
phone | (string) Formato internazionale (MSISDN), comprensivo di prefisso senza ‘+’ |
sender_id | (string) Stringa di lettere, numeri, punto e spazi (Max 11 caratteri) |
body | (string) Contenuto dell’SMS |
webhook_url | (string) (Opzionale) Url su cui ricevere i rapporti di consegna (DLR) |
receive_dlr | (string) Stabilisce il comportamento dei rapporti di consegna. Vedi sotto |
Comportamenti deI rapporti di consegna:
- default: rispetta impostazioni dell’account
- always: chiama sempre
- on_error: chiama solo in caso di consegna fallita
- off: non chiamare
Se la chiamata va a buon fine otterrai una risposta di questo tipo:
HTTP STATUS: 201 CREATED
{
"id": 123,
"phone": "39300000000",
"sender_id": "MyShop",
"body": "Il mio SMS!",
"status": "pending",
"delivery_status": "unknown",
"country": "IT",
"is_two_way": false,
"webhook_url": "https://www.myshop.com/webhook/sms",
"receive_dlr": "default",
"url": "https://api.transactionale.com/platform/api/sms/send/123",
}
Descrizione della risposta
Parametri | Descrizione |
---|---|
id | (integer) |
phone | (string) Formato internazionale (MSISDN), comprensivo di prefisso e senza + |
sender_id | (string) Stringa di lettere, numeri, punto e spazi (Max 11 caratteri) |
body | (string) Contenuto dell’SMS |
status | (string) sent o pending |
delivery_status | (string) delivered, failed, unknown |
url | (string) URL API di questo SMS |
webhook_url | (string) L’URL a cui verranno inviate le notifiche di consegna (DLR) |
receive_dlr | (string) default, always, on_error, off |
country | (string) ‘AF’ or ‘AL’ or ‘AG’ or ‘AR’ or ‘AU’ or ‘AT’ or ‘BY’ or ‘BE’ or ‘BA’ or ‘BR’ or ‘BG’ or ‘KH’ or ‘CA’ or ‘CL’ or ‘CN’ or ‘CO’ or ‘HR’ or ‘CU’ or ‘CY’ or ‘CZ’ or ‘KP’ or ‘DK’ or ‘DO’ or ‘EG’ or ‘ER’ or ‘EE’ or ‘FI’ or ‘FR’ or ‘GF’ or ‘DE’ or ‘GI’ or ‘GR’ or ‘GP’ or ‘HK’ or ‘HU’ or ‘IS’ or ‘IE’ or ‘IL’ or ‘IT’ or ‘JP’ or ‘JO’ or ‘KR’ or ‘LI’ or ‘LU’ or ‘MO’ or ‘MT’ or ‘MQ’ or ‘MC’ or ‘ME’ or ‘NA’ or ‘NL’ or ‘NZ’ or ‘NO’ or ‘PA’ or ‘PE’ or ‘PH’ or ‘PL’ or ‘PT’ or ‘RO’ or ‘RU’ or ‘SM’ or ‘SA’ or ‘RS’ or ‘SK’ or ‘SL’ or ‘ZA’ or ‘ES’ or ‘SE’ or ‘CH’ or ‘TW’ or ‘MK’ or ‘TN’ or ‘TR’ or ‘TC’ or ‘UG’ or ‘UA’ or ‘GB’ or ‘US’ or ‘UY’ or ‘VE’ or ‘YE’ |
is_two_way | (bool) Se questo SMS prevede la possibilità di ricevere risposte (non supportato) |
Esempio di riposta di errore:
HTTP STATUS: 400 BAD REQUEST
{
"errors": {
"phone": [
"Number is too long"
],
"sender_id": [
"Sender ID is longer than 11 chars.",
"Sender ID contains invalid chars: +"
]
}
}
Lettura dello stato di un SMS
Risposta:
HTTP STATUS: 200 OK
{
"id": 123,
"phone": "39300000000",
"sender_id": "MyShop",
"body": "Il mio SMS!",
"status": "pending",
"delivery_status": "unknown",
"country": "IT",
"is_two_way": false,
"webhook_url": "https://www.myshop.com/webhook/sms",
"receive_dlr": "default",
"url": "https://api.transactionale.com/platform/api/sms/send/123",
}
Ricezione dei rapporti di consegna (DLR)
E’ possibile definire nel proprio account un endpoint che sarà chiamato con gli aggiornamenti sullo stato di consegna degli SMS inviati. Inoltre, per ogni SMS inviato, è possibile specificare un URL differente per quel singolo SMS, utilizzando il parametro webhook_url.
I codici di risposta >= 400 verranno considerati come errori. I codici di risposta >= 500 provocheranno un re-invio della richiesta per 3 volte.
Formato del payload
Esempio di richiesta che sarà inviato all’URL definito per il webhook:
POST <webhook_url>
Content-Type: application/json
{
"sms_id": 123,
"phone": "39123123123",
"send_time": "2018-11-20T11:02:29+00:00",
"status_time": "2018-11-20T11:02:31+00:00",
"status": "delivered"
}
Descrizione dei campi
Parametri | Descrizione |
---|---|
sms_id | (integer) |
phone | (string) Formato internazionale (MSISDN), comprensivo di prefisso e senza + |
send_time | (string) timestamp in formato Iso 8601 dell’orario di invio |
status_time | (string) timestamp in formato Iso 8601 dell’orario del presente cambio di stato |
status | (string) stato di consegna delL’SMS: delivered, failed, expired |
Errori API
Errore di autenticazione
HTTP STATUS: 401 Unauthorized
{
"message": "401 Unauthorized",
"status_code": 401
}
Errore di validazione
In caso di errore di validazione del payload, verrà restituito un oggetto JSON con il campo non valido come chiave e al suo interno una lista di messaggi d’errore. Esempio:
HTTP STATUS: 400 Bad Request
{
"phone": [
"The phone field is required."
],
"sender_id": [
"The sender id may not be greater than 11 characters."
],
"body": [
"The body field is required."
]
}