Jak odeslat SMS z C#.Net

Pro odesílání SMS z C#.Net máte několik možností. Můžete použít C# SMS API knihovnu od Ozeki, nebo můžete použít HTTP požadavky. Pro odeslání textové zprávy v C#.Net záleží nejlepší volba na typu projektu, který používáte. Pokud píšete kód pro webové požadavky, jako je C# na ASP stránce, měli byste zvolit HTTP požadavky. Pokud vytváříte desktopovou aplikaci, windows službu nebo mobilní aplikaci pro Android či iPhone, je nejlepší použít C# SMS API knihovnu. Tento návod (Obrázek 1) se zaměřuje pouze na odesílání SMS. Pokud potřebujete jak odesílání, tak příjem, můžete začít čtením návodu Nejlepší C# SMS API v roce 2025.

Jak odeslat SMS z C#.Net
Obrázek 1 - Jak odeslat SMS z C#.Net

Stáhnout C# SMS API knihovnu (zdarma zdrojový kód)

Funkční příklad C# SMS API můžete stáhnout z následující URL. Tento kód je poskytován zdarma a můžete jej volně upravovat a redistribuovat.

Stáhnout: OzekiConsole.zip (51 Kb)

Jak odeslat SMS z C# desktopové aplikace

Odeslání textové zprávy z desktopové aplikace (nebo konzolové aplikace či Windows služby) má jiné požadavky než odeslání SMS z webové stránky. Desktopová aplikace běží po delší dobu (několik minut, dní nebo dokonce týdnů). V tomto případě je výhodné udržovat trvalé připojení k SMS bráně. Používání jednorázových webových požadavků není pro tyto aplikace vhodné. Největší výhodou trvalého připojení je, že získáte informace o událostech doručení zpráv, jako jsou zprávy o odeslání, doručení a selhání doručení SMS.

Pro odesílání SMS z C# desktopové aplikace nejprve použijte poskytnutý příklad (jak vidíte na Obrázku 2):

  1. Připojte se k Ozeki SMS bráně pomocí uživatelského jména a hesla ozx, které jste vytvořili v uživatelském rozhraní SMS brány. Pro připojení použijte příkaz "connect hostname:port username password".
  2. Odešlete textovou zprávu. To lze provést napsáním "send telefonníčíslo text zprávy", pokud používáte příklad konzolové aplikace pro odesílání.
  3. Čekejte na zprávy o odeslání a doručení SMS. Můžete si všimnout, že tyto zprávy se zobrazují na obrazovce a obsahují stejné ID zprávy, které bylo vráceno při odeslání SMS.

Příklad konzolové aplikace napsané v C#.Net. Zdrojový kód této konzolové aplikace je k dispozici na stránce C# SMS API se zdrojovým kódem.

příklady csharp sms api
Obrázek 2 - Jak odeslat SMS z C# SMS API

Výše uvedený příklad ukazuje potřebné kroky. Můžete vidět, že nejprve je navázáno trvalé připojení k SMS bráně, a poté je zpráva odeslána. Nakonec vidíte zprávu o přijetí a odeslání zprávy.

Pro odesílání SMS z C# použijte následující 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 k odeslání z C#"});

Když nastavíte vlastnost Client.Autoconnect na true, zajistíte, že se klient znovu připojí k SMS bráně, i když dojde k dočasnému přerušení síťového připojení nebo restartu SMS brány.

Pro příjem zpráv o doručení SMS v C# je třeba se přihlásit k událostem:

  • Client.OnMessageAcceptedForDelivery += Client_OnMessageAcceptedForDelivery;
  • Client.OnMessageNotAcceptedForDelivery += Client_OnMessageNotAcceptedForDelivery;
  • Client.OnMessageSubmitSuccess += Client_OnMessageSubmitSuccess;
  • Client.OnMessageSubmitFailed += Client_OnMessageSubmitFailed;
  • Client.OnMessageDeliverySuccess += Client_OnMessageDeliverySuccess;
  • Client.OnMessageDeliveryFailed += Client_OnMessageDeliveryFailed;

Tyto události budou spuštěny, když SMS brána odešle příslušné zprávy přes trvalé připojení, které jsme vytvořili pomocí connect. Toto je největší výhoda použití trvalého připojení. Získáte okamžitá oznámení o těchto událostech souvisejících s doručením SMS. Taková oznámení je obtížné získat, pokud používáte HTTP SMS API. Na druhou stranu jsou tyto informace klíčové pro jakýkoli podnik a musíte je zpracovat, abyste vytvořili kvalitní SMS software.

Jaké typy zpráv o doručení SMS poskytuje C# SMS API?

C# SMS API vrací pět typů zpráv o doručení SMS. Ty jsou prezentovány jako události v C#. Jsou to událost přijetí SMS, událost nepřijetí SMS, událost úspěšného odeslání SMS, událost neúspěšného odeslání SMS, událost úspěšného doručení SMS a událost neúspěšného doručení SMS.

Událost přijetí SMS: Událost přijetí SMS je vyvolána, když Ozeki SMS gateway přijme SMS k doručení a zařadí ji do odchozí pošty uživatelského účtu.

Událost nepřijetí SMS: Událost nepřijetí SMS je vyvolána, pokud Ozeki SMS gateway nepřijme SMS k doručení. To se může stát například, pokud uživateli dojdou SMS kredity, nebo je disk plný, nebo dojde k jiné chybě v SMS gateway.

Událost úspěšného odeslání SMS: Událost úspěšného odeslání SMS je spuštěna, když je SMS úspěšně doručena do mobilní sítě. Mobilní síť vrátí zprávu o odeslání SMS a tato zpráva je předána klientovi C# SMS API přes navázané spojení. Událost úspěšného odeslání SMS je vyvolána například, když je SMS odeslána pomocí GSM modem pool, který je připojen k serveru datovým kabelem, událost je spuštěna, když modem vrátí 1bajtový referenční kód úspěšného odeslání k příkazu AT+CMGS.

Událost neúspěšného odeslání SMS: Událost neúspěšného odeslání SMS nastane, pokud SMS nemohla být z jakéhokoli důvodu odeslána do mobilní sítě Ozeki SMS Gateway. Například pokud je internetové připojení používané GSM modem pro doručení SMS a datový kabel mezi modemem a počítačem je odpojen nebo poškozen. Ve všech těchto případech budete mít v Event Args připojených k této události chybovou zprávu, která vám dá představu, co by mohlo být důvodem neúspěšného odeslání SMS.

Událost úspěšného doručení SMS: Událost úspěšného doručení SMS je volána, když je SMS úspěšně doručena do příjemcova telefonu. V tomto případě mobilní síť vrátí SMS gateway zprávu o doručení. Zpráva o doručení obsahuje časové razítko doručení a úspěšný stavový kód doručení. SMS gateway předá tyto informace C# SMS API. Když obdržíte událost zprávy o doručení SMS v C#, můžete si být jisti, že vaše SMS byla přijata příjemcem.

Událost neúspěšného doručení SMS: Zpráva o doručení SMS v C# může být zpracována pomocí události neúspěšného doručení SMS, pokud zpráva o doručení obsahuje neúspěšný stavový kód doručení. To se může stát například, pokud mobilní telefon, na který byla SMS odeslána, není nikdy zapnut. Tato událost nastává zřídka, protože většina mobilních sítí nevrací negativní zprávy o doručení.

Odesílání SMS z C# SMS API (volně použitelný zdrojový kód)

Pro odesílání SMS z C# použijte následující zdrojový kód. Tento zdrojový kód lze volně upravovat a redistribuovat. Poznámka: Můžete také volně upravovat a redistribuovat zdrojový kód knihovny 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("Úspěšně připojeno.");
            
            var msg = new OzxMessage();
            msg.ToAddress = recipient;
            msg.Text = message;

            Console.WriteLine("Odesílání zprávy. ID: "+msg.ID);
            Client.Send(msg);
        }

        static void Client_OnDisconnected(object sender, OzxArgs< string > e)
        {
            Console.WriteLine("Spojení ukončeno. Důvod: " + e.Item.ToString());
        }

        static void Client_OnMessageAcceptedForDelivery(object sender, OzxArgs< string > e)
        {
            Console.WriteLine("Zpráva přijata k doručení. ID: " + e.Item.ToString());
        }

        static void Client_OnMessageNotAcceptedForDelivery(object sender, OzxArgs< string, string > e)
        {
            Console.WriteLine("Zpráva odmítnuta. ID: " + e.Item1.ToString()+" Důvod: "+e.Item2);
        }

        static void Client_OnMessageSubmitSuccess(object sender, OzxArgs< string, DateTime > e)
        {
            Console.WriteLine("Zpráva odeslána. ID: "+e.Item1+" Datum: "+e.Item2);
        }

        static void Client_OnMessageSubmitFailed(object sender, OzxArgs< string, DateTime, string > e)
        {
            Console.WriteLine("Odeslání zprávy selhalo. ID: " + e.Item1 + " Datum: " + e.Item2+" Důvod: "+e.Item3);
        }

        static void Client_OnMessageDeliverySuccess(object sender, OzxArgs< string, DateTime > e)
        {
            Console.WriteLine("Zpráva doručena. ID: " + e.Item1 + " Datum: " + e.Item2);
        }

        static void Client_OnMessageDeliveryFailed(object sender, OzxArgs< string, DateTime, string > e)
        {
            Console.WriteLine("Doručení zprávy selhalo. ID: " + e.Item1 + " Datum: " + e.Item2 + " Důvod: " + e.Item3);
        }

        static void Client_OnMessageViewed(object sender, OzxArgs< string, DateTime > e)
        {
            Console.WriteLine("Zpráva zobrazena. ID: " + e.Item1 + " Datum: " + e.Item2);
        }
    }
}

Jak otestovat odesílání SMS v C#

Pro testování odesílání SMS v C# SMS API máte dvě možnosti: Můžete použít vestavěné testovací spojení SMS nebo můžete nastavit dvě SMS brány pro realističtější testovací prostředí. Pokud nastavíte dvě SMS brány, nejprve je třeba nakonfigurovat první SMS bránu jako SMPP simulátor. Tato SMS brána bude poskytovat službu SMPP serveru druhé SMS bráně. Bude fungovat stejným způsobem jako SMSC mobilního operátora. Druhá SMS brána se připojí k první pomocí SMPP klienta a bude poskytovat službu C# SMS API vaší C# SMS aplikaci.

Často kladené otázky

Je doručovací hlášení (onMessageDeliveryFailed) získáváno pro každý neúspěšný pokus nebo pouze po dosažení maximálního počtu pokusů?

Zpráva zůstává ve stavu "čekající" až do vyčerpání maximálního počtu pokusů o doručení.

Je možné ukládat příchozí SMS doručovací hlášení do SQL?

Pro příjem doručovacích hlášení pro vaše SMS zprávy přejděte do nabídky "Upravit" a vyberte "Předvolby serveru." V záložce "Pokročilé" najděte zaškrtávací políčko s názvem "Kopírovat doručovací hlášení pro uživatele" a ujistěte se, že je zaškrtnuto. Pokud máte nakonfigurováno SQL pro SMS bránu, příchozí doručovací hlášení budou automaticky ukládána do databáze jako standardní příchozí zprávy. Zde je uvedeno, jak se aktualizují stavy doručení:

  • Tabulka ozekimessageout a aktualizace stavů: Pokud odesíláte zprávy z tabulky "ozekimessageout", pole "status" automaticky sleduje stav doručení každé zprávy. Toto pole se dynamicky aktualizuje, aby odráželo následující výsledky:
  • deliveredtonetwork: Zpráva úspěšně odeslána do sítě.
  • deliveredtohandset: Zpráva doručena na telefon příjemce.
  • deliveryerror: Při doručení došlo k chybě.
Tato funkce poskytuje pohodlný způsob sledování stavu doručení přímo v databázi.

More information