Kako poslati SMS iz C#.Net
Za pošiljanje SMS iz C#.Net imate več možnosti. Lahko uporabite C# SMS API knjižnico Ozeki ali pa HTTP zahteve. Za pošiljanje besedilnih sporočil v C#.Net je najboljša možnost odvisna od vrste C# projekta, ki ga uporabljate. Če pišete kodo za strežbo spletnih zahtev, kot je C# na ASP spletni strani, bi morali izbrati HTTP zahteve. Če ustvarjate namizno aplikacijo, Windows storitev ali mobilno aplikacijo za Android ali iPhone, je najbolje uporabiti C# SMS API knjižnico. Ta vodič (Slika 1) se osredotoča samo na pošiljanje SMS. Če morate pošiljati in prejemati, lahko začnete z branjem vodiča Najboljši C# SMS API leta 2025.
Popolnoma delujoč primer C# SMS API lahko prenesete z naslednjega URL-ja. Ta
koda je na voljo brezplačno in jo lahko prosto spreminjate in redistribuirate.
Prenos: OzekiConsole.zip (51 Kb)
Pošiljanje besedilnega sporočila iz namizne aplikacije (ali konzolne aplikacije ali Windows storitve) ima drugačne zahteve kot pošiljanje SMS iz spletne strani. Namizna aplikacija teče daljši čas (več minut, dni ali celo tednov). V tem primeru je koristno vzdrževati trajno povezavo do SMS prehoda. Uporaba enkratnih spletnih zahtev ni dobra izbira za te aplikacije. Največja prednost trajne povezave je, da prejemate informacije o dogodkih dostave sporočil, kot so poročila o oddaji, poročila o dostavi in neuspehi dostave SMS.
Za pošiljanje SMS iz namizne aplikacije v C# najprej uporabite navedeni primer (kot je prikazano na Sliki 2):
- Povežite se z ozeki SMS prehodom z uporabo ozx uporabniškega imena in gesla, ki ste ga ustvarili v uporabniškem vmesniku SMS prehoda. Za povezavo uporabite ukaz "connect hostname:port username password".
- Pošljite svoje besedilno sporočilo. To lahko storite z vnosom "send telefonska_številka besedilo_sporočila", če uporabljate primer konzolne aplikacije za pošiljanje.
- Počakajte na poročila o oddaji SMS in poročila o dostavi. Opazili boste, da so ta poročila prikazana na zaslonu in vsebujejo enako ID sporočila, ki je bil vrnjen ob pošiljanju SMS.
Primer konzolne aplikacije, napisane v C#.Net. Izvorna koda te konzolne aplikacije je na voljo na strani C# SMS API z izvorno kodo.
Zgornji primer prikazuje potrebne korake. Vidite, da se najprej vzpostavi trajna povezava z SMS prehodom, nato pa se sporočilo pošlje. Nazadnje vidite poročilo o sprejemu sporočila in poročilo o oddaji sporočila.
Za pošiljanje SMS iz C# uporabite naslednjo izvorno kodo:
- Client = new OzxClient();
- Client.AutoReconnect = true;
- Client.Connect("127.0.0.1", 9518, "testuser", "testpassword");
- Client.Connect("127.0.0.1", 9518, "testuser", "testpassword");
- Client.Send(new OzxMessage() {ToAddress="+36111111",Text="To je besedilo za pošiljanje besedila iz C#"});
Ko nastavite lastnost Client.Autoconnect na true, se zagotovi, da se bo odjemalec ponovno povezal z SMS prehodom, tudi če je omrežna povezava začasno izgubljena ali če se SMS prehod ponovno zažene.
Za prejemanje poročil o dostavi SMS v C# se morate prijaviti na dogodke:
- Client.OnMessageAcceptedForDelivery += Client_OnMessageAcceptedForDelivery;
- Client.OnMessageNotAcceptedForDelivery += Client_OnMessageNotAcceptedForDelivery;
- Client.OnMessageSubmitSuccess += Client_OnMessageSubmitSuccess;
- Client.OnMessageSubmitFailed += Client_OnMessageSubmitFailed;
- Client.OnMessageDeliverySuccess += Client_OnMessageDeliverySuccess;
- Client.OnMessageDeliveryFailed += Client_OnMessageDeliveryFailed;
Ti dogodki se sprožijo, ko SMS prehod pošlje ustrezna poročila preko trajne povezave, ki smo jo ustvarili z connect. To je največja prednost uporabe trajne povezave. Takojšnja obvestila o teh dogodkih, povezanih z dostavo SMS. Takšna obvestila je težko dobiti, če uporabljate HTTP SMS API. Po drugi strani pa so te informacije ključne za vsako podjetje in jih morate obdelati, da zgradite dobro SMS programsko opremo.
Kakšna poročila o dostavi SMS-ov ponuja C# SMS API?
C# SMS API vrne pet vrst poročil o dostavi SMS-ov. Te so predstavljene kot dogodki v C#. To so: dogodek sprejema SMS-a, dogodek nesprejema SMS-a, dogodek uspešnega pošiljanja SMS-a, dogodek neuspešnega pošiljanja SMS-a, dogodek uspešne dostave SMS-a in dogodek neuspešne dostave SMS-a.
Dogodek sprejema SMS-a: Dogodek sprejema SMS-a se sproži, ko Ozeki SMS prehod sprejme SMS za dostavo in ga postavi v odhodno pošto uporabniškega računa.
Dogodek nesprejema SMS-a: Dogodek nesprejema SMS-a se sproži, če Ozeki SMS prehod ne sprejme SMS-a za dostavo. To se lahko zgodi na primer, če uporabnik zmanjka kreditov za SMS, ali če je disk poln ali če pride do druge napake v SMS prehodu.
Dogodek uspešnega pošiljanja SMS-a: Dogodek uspešnega pošiljanja SMS-a se sproži, ko je SMS uspešno dostavljen v mobilno omrežje. Mobilno omrežje vrne poročilo o pošiljanju SMS-a, in to poročilo se posreduje odjemalcu C# SMS API prek vzpostavljene povezave. Dogodek uspešnega pošiljanja SMS-a se sproži na primer, ko SMS pošlje SMPP odjemalec, ki povezuje sistem z mobilnim omrežjem prek interneta. Če pošiljate SMS sporočila prek android SMS prehoda, se ta dogodek zgodi, ko SMS pošlje SMS modem, vgrajen v android telefon. Če pošiljate SMS prek običajnega GSM modemske skupine, ki je povezana z vašim strežnikom prek podatkovnega kabla, se dogodek sproži, ko modem vrne 1-bajtno referenčno kodo za uspešno pošiljanje na ukaz AT+CMGS modema.
Dogodek neuspešnega pošiljanja SMS-a: Dogodek neuspešnega pošiljanja SMS-a se zgodi, če SMS-a ni bilo mogoče poslati iz katerega koli razloga v mobilno omrežje prek Ozeki SMS prehoda. Na primer, če je internetna povezava ki jo uporablja SMPP odjemalec za povezavo z mobilnim omrežjem izklopljena ali če SMPP strežnik vrne sporočilo o napaki SMPP, ko je SMS poslan. Če pošiljate svoja SMS sporočila prek android SMS prehoda, in android mobilnemu telefonu zmanjka kreditov ali pa telefon ni registriran v mobilnem omrežju, prav tako prejmete ta dogodek. Lahko se tudi zgodi, da je tabela usmerjanja SMS-ov nepravilno nastavljena. Napaka pri pošiljanju SMS-a se lahko zgodi tudi, če uporabljate GSM modem za dostavo SMS-ov in je podatkovni kabel med modemom in računalnikom izklopljen ali pokvarjen. V vseh teh primerih boste imeli sporočilo o napaki v argumentih dogodka, ki vam bo dalo idejo, kaj bi lahko bil razlog za neuspešno pošiljanje SMS-a.
Dogodek uspešne dostave SMS-a: Dogodek uspešne dostave SMS-a se pokliče, ko je SMS uspešno dostavljen na prejemnikov telefon. V tem primeru mobilno omrežje vrne poročilo o dostavi SMS-a v SMS prehod. Poročilo o dostavi SMS-a vsebuje časovni žig dostave in uspešno statusno kodo dostave. SMS prehod posreduje te informacije C# SMS API-ju. Ko prejmete dogodek poročila o dostavi SMS-a v C#, lahko ste prepričani, da je vaš SMS prejel prejemnik.
Dogodek neuspešne dostave SMS-a: Poročilo o dostavi SMS-a v C# se lahko obdela z dogodkom neuspešne dostave SMS-a, če poročilo o dostavi vsebuje statusno kodo neuspešne dostave. To se lahko zgodi na primer, če mobilni telefon, na katerega je bil SMS poslan, ni nikoli vklopljen. Ta dogodek se zgodi redko, ker večina mobilnih omrežij ne vrne negativnih poročil o dostavi.
Pošlji SMS iz C# SMS API (prosto uporabna izvorna koda)
Za pošiljanje SMS iz C# uporabite naslednjo izvorno kodo. To izvorno kodo lahko prosto spreminjate in redistribuirate. Opomba: lahko tudi prosto spreminjate in redistribuirate izvorno kodo knjižnice C# SMS API v projektu Ozeki.Libs.Ozx.
using System; using OZX; namespace OzekiConsoleClient { class Program { static OzxClient Client; static void Main(string[] args) { Client = new OzxClient(); Client.AutoReconnect = true; Client.OnMessageAcceptedForDelivery += Client_OnMessageAcceptedForDelivery; Client.OnMessageNotAcceptedForDelivery += Client_OnMessageNotAcceptedForDelivery; Client.OnMessageSubmitSuccess += Client_OnMessageSubmitSuccess; Client.OnMessageSubmitFailed += Client_OnMessageSubmitFailed; Client.OnMessageDeliverySuccess += Client_OnMessageDeliverySuccess; Client.OnMessageDeliveryFailed += Client_OnMessageDeliveryFailed; Client.OnMessageViewed += Client_OnMessageViewed; Client.OnConnected += Client_OnConnected; Client.OnDisconnected += Client_OnDisconnected; Client.Connect("127.0.0.1",9580,"testuser","testpass"); } static void Client_OnConnected(object sender, EventArgs e) { Console.WriteLine("Successfully connected."); var msg = new OzxMessage(); msg.ToAddress = recipient; msg.Text = message; Console.WriteLine("Sending message. ID: "+msg.ID); Client.Send(msg); } static void Client_OnDisconnected(object sender, OzxArgs< string > e) { Console.WriteLine("Connection closed. Reason: " + e.Item.ToString()); } static void Client_OnMessageAcceptedForDelivery(object sender, OzxArgs< string > e) { Console.WriteLine("Message accepted for delivery. ID: " + e.Item.ToString()); } static void Client_OnMessageNotAcceptedForDelivery(object sender, OzxArgs< string, string > e) { Console.WriteLine("Message rejected. ID: " + e.Item1.ToString()+" Reason: "+e.Item2); } static void Client_OnMessageSubmitSuccess(object sender, OzxArgs< string, DateTime > e) { Console.WriteLine("Message submitted. ID: "+e.Item1+" Date: "+e.Item2); } static void Client_OnMessageSubmitFailed(object sender, OzxArgs< string, DateTime, string > e) { Console.WriteLine("Message submit failed. ID: " + e.Item1 + " Date: " + e.Item2+" Reason: "+e.Item3); } static void Client_OnMessageDeliverySuccess(object sender, OzxArgs< string, DateTime > e) { Console.WriteLine("Message delivered. ID: " + e.Item1 + " Date: " + e.Item2); } static void Client_OnMessageDeliveryFailed(object sender, OzxArgs< string, DateTime, string > e) { Console.WriteLine("Message delivery failed. ID: " + e.Item1 + " Date: " + e.Item2 + " Reason: " + e.Item3); } static void Client_OnMessageViewed(object sender, OzxArgs< string, DateTime > e) { Console.WriteLine("Message viewed. ID: " + e.Item1 + " Date: " + e.Item2); } } }
Za testiranje pošiljanja SMS v C# SMS API imate dve možnosti: Uporabite lahko vgrajeno povezavo za testiranje SMS ali lahko nastavite dve SMS prehodi za bolj realistično testno okolje. Če nastavite dve SMS prehodi, morate najprej prvo SMS prehod nastaviti kot SMPP simulator. Ta SMS prehod bo zagotavljal storitev SMPP strežnika drugi SMS prehodi. Deloval bo enako, kot bi deloval SMSC mobilnega omrežnega operaterja. Drugi SMS prehod se bo povezal na prvi z uporabo povezave SMPP odjemalca in bo zagotavljal storitev C# SMS API vaši C# SMS aplikaciji.
Pogosta vprašanja Ali se poročilo o dostavi (onMessageDeliveryFailed) pridobi za vsak neuspešen poskus ali se pridobi šele, ko je doseženo največje število poskusov?Sporočilo ostane v stanju čakanja, dokler ni izčrpanih vseh poskusov dostave.
Ali je mogoče shraniti prispela poročila o dostavi SMS v SQL?Za prejemanje poročil o dostavi vaših SMS sporočil pojdite v meni "Uredi" in izberite "Nastavitve strežnika." V zavihku "Napredno" poiščite potrditveno polje z oznako "Kopiraj poročila o dostavi za uporabnike" in poskrbite, da je označeno. Če ste nastavili SQL na SMS prehod, bodo prispela poročila o dostavi samodejno shranjena v bazi podatkov kot običajna prispela sporočila. Tukaj je prikazano, kako se posodabljajo stanja dostave:
- Tabela ozekimessageout in posodobitve stanja: Če pošiljate sporočila iz tabele "ozekimessageout", se polje "status" samodejno posodablja, da odraža stanje dostave vsakega sporočila. To polje se dinamično posodablja, da odraža naslednje izide:
- deliveredtonetwork: Sporočilo je bilo uspešno poslano v omrežje.
- deliveredtohandset: Sporočilo je bilo dostavljeno na prejemnikov telefon.
- deliveryerror: Pri dostavi je prišlo do napake.
More information
- Kako poslati SMS iz C#
- Prejemanje SMS v C#
- C# SMS API povezava za pošiljanje SMS
- C# SMS API - prekinitev povezave s SMS prehodom
- C# SMS API - ohranjanje SMS povezave
- C# SMS API - pošiljanje besedilnega sporočila
- C# SMS API - SMS sprejet za dostavo
- C# SMS API - SMS ni sprejet za dostavo
- C# SMS API - poslano
- C# SMS API - pošiljanje ni uspelo
- C# SMS API - poročilo o uspešni dostavi
- C# SMS API - poročilo o neuspešni dostavi
- C# SMS API - alfanumerični ID pošiljatelja
- C# SMS API kako uporabiti kratko številko kot ID pošiljatelja
- C# SMS API razred za besedilno sporočilo