WIADOMOŚCI

Pośrednie raporty dostarczenia – maks. możliwości 2FA

Published on:26 / April / 2016
Wysyłając klientom jednorazowe kody PIN (OTP), należy zadbać o dwie rzeczy. Przede wszystkim, jeśli użytkownicy powierzyli firmie swoje dane osobowe, firma ma obowiązek zapewnić im najlepsze zabezpieczenia. Ponadto OTP należy dostarczyć w czasie rzeczywistym, nie dwie godziny po wpisaniu numeru telefonu w aplikacji (w tym czasie użytkownik znajdzie innego dostawcę usługi).
 
Istnieje wiele powodów, dla których wiadomość nie może być dostarczona w danej sekundzie. Czasem dzieje się tak, ponieważ użytkownik wyłączył telefon, ma pełną skrzynkę odbiorczą itp. Oczekiwanie na ostateczny raport dostarczenia lub wygaśnięcie ważności SMS-a, aż wygenerowany zostanie kod błędu GSM, jest czasochłonne i nie do przyjęcia, jeśli chce się zapewnić klientom uwierzytelnianie dwuczynnikowe (2FA) w czasie rzeczywistym.
 
Pośredni raport dostarczenia ustawiany jest jako jeden z parametrów metody API pełnofunkcyjnych wiadomości tekstowych. Raport ten wypychany jest na ten sam adres Notify URL co raport ostateczny.
 
Po otrzymaniu przez system Infobip nietrwałego błędu GSM (np. EC_ABSENT_SUBSCRIBER) nasze raporty pośrednie na bazie API SMS (dostarczane w czasie rzeczywistym) prześlą błąd na adres Notify URL umieszczony na serwerach callback klienta.
 
Poza błędami GSM klient będzie także otrzymywać w czasie rzeczywistym informacje dotyczące cen, statusu wiadomości, sieci i kodów kraju.
 
Aby uzyskać więcej informacji na temat kodów błędów GSM i statusów wiadomości, prosimy odwiedzić stronę kodów odpowiedzi.
 
*Adres Notify URL ustawiany jest jako jeden z parametrów metody API pełnofunkcyjnych wiadomości tekstowych.
 
W poniższym przykładzie przedstawiono, jak ustawić intermediateReport dla informacji o błyskawicznych wiadomościach oraz notifyURL, notifyContentType dla raportów i callbackData użytkownika.
 
	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."
      }
    ]
}
 
Nadawca wiadomości trzyma wynik pod adresem Notify URL, który będzie miał taką samą strukturę jak ostateczny raport dostarczenia.
 
	{
  "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."
    }
  ]
}