SMPP – trumpųjų pranešimų lygiavertis protokolas

Sveiki! Nors pasiuntiniai ir socialiniai tinklai kasdien pakeičia tradicinius bendravimo būdus, SMS žinučių populiarumo tai nesumenkina. Patikrinimas populiarioje svetainėje arba pranešimas apie operaciją kartojamas, jie gyvena ir gyvens. Ar kada susimąstėte, kaip visa tai veikia? Labai dažnai SMPP protokolas naudojamas masiniams pranešimams siųsti, apie kuriuos bus kalbama toliau.

Habré jau buvo straipsnių apie smpp, 1,2, tačiau jų tikslas nebuvo aprašyti patį protokolą. Žinoma, galite iš karto pradėti nuo pirminio šaltinio - specifikacijos, bet manau, būtų gerai, jei būtų trumpa jo santrauka. Paaiškinsiu kaip pavyzdį naudodamas v3.4. Džiaugiuosi už objektyvią kritiką.

SMPP protokolas yra lygiaverčių pranešimų protokolas. Tai reiškia, kad kiekvienas peer/hub serveris turi vienodas teises. Paprasčiausiu atveju SMS žinučių siuntimo schema atrodo taip:

SMPP – trumpųjų pranešimų lygiavertis protokolas

Tačiau jei nacionalinis operatorius neturi maršruto į kokį atokesnį regioną, jis to prašo tarpininko – SMS mazgo. Kartais, norint išsiųsti vieną SMS, reikia nutiesti grandinę tarp kelių šalių ar net žemynų.

Apie protokolą

SMPP yra taikomųjų programų lygmens protokolas, pagrįstas PDU mainais ir perduodamas per TCP / IP arba X25 sesijas, skirtas SMS ir ussd žinutėms perduoti. Paprastai SMPP naudojamas nuolatiniu režimu, o tai padeda sutaupyti laiko. SMPP naudoja kliento ir serverio ryšio modelį.

Ryšio režimas

SMPP – trumpųjų pranešimų lygiavertis protokolas

Keitimasis žinutėmis tarp siuntėjo ir SMS centro per SMPP gali būti vykdomas šiais režimais:

Siųstuvas (siųstuvas) – pranešimo perdavimas viena kryptimi, po vieną
Gavėjas – gauna tik žinutę iš SMS centro.
Transceiver (transceiver) – apsikeitimas žinutėmis tarp SMS centro ir vartotojo

Struktūra

SMPP – trumpųjų pranešimų lygiavertis protokolas

Pranešimo ilgis

Vienoje SMS žinutėje rašant kirilica gali būti 70 simbolių ir ne daugiau kaip 157 lotyniški simboliai + 3 UDH Jei siunčiate SMS su dideliu simbolių skaičiumi, ji bus padalinta į kelis segmentus ir sujungta priimančiame įrenginyje. Segmentavimo atveju simbolių skaičius sumažinamas pranešimų antraštėmis, kurios nurodo dalį pranešimo. Todėl siunčiant didelę SMS žinutę, joje yra daugiausiai 153 lotyniški simboliai arba 67 netipiniai simboliai.

Duomenų kodavimo schema

Tačiau simboliai reikalauja kodavimo, kad perteiktų pranešimą. SMPP protokole už kodavimą atsakingas specialus laukas – Data Coding Scheme arba DCS. Tai laukas, nurodantis, kaip turi būti atpažįstami pranešimai. Be to, DCS lauke yra:

  • kodavimą apibrėžiantis simbolių rinkinys;
  • žinučių klasė;
  • prašymas automatiškai ištrinti perskaičius;
  • pranešimo suspaudimo indikacija;
  • transliacijos pranešimų kalba;

Standartinė 7 bitų abėcėlė (GSM 03.38). Jis buvo sukurtas GSM pranešimų sistemai. Ši koduotė tinka anglų kalbai ir daugeliui lotynų kalbų. Kiekvienas simbolis susideda iš 7 bitų ir yra užkoduotas į oktetą.

UTF-16 (GSM UCS2) Norint įtraukti trūkstamus simbolius į 7 bitų abėcėlę, buvo sukurta UTF-16 koduotė, kuri prideda papildomų simbolių (įskaitant kirilicą), sumažindama pranešimo dydį nuo 160 iki 70; tokio tipo kodavimas beveik visiškai atkartoja Unicode .

8 bitų vartotojo apibrėžti duomenys. Tai apima KOI8-R ir Windows-1251. Nors šis sprendimas atrodo ekonomiškesnis lyginant su tuo pačiu UTF-16. Kyla pagrįstas klausimas dėl skirtingų įrenginių suderinamumo. Kadangi šiuo atveju abu įrenginiai turi būti sukonfigūruoti iš anksto.

Pranešimų klasė

  • „Class0“ arba „flash“ žinutė, saugoma telefono atmintyje vartotojo pageidavimu;
  • 1 klasė arba tie, kurie saugomi telefono atmintyje;
  • 1 klasė arba tie, kurie saugomi telefono atmintyje;
  • Class2 turi užtikrinti, kad pranešimas būtų išsaugotas mobiliojo terminalo atmintyje, priešingu atveju turi įspėti SMS centrą apie neįmanomumą išsaugoti;
  • 3 klasė – tokiu atveju telefonas turi siųsti pranešimą, kad žinutė gali būti išsaugota, nepriklausomai nuo įrenginio atminties kiekio. Šio tipo pranešimas reiškia, kad pranešimas pasiekė gavėją;

Pranešimo tipas

Tyli žinutė (SMS0) SMS žinutės be turinio tipas. Ši SMS gaunama be įspėjimo ir nerodoma įrenginio ekrane.

PDU

Kiekviena PDU operacija yra suporuota ir susideda iš užklausos ir atsakymo. Pavyzdžiui: komanda, kuri sako, kad ryšys užmegztas (bind_transmitter / bind_transmitter_resp) arba kad pranešimas buvo perduotas (deliver_sm / delivery_sm_resp)

SMPP – trumpųjų pranešimų lygiavertis protokolas

Kiekvienas pdu paketas susideda iš dviejų dalių – antraštės ir korpuso. Antraštės struktūra yra vienoda bet kuriam pdu paketui: komandos ilgis yra paketo ilgis, id yra paketo pavadinimas, o būsenos komanda nurodo, ar pranešimas buvo perduotas sėkmingai, ar su klaida.

Papildomi TLV parametrai

TLV (žymos ilgio vertė) arba papildomi laukai. Tokie parametrai naudojami išplėsti protokolo funkcionalumą ir nėra būtini. Šis laukas rodomas pdu lauko pabaigoje. Pavyzdžiui, naudodami TLV dest_addr_np_information, galite organizuoti informacijos apie numerio perkeliamumą perdavimą.

Tonas ir Npi

TON (numerio tipas) parametras informuoja SMSC apie adresavimo formatą ir tinklo tipą.
NPI (Numbering Plan Identification) parametras, nurodantis numeravimo planą.

SMPP – trumpųjų pranešimų lygiavertis protokolas

Pranešimo šaltinio adresas arba alfa pavadinimas

Į jūsų telefoną siunčiami dviejų tipų pranešimai: skaitmeniniai ir abėcėliniai. Skaitmeniniai numeriai gali būti ilgi (panašūs į telefono numerį) arba trumpi. Kartais operatoriai apriboja siuntimą iš neutralių vardų, pvz., Infosms, Alert ir kt. Kartais operatoriai neleidžia srauto, jei vardas nėra registruotas jų tinkle. Tačiau tai veikiau operatoriaus charakteristikos.

Pateikimo etapai

SMPP – trumpųjų pranešimų lygiavertis protokolas

SMS - PATEIKTI - tai siunčia MO FSM pranešimą (trumpą pranešimą iš mobiliojo terminalo)
SMS PATEIKTI ATASKAITĄ — patvirtinimas, kad žinutė išsiųsta SMSC
SRI SM (SendRoutingInfo) – SMSC gauna informaciją iš HLR apie abonento MSC / VLR vietą
SRI SM RESP — HLR atsakymas dėl abonento pozicijos mėsos
MT-FSM — gavus vietą, pranešimas išsiunčiamas naudojant operaciją „Persiųsti trumpąją žinutę“.
MT-FSM ACK — SMSC atsakymas, kad pranešimas išsiųstas
SMS BŪSENOS ATASKAITA — SMSC siunčia pranešimo pristatymo būseną.

Pranešimo pristatymo būsena

SMS BŪSENOS ATASKAITA gali turėti kelias vertes:
PRISTATYMAS žinutė sėkmingai pristatyta
ATMESTA — žinutę atmetė SMS centras
EXPIRED — pranešimas pašalinamas iš siuntimo eilės pasibaigus TTL (pranešimo galiojimo laikui)
NEPRISTATYMAS - kiti nepristatymo atvejai
UNKNOWN- dėl išsiuntimo atsakymo negauta.

Perkėlimo klaidos

Kartais būna priežasčių, kodėl SMS žinutės abonentui nepristatomos. Šių priežasčių pasekmė yra klaidų atsiradimas. Klaidos grąžinamos į PDUs_sms_resp. Visos klaidos gali būti suskirstytos į laikinas (laikinas) ir nuolatines (nuolatines).

Pavyzdžiui, absent_subscriber gali būti klasifikuojamas kaip laikinas – abonentas nepasiekiamas arba nėra prisijungęs, ir nuolatinis – abonentas neegzistuoja. Atsižvelgiant į įvykusias klaidas, sudaroma šių pranešimų pakartotinio siuntimo politika.

Pavyzdžiui, jei abonentas buvo užimtas skambučio metu ir gavo klaidą MT ragelis užimtas, pranešimas gali būti išsiųstas dar kartą po kelių minučių, tačiau jei abonento pranešimų priėmimo paslauga yra užblokuota, pakartotinis siuntimas nebus prasmingas. Klaidų sąrašą galite rasti SMSC puslapiuose, pavyzdžiui, kaip tai.

Šaltinis: www.habr.com

Добавить комментарий