Products

Report di consegna intermedi: ottieni il massimo dalla 2-FA

Rendi sicuro e trasparente l'invio dei tuoi PIN monouso

April 25 2016

Per inviare PIN monouso (OTP) ai tuoi clienti, hai bisogno di occuparti di un paio di faccende. In primo luogo, dandoti i loro dati personali i tuoi utenti ti hanno mostrato fiducia: ora sta a te offrire loro la miglior soluzione di sicurezza. Dopo averlo fatto, è tua responsabilità che il loro OTP arrivi in tempo reale, non due ore dopo aver inserito il loro numero nella tua app (a quel punto avranno già trovato qualcuno al posto tuo).

Ci sono vari motivi per cui un messaggio potrebbe non essere recapitato in un secondo: a volte l'utente ha spento il cellulare, altre volte non si è accorto che la memoria è piena, e l'elenco potrebbe proseguire a lungo. Se vuoi offrire ai tuoi utenti un'autenticazione a due fattori (2FA) in tempo reale,  il tempo necessario ad attendere il report di consegna finale o la scadenza del periodo di timeout del messaggio SMS per ottenere un codice di errore GSM rende queste opzioni del tutto inutili.

Il metodo API Fully featured textual message indica tra i vari parametri anche il report di consegna intermedio, inviato tramite lo stesso URL di notifica del report di consegna finale.

Non appena il sistema Infobip riceve un errore GSM non permanente (ad esempio EC_ABSENT_SUBSCRIBER), i nostri report intermedi basati su API SMS e consegnati in tempo reale lo inoltreranno all'URL di notifica posizionato sui server callback.

Oltre agli errori GSM riceverai poi in tempo reale dati su prezzo, stato del messaggio, rete e prefissi internazionali.

Per maggiori informazioni sui codici di errore GSM e sugli stati del messaggio, dai un'occhiata alla nostra pagina dedicata ai codici di risposta.

*Il metodo API Fully featured textual message indica tra i vari parametri anche l'URL di notifica.

L'esempio di seguito mostra come impostare intermediateReport per ricevere informazioni istantanee sul messaggio, notifyURL e notifyContentType per i report e callbackData degli utenti.

I risultati che riceverai sull'URL di notifica avranno la stessa struttura del report di consegna finale.

POST /sms/1/text/advanced HTTP/1.1
Host: api.infobip.com
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Content-Type: application/json

{
   "bulkId":"BULK-ID-123-xyz",
   "messages":[
      {
         "from":"InfoSMS",
         "destinations":[
            {
               "to":"41793026727",
               "messageId":"MESSAGE-ID-123-xyz"
            },
            {
               "to":"41793026731"
            }
         ],
         "text":"Mama always said life was like a box of chocolates. You never know what you're gonna get.",
         "intermediateReport":true,
         "notifyUrl":"http://www.example.com/sms/advanced",
         "notifyContentType":"application/json",
         "callbackData":"There's no place like home."
      }
    ]
}

The result you will receive on your Notify URL will have the same structure as the Final delivery report.

{
  "results": [
    {
      "bulkId": "BULK-ID-123-xyz",
      "messageId": "c9823180-94d4-4ea0-9bf3-ec907e7534a6",
      "to": "41793026731",
      "sentAt": "2015-10-04T13:01:52.933+0000",
      "doneAt": "2015-10-04T13:02:00.134+0000",
      "smsCount": 1,
      "price": {
        "pricePerMessage": 0.0001000000,
        "currency": "EUR"
      },
      "status": {
        "groupId": 3,
        "groupName": "PENDING",
        "id": 1,
        "name": "PENDING_WAITING_DELIVERY",
        "description": "Message sent, waiting for delivery report"
      },
      "error": {
        "groupId": 1,
        "groupName": "HANDSET_ERRORS",
        "id": 27,
        "name": "EC_ABSENT_SUBSCRIBER",
        "description": "Absent Subscriber",
        "permanent": false
      },
      "callbackData":"There's no place like home."
    },
    {
      "bulkId": "BULK-ID-123-xyz",
      "messageId": "MESSAGE-ID-123-xyz",
      "to": "41793026727",
      "sentAt": "2015-06-04T13:01:52.937+0000",
      "doneAt": "2015-06-04T13:02:01.204+0000",
      "smsCount": 1,
      "price": {
        "pricePerMessage": 0.0001000000,
        "currency": "EUR"
      },
      "status": {
        "groupId": 3,
        "groupName": "PENDING",
        "id": 1,
        "name": "PENDING_WAITING_DELIVERY",
        "description": "Message sent, waiting for delivery report"
      },
      "error": {
        "groupId": 1,
        "groupName": "HANDSET_ERRORS",
        "id": 27,
        "name": "EC_ABSENT_SUBSCRIBER",
        "description": "Absent Subscriber",
        "permanent": false
      },
      "callbackData":"There's no place like home."
    }
  ]
}