Ako poslať SMS z C#.Net
Na odoslanie SMS z C#.Net máte niekoľko možností. Môžete použiť C# SMS API knižnicu od Ozeki, alebo môžete použiť HTTP požiadavky. Na odoslanie textovej správy v C#.Net závisí najlepšia možnosť od typu C# projektu, ktorý používate. Ak píšete kód na obsluhu webových požiadaviek, ako je C# na ASP webovej stránke, mali by ste použiť HTTP požiadavky. Ak vytvárate desktopovú aplikáciu, windows službu alebo mobilnú aplikáciu pre Android alebo iPhone, je najlepšie použiť C# SMS API knižnicu. Tento sprievodca (Obrázok 1) sa zameriava len na odosielanie SMS. Ak potrebujete vykonávať aj odosielanie a prijímanie, môžete začať čítaním sprievodcu Najlepšie C# SMS API v roku 2025.
Úplne funkčný príklad C# SMS API si môžete stiahnuť z nasledujúcej URL. Tento
kód je poskytovaný zadarmo a môžete ho voľne upravovať a redistribuovať.
Stiahnuť: OzekiConsole.zip (51 Kb)
Odosielanie textovej správy z desktopovej aplikácie (alebo konzolovej aplikácie alebo Windows služby) má iné požiadavky ako odosielanie SMS z webovej stránky. Desktopová aplikácia beží dlhší čas (mnoho minút, dní alebo dokonca týždňov). V tomto prípade je výhodné udržiavať trvalé pripojenie k SMS bráne. Použitie jednorazových webových požiadaviek nie je pre tieto aplikácie dobrá voľba. Najväčšou výhodou udržiavania trvalého pripojenia je, že získate informácie o udalostiach doručenia správ, ako sú správy o odoslaní, správy o doručení a zlyhania doručenia SMS.
Na odoslanie SMS z C# desktopovej aplikácie najskôr použite poskytnutý príklad (ako môžete vidieť na Obrázku 2):
- Pripojte sa k ozeki SMS bráne pomocou ozx používateľského mena a hesla, ktoré ste vytvorili v používateľskom rozhraní SMS brány. Na pripojenie použite príkaz "connect hostname:port username password".
- Odošlite svoju textovú správu. To môžete urobiť napísaním "send telefónnečíslo text správy", ak používate príkladovú konzolovú aplikáciu na odosielanie.
- Čakajte na správy o odoslaní a správy o doručení SMS. Môžete si všimnúť, že tieto správy sú vytlačené na obrazovke a obsahujú rovnaké ID správy, ktoré bolo vrátené pri odoslaní SMS.
Príklad konzolovej aplikácie napísanej v C#.Net. Zdrojový kód tejto konzolovej aplikácie je dostupný na stránke C# SMS API so zdrojovým kódom.
Vyššie uvedený príklad vám ukazuje potrebné kroky. Môžete vidieť, že najskôr sa vytvorí trvalé pripojenie k SMS bráne a potom sa odošle správa. Nakoniec vidíte správu o prijatí správy a správu o odoslaní správy.
Na odoslanie SMS z C# použite nasledujúci zdrojový kód:
- 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="Toto je text na odoslanie SMS z C#"});
Keď nastavíte vlastnosť Client.Autoconnect na true, zabezpečíte, že klient sa znova pripojí k SMS bráne, aj keď je dočasne prerušené sieťové pripojenie alebo sa SMS brána reštartuje.
Na prijímanie správ o doručení SMS v C# sa musíte prihlásiť na udalosti:
- Client.OnMessageAcceptedForDelivery += Client_OnMessageAcceptedForDelivery;
- Client.OnMessageNotAcceptedForDelivery += Client_OnMessageNotAcceptedForDelivery;
- Client.OnMessageSubmitSuccess += Client_OnMessageSubmitSuccess;
- Client.OnMessageSubmitFailed += Client_OnMessageSubmitFailed;
- Client.OnMessageDeliverySuccess += Client_OnMessageDeliverySuccess;
- Client.OnMessageDeliveryFailed += Client_OnMessageDeliveryFailed;
Tieto udalosti sa spustia, keď SMS brána odošle príslušné správy cez trvalé pripojenie, ktoré sme vytvorili pomocou connect. Toto je najväčšia výhoda použitia trvalého pripojenia. Dostávate okamžité upozornenia na tieto udalosti súvisiace s doručením SMS. Takéto upozornenia je ťažké získať, ak používate HTTP SMS API. Na druhej strane, tieto informácie sú kľúčové pre akýkoľvek biznis a musíte ich spracovať, aby ste vytvorili dobrý SMS softvér.
Aké typy správ o doručení SMS poskytuje C# SMS API?
C# SMS API vracia päť typov správ o doručení SMS. Sú prezentované ako udalosti v C#. Sú to: udalosť prijatia SMS, udalosť neprijatia SMS, udalosť úspešného odoslania SMS, udalosť neúspešného odoslania SMS, udalosť úspešného doručenia SMS a udalosť neúspešného doručenia SMS.
Udalosť prijatia SMS: Udalosť prijatia SMS sa vyvolá, keď Ozeki SMS gateway prijme SMS na doručenie a uloží ju do odosielacej schránky používateľského účtu.
Udalosť neprijatia SMS: Udalosť neprijatia SMS sa vyvolá, ak Ozeki SMS gateway neprijme SMS na doručenie. To sa môže stať napríklad, ak používateľ minie SMS kredity, alebo je disk plný, alebo nastane iná chyba v SMS gateway.
Udalosť úspešného odoslania SMS: Udalosť úspešného odoslania SMS sa spustí, keď je SMS úspešne doručená do mobilnej siete. Mobilná sieť vráti správu o odoslaní SMS a táto správa je preposlaná klientovi C# SMS API cez nadviazané spojenie. Udalosť úspešného odoslania SMS sa vyvolá napríklad, keď SMS odošle GSM modem pool, ktorý je pripojený k serveru dátovým káblom, udalosť sa vyvolá, keď modem vráti 1-bajtový referenčný kód úspešného odoslania na príkaz AT+CMGS.
Udalosť neúspešného odoslania SMS: Udalosť neúspešného odoslania SMS nastane, ak SMS nemohla byť z akéhokoľvek dôvodu odoslaná do mobilnej siete Ozeki SMS Gateway. Napríklad, ak internetové pripojenie používané GSM modem na doručenie SMS a dátový kábel medzi modemom a počítačom je odpojený alebo poškodený. Vo všetkých týchto prípadoch budete mať v Event Args pripojených k tejto udalosti chybovú správu, ktorá vám dá predstavu o možnom dôvode zlyhania odoslania SMS.
Udalosť úspešného doručenia SMS: Udalosť úspešného doručenia SMS sa volá, keď je SMS úspešne doručená na príjímací telefón. V tomto prípade mobilná sieť vráti správu o doručení SMS do SMS gateway. Správa o doručení obsahuje časovú pečiatku doručenia a úspešný stavový kód doručenia. SMS gateway preposiela túto informáciu do C# SMS API. Keď dostanete udalosť správy o doručení SMS v C#, môžete si byť istí, že príjemca SMS prijal.
Udalosť neúspešného doručenia SMS: Správa o doručení SMS v C# môže byť spracovaná s udalosťou neúspešného doručenia SMS, ak správa o doručení obsahuje neúspešný stavový kód doručenia. To sa môže stať napríklad, ak mobilný telefón, na ktorý bola SMS odoslaná, nie je nikdy zapnutý. Táto udalosť sa stáva zriedkavo, pretože väčšina mobilných sietí nevracia negatívne správy o doručení.
Poslať SMS z C# SMS API (zdrojový kód voľne použiteľný)
Na odoslanie SMS z C# použite nasledujúci zdrojový kód. Tento zdrojový kód môžete voľne upravovať a redistribuovať. Upozorňujeme, že môžete tiež voľne upravovať a redistribuovať zdrojový kód knižnice C# SMS API v projekte 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("Úspešne pripojené."); var msg = new OzxMessage(); msg.ToAddress = recipient; msg.Text = message; Console.WriteLine("Odosielanie správy. ID: "+msg.ID); Client.Send(msg); } static void Client_OnDisconnected(object sender, OzxArgs< string > e) { Console.WriteLine("Spojenie ukončené. Dôvod: " + e.Item.ToString()); } static void Client_OnMessageAcceptedForDelivery(object sender, OzxArgs< string > e) { Console.WriteLine("Správa prijatá na doručenie. ID: " + e.Item.ToString()); } static void Client_OnMessageNotAcceptedForDelivery(object sender, OzxArgs< string, string > e) { Console.WriteLine("Správa zamietnutá. ID: " + e.Item1.ToString()+" Dôvod: "+e.Item2); } static void Client_OnMessageSubmitSuccess(object sender, OzxArgs< string, DateTime > e) { Console.WriteLine("Správa odoslaná. ID: "+e.Item1+" Dátum: "+e.Item2); } static void Client_OnMessageSubmitFailed(object sender, OzxArgs< string, DateTime, string > e) { Console.WriteLine("Odoslanie správy zlyhalo. ID: " + e.Item1 + " Dátum: " + e.Item2+" Dôvod: "+e.Item3); } static void Client_OnMessageDeliverySuccess(object sender, OzxArgs< string, DateTime > e) { Console.WriteLine("Správa doručená. ID: " + e.Item1 + " Dátum: " + e.Item2); } static void Client_OnMessageDeliveryFailed(object sender, OzxArgs< string, DateTime, string > e) { Console.WriteLine("Doručenie správy zlyhalo. ID: " + e.Item1 + " Dátum: " + e.Item2 + " Dôvod: " + e.Item3); } static void Client_OnMessageViewed(object sender, OzxArgs< string, DateTime > e) { Console.WriteLine("Správa zobrazená. ID: " + e.Item1 + " Dátum: " + e.Item2); } } }
Na otestovanie odosielania SMS v C# SMS API máte dve možnosti: Môžete použiť zabudované testovacie spojenie pre SMS alebo môžete nastaviť dve SMS brány pre realistickejšie testovacie prostredie. Ak nastavíte dve SMS brány, najprv musíte nakonfigurovať prvú SMS bránu ako SMPP simulátor. Táto SMS brána bude poskytovať SMPP serverovú službu druhej SMS bráne. Bude fungovať rovnako, ako by fungoval SMSC mobilného operátora. Druhá SMS brána sa pripojí k prvej pomocou SMPP klienta a bude poskytovať službu C# SMS API vašej C# SMS aplikácii.
Často kladené otázky Doručovací report (onMessageDeliveryFailed) sa získa pre každý neúspešný pokus alebo len po dosiahnutí maximálneho počtu pokusov?Správa zostáva v stave čakania, kým nie sú vyčerpané všetky pokusy o doručenie.
Je možné ukladať doručovacie reporty prichádzajúcich SMS do SQL?Na prijímanie doručovacích reportov pre vaše SMS správy prejdite do ponuky "Edit" a vyberte "Server preferences". V záložke "Advanced" nájdite začiarkavacie políčko s názvom "Copy delivery reports for users" a uistite sa, že je začiarknuté. Ak máte nakonfigurované SQL pre SMS bránu, prichádzajúce doručovacie reporty budú automaticky ukladané do databázy ako štandardné prichádzajúce správy. Tu je ako sa aktualizujú stavy doručenia:
- Tabuľka ozekimessageout a aktualizácie stavov: Ak odosielate správy z tabuľky "ozekimessageout", pole "status" automaticky sleduje stav doručenia každej správy. Toto pole sa dynamicky aktualizuje podľa nasledujúcich výsledkov:
- deliveredtonetwork: Správa úspešne odoslaná do siete.
- deliveredtohandset: Správa doručená na príjímateľov telefón.
- deliveryerror: Počas doručenia nastala chyba.
More information
- How to send SMS from C#
- Receive SMS in C#
- C# SMS API connect to send SMS
- C# SMS API - disconnect from SMS gateway
- C# SMS API - keepalive SMS connection alive
- C# SMS API - send a text message
- C# SMS API - SMS accepted for deliery event
- C# SMS API - SMS not accepted for delivery
- C# SMS API - submited
- C# SMS API - submit failed
- C# SMS API - delivery report successful
- C# SMS API - delivery failed report
- C# SMS API - alphanumeric sender ID
- C# SMS API how to use short code as sender ID
- C# SMS API text message class