Formatul raportului de livrare SMPP

Rapoartele de livrare SMPP sunt trimise de Serverul SMPP, către clientul SMPP după ce mesajele text au fost livrate cu succes pe dispozitivul mobil. SMS-ul original este trimis de clientul SMPP folosind o cerere smpp submit_sm. Când submit_sm este acceptat de serverul SMPP, acesta returnează un răspuns submit_sm_resp, cu un ID de referință pentru SMS. Raportul de livrare vine la o dată ulterioară. Acesta conține ora livrării și ID-ul de referință SMS care identifică SMS-ul. Documentul de mai jos explică conținutul unui PDU de raport de livrare SMPP și vă oferă un exemplu de raport de livrare.

Care este formatul raportului de livrare SMPP

Un raport de livrare SMPP este primit ca un mesaj text standard. Textul mesajului are un format special, care conține diverse câmpuri despre SMS-ul trimis inițial. Aceste câmpuri pot fi folosite pentru a determina starea livrării SMS-ului.

Exemplu de raport de livrare
Raport de livrare primit. +44251234567->+0000000 'Livrat; Către: +44251234567; La: 2022-10-03 12:07:00; 
Ref: 636445148; id:636445148 sub:000 dlvrd:001 data trimiterii:2210031207 data finalizării:2210031207 
stat:DELIVRD err: text:'

Livrare reușită raportată către admin@localhost. ID-ul sarcinii: cdfd66e1-880e-4ead-a559-7ca46d9ec669. 
Livrat; Către: +44251234567; La: 2022-10-03 12:07:00; Ref: 636445148; id:636445148 sub:000 dlvrd:001 
data trimiterii:2210031207 data finalizării:2210031207 stat:DELIVRD err: text:
Cum să primești un raport de livrare SMPP

Pentru a primi un raport de livrare SMPP

  1. Conectează clientul SMPP
  2. Conectează-te ca transceiver
  3. Trimite SMS-ul folosind PDU submit_sm
  4. Înregistrează ID-ul SMS din submit_sm_resp
  5. Așteaptă ca SMS-ul să ajungă la mobil
  6. Primește PDU-ul raportului de livrare SMS
  7. Potrivește ID-ul SMS cu mesajul trimis
  8. Înregistrează data și ora livrării SMS
Parametrii raportului de livrare SMPP

SMPP acceptă confirmări de livrare / rapoarte (DLR) pentru mesajele SMS, astfel încât aplicația ta să poată determina rezultatele livrării.

Returnarea unei confirmări de livrare / raport (DLR) depinde de valoarea setată în câmpul registered_delivery al mesajului trimis inițial de la ESME la MC într-o operațiune submit_sm. Acesta poate fi configurat pentru scenarii de nelivrare și doar livrare, care pot duce la situații în care confirmarea nu va fi returnată. Confirmările de livrare sunt returnate în operațiunile deliver_sm și data_sm.

Următoarele câmpuri sunt relevante în operațiunile deliver_sm și data_sm atunci când sunt folosite pentru transmiterea confirmărilor de livrare.

  • adresa sursă (adică source_addr_ton, source_addr_npi, source_addr) - Adresa sursă va fi preluată din adresa destinație a mesajului scurt original, care a generat confirmarea de livrare. Confirmarea apare ca și cum ar proveni de la destinatarul mesajului original înregistrat.
  • adresa destinație (adică dest_addr_ton, dest_addr_npi, destination_addr) - Adresa destinație va fi preluată din adresa sursă a mesajului scurt original, care a generat confirmarea de livrare. Confirmarea este adresată SME-ului care a trimis inițial mesajul înregistrat.
  • esm_class - Bitul 2 din esm_class este setat la 1 pentru a indica că mesajul este o confirmare de livrare MC. Dacă bitul 5 este setat, atunci mesajul este o notificare intermediară.
  • message_state TLV - Indică starea finală a mesajului original. Vezi Stările mesajului mai jos.
  • network_error_code TLV - Vezi Codurile de eroare mai jos.
  • receipted_message_id TLV - ID-ul mesajului care a fost returnat către ESME de către MC în PDU-ul submit_sm_resp.
Confirmare de livrare MC

Acest tip de mesaj este folosit pentru a transporta o confirmare de livrare MC. MC, la detectarea stării finale a unui mesaj înregistrat, ar genera în mod normal o nouă confirmare adresată expeditorului primului mesaj. Confirmarea de livrare MC este apoi livrată către ESME într-o operațiune deliver_sm sau data_sm.

ESME-către-MC: Setare biții 0 și 1 în câmpul registered_delivery al unei operațiuni submit_sm pentru a solicita o confirmare de livrare MC.

Bit 1Bit 0Semnificație
00fără confirmare
01confirmare solicitată atunci când rezultatul final este succes sau eșec la livrare
10confirmare solicitată atunci când rezultatul final este eșec la livrare
11confirmare solicitată atunci când rezultatul final este succes la livrare (doar SMPP v5)

MC-către-ESME: Bitul 2 din câmpul esm_class al unui deliver_sm indică faptul că confirmarea este o confirmare de livrare MC.

Notificare intermediară

O notificare intermediară este o formă specială de mesaj pe care MC o poate trimite către un ESME pentru livrarea unui mesaj către un mobil. Aceasta oferă o stare intermediară a unei încercări de livrare a mesajului.

Utilizările tipice sunt raportarea rezultatului încercărilor de livrare făcute în timpul duratei de retransmitere a mesajului în cadrul MC. Aceasta poate fi folosită pentru a urmări diversele motive pentru care un mesaj nu este livrat la destinație și pentru a profila disponibilitatea abonatului.

Suportul pentru funcționalitatea de notificare intermediară este specific implementării MC și Furnizorului de Servicii MC și depășește scopul acestei specificații.

ESME-către-MC: Setare bitul 4 în câmpul registered_delivery al unui PDU submit_sm pentru a solicita o notificare intermediară.

MC-către-ESME: Bitul 5 din câmpul esm_class al unui deliver_sm indică faptul că confirmarea este o notificare intermediară.

Confirmare în câmpul short_message

Multe API-uri anterioare versiunii 3.4 și Centre de Mesaje care suportă v3.3 au probabil o metodă de transmitere a informațiilor de confirmare în câmpul short_message. Aceasta se aplică atât Confirmărilor de Livrare MC, cât și Notificărilor Intermediare. Detaliile de format ale acestor informații sunt specifice gateway-ului SMS și platformei SMSC și depășesc scopul specificației. Cu toate acestea, următorul exemplu ilustrează abordarea tipică:

id:123A456B sub:1 dlvrd:1 submit date:1702281424 done date:1702281424 stat:DELIVRD err:0 text:


Câmpurile sunt specificate după cum urmează:

Câmp Dimensiune (octeți) Descriere
id Variabilă ID-ul mesajului atribuit de SMSC la trimiterea inițială.
sub 3 Numărul de mesaje scurte trimise inițial. Valoarea poate fi completată cu zerouri la început.
dlvrd 3 Numărul de mesaje scurte livrate. Valoarea poate fi completată cu zerouri la început.
submit date 10

Data și ora la care mesajul scurt a fost trimis. În cazul unui mesaj înlocuit, aceasta este data la care mesajul original a fost înlocuit. Formatul este următorul:

YYMMDDhhmm unde:
YY ultimele două cifre ale anului (00-99) MM = luna (01-12)
DD ziua (01-31)
hh ora (00-23)
mm minutul (00-59)

done date 10 Data și ora la care mesajul scurt a atins starea finală. Formatul este același ca pentru submit date.
stat 7 Starea finală a mesajului. Consultați Stările mesajelor mai jos. Textul stării poate fi prescurtat.
err 3 Un cod de eroare al rețelei sau SMSC pentru mesaj. Consultați Codurile de eroare mai jos.
text 20 Câmp neutilizat, rezultatul va fi gol.
Îmbunătățiri Ozeki SMPP

În urma implementării unui număr foarte mare de conexiuni SMPP, am identificat următoarele probleme în diverse implementări:

Descoperirea 1:

Valoarea câmpului ID din raportul de livrare (pe care îl numim Submit Reference în Ozeki) este adesea diferită de ID-ul primit de la furnizorul de servicii SMS. Cea mai frecventă diferență este că ID-ul original este returnat ca un număr întreg standard, iar ID-ul din raportul de livrare este returnat ca un număr hexazecimal. Acest lucru poate apărea și invers. Partea bună este că, în această situație, la conversie, cele două numere coincid, astfel încât rapoartele de livrare pot fi potrivite. Implementările Ozeki SMS efectuează diverse verificări și pot gestiona corect situația descrisă.

Descoperirea 2:

Valoarea câmpurilor de dată vine adesea într-un format non-standard. Ozeki analizează în prezent câmpurile de dată folosind următoarele modele. De asemenea, puteți defini un model personalizat pentru câmpul de dată în formularul de configurare al software-ului.

  • "yyMMddHHmm",
  • "yyMMddHHmmss",
  • "dd-MMM-yyHH:mm",
  • "dd-MMM-yyHH:mm:ss",
  • "dd-MMM-yy HH:mm",
  • "dd-MMM-yy HH:mm:ss",
  • "yyyyMMddHHmmss",
  • "yyyyMMddHHmm",
  • personalizat

Mesaj stări

Următoarea este o listă de stări permise pentru un mesaj scurt. MC returnează valoarea message_state către ESME ca parte a PDU-ului query_sm_resp, query_broadcast_sm_resp sau deliver_sm pentru confirmarea de livrare.

Stările intermediare sunt stări care se pot schimba. Stările finale sunt stări care reprezintă o stare de sfârșit de viață pentru un mesaj.

De exemplu, un mesaj în retry poate returna o stare ENROUTE. La un moment dat în viitor, acest mesaj va fie expira, fie va fi livrat. Starea va progresa apoi la EXPIRED sau DELIVERED. Astfel, un mesaj în starea ENROUTE se spune că este într-o stare intermediară.

Un mesaj în starea DELIVERED sau EXPIRED nu poate progresa către o altă stare. Aceste stări sunt, prin urmare, stări finale.

<

Ce este un raport de livrare?

Când trimiteți un mesaj SMS, confirmarea sosirii acestuia la telefonul destinatarului este crucială. SMS-ul utilizează un sistem de confirmare în două etape pentru a asigura acest lucru.

La trimiterea mesajului către Centrul de Servicii pentru Mesaje Scurt (SMSC) al rețelei mobile, primiți un „raport de trimitere a mesajului”. Acest raport semnifică faptul că SMSC a acceptat mesajul dumneavoastră pentru livrare. De asemenea, include un identificator unic, adesea denumit „referință de mesaj” sau „ID de callback”, care permite urmărirea mesajului în sistemul SMSC.

După acceptare, mesajul este stocat în SMSC până când livrarea devine posibilă. Acest lucru poate fi întârziat dacă telefonul destinatarului este oprit, ceea ce poate prelungi așteptarea până la câteva zile. Odată ce telefonul destinatarului devine disponibil, mesajul este livrat. După livrarea cu succes, un „raport de livrare” este trimis înapoi expeditorului ca un mesaj SMS separat.

Acest SMS de confirmare conține:

  • Numărul de telefon al destinatarului: Verifică faptul că mesajul a fost primit de destinatarul intenționat.
  • Referința mesajului (ID de callback): Se potrivește cu identificatorul din raportul original de trimitere, oferind o legătură clară între cele două etape.
  • Data și ora livrării: Furnizează momentul exact în care mesajul a ajuns la telefonul destinatarului.
Este important de reținut că „raportul de livrare” se referă în general la acest SMS de confirmare primit de expeditor. Nu toate rețelele mobile oferă rapoarte de livrare, iar unele necesită activarea de către utilizator.

Pot ajusta cât timp este stocat un mesaj în SMSC?

Deși mesajele SMS oferă o modalitate convenabilă de comunicare, asigurarea că un mesaj ajunge la destinatarul său prompt este crucială. Aici intervine conceptul de „perioadă de valabilitate”.

Perioada de valabilitate se referă la intervalul de timp în care un mesaj SMS este stocat în Centrul de Servicii pentru Mesaje Scurt (SMSC) atunci când telefonul destinatarului este indisponibil. Dacă mesajul rămâne nelivrat după expirarea acestei perioade, este șters automat din SMSC, prevenind o livrare întârziată.

Beneficiile utilizării perioadei de valabilitate:

  • Mesaje sensibile la timp: Imaginați-vă că trimiteți un text despre un eveniment sensibil la timp, cum ar fi un program TV live. Stabilirea unei perioade de valabilitate adecvate asigură că mesajul nu este livrat după încheierea evenimentului, devenind astfel irelevant.
  • Eficiența rețelei: Prin prevenirea încercărilor inutile de livrare cătelefoane indisponibile, perioada de valabilitate optimizează resursele rețelei.
Deși unele rețele mobile oferă opțiunea de a seta direct perioada de valabilitate pentru mesajele trimise, setarea implicită este adesea maximul rețelei (de obicei o săptămână). Această valoare poate fi ajustată prin opțiunile din meniul intern al telefonului.

Este important de reținut că nu toate rețelele mobile oferă perioade de valabilitate configurabile de utilizator, iar unele pot necesita activarea de către utilizator pentru rapoarte de livrare (confirmarea că mesajul a ajuns la destinatar).

More information

 
Stare Mesaj Valoare Tip
SCHEDULED 0 Intermediar
Mesajul este programat. Livrarea nu a fost încă inițiată. Un mesaj trimis cu o oră de livrare programată poate returna această stare la interogare. Această valoare a fost adăugată pentru SMPP v5.0. MC-urile care suportă versiuni anterioare ale SMPP v3.3 și SMPP v3.4 probabil vor returna ENROUTE pentru mesajele programate.
ENROUTE
sau EN_ROUTE
1 Intermediar
Mesajul este în stare enroute. Aceasta este o stare generală folosită pentru a descrie un mesaj ca fiind activ în cadrul MC-ului. Mesajul poate fi în retry sau expediat către o rețea mobilă pentru livrare către mobil.
DELIVERED 2 Final
Mesajul este livrat la destinație. Mesajul a fost livrat la destinație. Nu vor mai avea loc alte livrări.
EXPIRED 3 Final
Perioada de valabilitate a mesajului a expirat. Mesajul nu a reușit să fie livrat în perioada sa de valabilitate și/sau perioada de retry. Nu se vor mai face încercări de livrare.
DELETED 4 Final
Mesajul a fost șters. Mesajul a fost anulat sau șters din MC. Nu se vor mai face încercări de livrare.
UNDELIVERABLE 5 Final
Mesajul este nelivrabil. Mesajul a întâmpinat o eroare de livrare și este considerat permanent nelivrabil. Nu se vor mai face încercări de livrare. Anumite erori de rețea sau interne MC duc la nelivrarea permanentă a unui mesaj. Exemple de astfel de erori ar fi un abonat necunoscut sau o eroare de rețea care indică faptul că destinația mobilă dată a fost refuzată serviciul SMS sau nu poate suporta SMS.
Next: SMPP simulator