Kako poslati SMS iz C#.Net
Za slanje SMS-a iz C#.Net imate nekoliko opcija. Možete koristiti C# SMS API biblioteku Ozeki-a, ili možete koristiti HTTP zahteve. Za slanje tekstualne poruke u C#.Net najbolja opcija zavisi od tipa C# projekta koji koristite. Ako pišete kod za servisiranje veb zahteva, kao što je C# na ASP veb stranici, trebali biste koristiti HTTP zahteve. Ako kreirate desktop aplikaciju, Windows servis ili mobilnu aplikaciju za Android ili iPhone, najbolje je koristiti C# SMS API biblioteku. Ovaj vodič (Slika 1) se fokusira samo na slanje SMS-a. Ako trebate i slati i primati, možete početi čitanjem vodiča Najbolji C# SMS API u 2025 prvo.
Potpuno funkcionalan primer C# SMS API-ja može se preuzeti sa sledećeg URL-a. Ovaj
kod je dostupan besplatno i može se slobodno modifikovati i redistribuirati.
Preuzmi: OzekiConsole.zip (51 Kb)
Slanje tekstualne poruke iz desktop aplikacije (ili konzolne aplikacije ili Windows servisa) ima drugačije zahteve u odnosu na slanje SMS-a sa veb sajta. Desktop aplikacija radi duži vremenski period (mnogo minuta, dana ili čak nedelja). U ovom slučaju je korisno održavati trajnu vezu sa SMS gateway-em. Korišćenje jednokratnih HTTP zahteva nije dobar izbor za ove aplikacije. Najveća prednost održavanja trajne veze je što dobijate informacije o događajima isporuke poruka, kao što su izveštaji o podnošenju, izveštaji o isporuci i neuspesi u isporuci SMS-a.
Za slanje SMS-a iz C# desktop aplikacije prvo koristite dostupan primer (kao što možete videti na Slici 2):
- Povežite se sa Ozeki SMS gateway-em koristeći ozx korisničko ime i lozinku koje ste kreirali u korisničkom interfejsu SMS gateway-a. Za povezivanje koristite komandu "connect hostname:port username password".
- Pošaljite svoju tekstualnu poruku. Ovo se može uraditi unosom "send brojtelefona tekst poruke" ako koristite primer konzolne aplikacije za slanje.
- Sačekajte izveštaje o podnošenju i isporuci SMS-a. Možete primetiti da su ovi izveštaji prikazani na ekranu i da sadrže isti ID poruke koji je vraćen prilikom slanja SMS-a.
Primer konzolne aplikacije napisane u C#.Net. Izvorni kod ove konzolne aplikacije dostupan je na stranici C# SMS API sa izvornim kodom.
Gornji primer pokazuje neophodne korake. Možete videti da se prvo uspostavlja trajna veza sa SMS gateway-em, a zatim se poruka šalje. Na kraju se vide izveštaji o prihvatanju i podnošenju poruke.
Za slanje SMS-a iz C#, koristite sledeći izvorni kod:
- 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="Ovo je tekst za slanje iz C#"});
Kada postavite svojstvo Client.Autoconnect na true, osiguravate da će se klijent ponovo povezati sa SMS gateway-em čak i ako je mrežna veza privremeno prekinuta ili ako je SMS gateway restartovan.
Za primanje izveštaja o isporuci SMS-a u C#, potrebno je pretplatiti se na događaje:
- Client.OnMessageAcceptedForDelivery += Client_OnMessageAcceptedForDelivery;
- Client.OnMessageNotAcceptedForDelivery += Client_OnMessageNotAcceptedForDelivery;
- Client.OnMessageSubmitSuccess += Client_OnMessageSubmitSuccess;
- Client.OnMessageSubmitFailed += Client_OnMessageSubmitFailed;
- Client.OnMessageDeliverySuccess += Client_OnMessageDeliverySuccess;
- Client.OnMessageDeliveryFailed += Client_OnMessageDeliveryFailed;
Ovi događaji će se aktivirati kada SMS gateway pošalje odgovarajuće izveštaje preko trajne veze koju smo uspostavili koristeći connect. Ovo je najveća prednost korišćenja trajne veze. Dobijate trenutna obaveštenja o ovim događajima vezanim za isporuku SMS-a. Takva obaveštenja je teško dobiti ako koristite HTTP SMS API. Sa druge strane, ove informacije su ključne za bilo koji biznis, i morate ih obraditi kako biste izgradili dobar SMS softver.
Kakve vrste izveštaja o isporuci SMS-ova pruža C# SMS API?
C# SMS API vraća pet vrsta izveštaja o isporuci SMS-ova. Oni su predstavljeni kao C# događaji. To su: događaj prihvatanja SMS-a, događaj neprihvatanja SMS-a, događaj uspešnog slanja SMS-a, događaj neuspešnog slanja SMS-a, događaj uspešne isporuke SMS-a i događaj neuspešne isporuke SMS-a.
Događaj prihvatanja SMS-a: Događaj prihvatanja SMS-a se pokreće kada Ozeki SMS gateway prihvati SMS za isporuku i smesti ga u outbox korisničkog naloga.
Događaj neprihvatanja SMS-a: Događaj neprihvatanja SMS-a se pokreće ako Ozeki SMS gateway ne prihvati SMS za isporuku. Ovo može da se desi, na primer, ako korisniku ponestane SMS kredita, ili ako je disk pun ili se desi neka druga greška u SMS gateway-u.
Događaj uspešnog slanja SMS-a: Događaj uspešnog slanja SMS-a se aktivira kada je SMS uspešno isporučen mobilnoj mreži. Mobilna mreža vraća izveštaj o slanju SMS-a, i ovaj izveštaj se prosleđuje C# SMS API klijentu kroz uspostavljenu vezu. Događaj uspešnog slanja SMS-a se pokreće, na primer, kada SMS pošalje SMPP klijent koji povezuje sistem sa mobilnom mrežom preko interneta. Ako šaljete SMS poruke preko android SMS gateway-a, ovaj događaj se dešava kada SMS pošalje SMS modem ugrađen u android telefon. Ako šaljete SMS preko standardnog GSM modem pool-a koji je povezan na vaš server preko kabla, događaj se aktivira kada modem vrati 1 bajt uspešnog slanja referencnog koda na AT+CMGS modem komandu.
Događaj neuspešnog slanja SMS-a: Događaj neuspešnog slanja SMS-a se dešava ako SMS nije mogao biti poslat iz bilo kog razloga u mobilnu mrežu od strane Ozeki SMS Gateway-a. Na primer, ako je internet veza koju koristi SMPP klijent za povezivanje sa mobilnom mrežom isključena ili ako SMPP Server vrati SMPP poruku o grešci kada se SMS šalje. Ako šaljete SMS poruke preko android SMS gateway-a, a android mobilni telefon nema kredita ili telefon nije registrovan u mobilnoj mreži, takođe ćete dobiti ovaj događaj. Takođe je moguće da tabela rutiranja SMS-ova nije pravilno konfigurisana. Greška pri slanju SMS-a može se desiti i ako koristite GSM modem za isporuku SMS-ova i ako je kabl između modema i računara isključen ili oštećen. U svim ovim slučajevima imat ćete poruku o grešci u Event Args-u pridruženom ovom događaju kako biste imali ideju šta bi mogao biti razlog neuspeha slanja SMS-a.
Događaj uspešne isporuke SMS-a: Događaj uspešne isporuke SMS-a se poziva kada je SMS uspešno isporučen na primalacov telefon. U ovom slučaju mobilna mreža vraća izveštaj o isporuci SMS-a SMS gateway-u. Izveštaj o isporuci SMS-a sadrži vreme isporuke i statusni kod uspešne isporuke. SMS gateway prosleđuje ovu informaciju C# SMS API-ju. Kada primite izveštaj o isporuci SMS-a u C#-u, možete biti sigurni da je primalac primio vaš SMS.
Događaj neuspešne isporuke SMS-a: Izveštaj o isporuci SMS-a u C#-u može se obraditi događajem neuspešne isporuke SMS-a ako izveštaj o isporuci sadrži statusni kod neuspešne isporuke. Ovo se može desiti, na primer, ako mobilni telefon na koji je SMS poslat nikada nije uključen. Ovaj događaj se retko dešava, jer većina mobilnih mreža ne vraća negativne izveštaje o isporuci.
Pošalji SMS iz C# SMS API-ja (besplatan izvorni kod za korišćenje)
Da biste poslali SMS iz C#-a, koristite sledeći izvorni kod. Ovaj izvorni kod možete slobodno modifikovati i redistribuirati. Imajte na umu da takođe možete slobodno modifikovati i redistribuirati izvorni kod C# SMS API biblioteke u 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("Uspešno povezivanje."); var msg = new OzxMessage(); msg.ToAddress = recipient; msg.Text = message; Console.WriteLine("Slanje poruke. ID: "+msg.ID); Client.Send(msg); } static void Client_OnDisconnected(object sender, OzxArgs< string > e) { Console.WriteLine("Veza prekinuta. Razlog: " + e.Item.ToString()); } static void Client_OnMessageAcceptedForDelivery(object sender, OzxArgs< string > e) { Console.WriteLine("Poruka prihvaćena za isporuku. ID: " + e.Item.ToString()); } static void Client_OnMessageNotAcceptedForDelivery(object sender, OzxArgs< string, string > e) { Console.WriteLine("Poruka odbijena. ID: " + e.Item1.ToString()+" Razlog: "+e.Item2); } static void Client_OnMessageSubmitSuccess(object sender, OzxArgs< string, DateTime > e) { Console.WriteLine("Poruka poslata. ID: "+e.Item1+" Datum: "+e.Item2); } static void Client_OnMessageSubmitFailed(object sender, OzxArgs< string, DateTime, string > e) { Console.WriteLine("Slanje poruke nije uspelo. ID: " + e.Item1 + " Datum: " + e.Item2+" Razlog: "+e.Item3); } static void Client_OnMessageDeliverySuccess(object sender, OzxArgs< string, DateTime > e) { Console.WriteLine("Poruka isporučena. ID: " + e.Item1 + " Datum: " + e.Item2); } static void Client_OnMessageDeliveryFailed(object sender, OzxArgs< string, DateTime, string > e) { Console.WriteLine("Isporuka poruke nije uspela. ID: " + e.Item1 + " Datum: " + e.Item2 + " Razlog: " + e.Item3); } static void Client_OnMessageViewed(object sender, OzxArgs< string, DateTime > e) { Console.WriteLine("Poruka pregledana. ID: " + e.Item1 + " Datum: " + e.Item2); } } }
Za testiranje slanja SMS-a u C# SMS API-ju imate dve opcije: Možete koristiti ugrađenu SMS tester vezu ili možete podesiti dva SMS gateway-a za realističnije testiranje. Ako podesite dva SMS gateway-a, prvo morate konfigurisati prvi SMS gateway kao SMPP simulator. Ovaj SMS gateway će pružati SMPP serverski servis drugom SMS gateway-u. Funkcionisaće na isti način kao SMSC mobilnog operatera. Drugi SMS gateway će se povezati na prvi koristeći SMPP klijentsku vezu, i pružaće C# SMS API servis vašoj C# SMS aplikaciji.
Često postavljana pitanja Da li se izveštaj o isporuci (onMessageDeliveryFailed) dobija za svaki neuspešan pokušaj ili samo kada se dostigne maksimalan broj pokušaja?Poruka ostaje u stanju čekanja dok se ne iscrpe svi pokušaji isporuke.
Da li je moguće čuvati dolazne izveštaje o isporuci SMS-a u SQL?Da biste primali izveštaje o isporuci za vaše SMS poruke, idite na meni "Edit" i izaberite "Server preferences." U okviru kartice "Advanced", pronađite polje za potvrdu označeno kao "Copy delivery reports for users" i uverite se da je označeno. Ako ste konfigurisali SQL za SMS gateway, dolazni izveštaji o isporuci će biti automatski sačuvani u bazi podataka kao standardne dolazne poruke. Evo kako se ažuriraju statusi isporuke:
- Tabela ozekimessageout i ažuriranja statusa: Ako šaljete poruke iz tabele "ozekimessageout", polje "status" automatski prati stanje isporuke svake poruke. Ovo polje se dinamički ažurira kako bi odražavalo sledeće ishode:
- deliveredtonetwork: Poruka uspešno poslata u mrežu.
- deliveredtohandset: Poruka isporučena na telefon primaoca.
- deliveryerror: Došlo je do greške prilikom isporuke.
More information
- Kako poslati SMS iz C#
- Primanje SMS-a u C#
- C# SMS API povezivanje za slanje SMS-a
- C# SMS API - prekid veze sa SMS gateway-em
- C# SMS API - održavanje SMS veze
- C# SMS API - slanje tekstualne poruke
- C# SMS API - SMS prihvaćen za isporuku
- C# SMS API - SMS nije prihvaćen za isporuku
- C# SMS API - poslato
- C# SMS API - slanje nije uspelo
- C# SMS API - uspešan izveštaj o isporuci
- C# SMS API - izveštaj o neuspešnoj isporuci
- C# SMS API - alfanumerički ID pošiljaoca
- C# SMS API kako koristiti kratki kod kao ID pošiljaoca
- C# SMS API klasa za tekstualnu poruku