Feedback

C# - SMS versenden

Veröffentlicht von am 10/24/2012
(0 Bewertungen)
Der Anbieter Nexmo bietet eine REST basierte API, mit der weltweit SMS versendet werden können.
Der Versand einer SMS kostet im Moment innerhalb Deutschlands 5,5 Cent. Wer den Dienst nutzen möchte, kann sich kostenlos registrieren und erhält ein Startguthaben um den Service zu testen.

Der folgende Code zeigt wie die REST API genutzt werden kann. Error Handling usw. ist nicht implementiert.
Im Code wird die Klasse JavaScriptSerializer verwendet, welche das .NET Framework 4.5 erfordert!

Die Klasse kann wie folgt aufgerufen werden:
SmsResponse response = new SmsSender().SendSMS("491725555555", "Your Name", "USERNAME",  "PASSWORD", "Test SMS");


Das SmsResponse - Objekt, welches die Methode SendSMS zurück gibt, enthält:

- Den Preis, was die gesendete SMS gekostet hat
- Den Status (0 = erfolgreich versendet)
- Die Message Id
- Das verbleibende Guthaben bei Nexmo


URL zum Anbieter: http://www.nexmo.com
using System.Collections.Generic;
using System.Net;
using System.Web.Script.Serialization;

namespace SMS
{
    class SmsSender
    {
        public SmsResponse SendSMS(string number, string from, string username, string pasword, string text)
        {
            string uri = string.Format("http://rest.nexmo.com/sms/json?username={0}&password={1}&from={2}&to={3}&text={4}", username, pasword, from, number, text);
            var json = new WebClient().DownloadString(uri);
            return ParseSmsResponseJson(json);
        }

        private SmsResponse ParseSmsResponseJson(string json)
        {
            // hyphens are not allowed in in .NET var names
            json = json.Replace("message-count", "MessageCount");
            json = json.Replace("message-price", "MessagePrice");
            json = json.Replace("message-id", "MessageId");
            json = json.Replace("remaining-balance", "RemainingBalance");
            return new JavaScriptSerializer().Deserialize<SmsResponse>(json);
        }
    }

    public class Message
    {
        public string To { get; set; }
        public string Messageprice { get; set; }
        public string Status { get; set; }
        public string MessageId { get; set; }
        public string RemainingBalance { get; set; }
    }

    public class SmsResponse
    {
        public string Messagecount { get; set; }
        public List<Message> Messages { get; set; }
    }
}

Abgelegt unter SMS.

4 Kommentare zum Snippet

Dani schrieb am 10/25/2012:
Super Beitrag, funktioniert! Interessant wäre die Möglichkeit um auch SMS zu empfangen. Gruss
Dani schrieb am 10/26/2012:
Eine Frage dazu; wie kann ich das SmsResponse - Objekt lokal in eine Textdatei schreiben? Beispiel?
Koopakiller schrieb am 2/10/2013:
@Dani Du kannst Beispielsweise in die 1. Zeile den Messagecount schreiben und darunter für jedes Element in der Messages-Liste eine Zeile belegen.
Zum auslesen musst du nun nur alle Zeilen einlesen und wieder entsprechend zuweisen ;)
Mehr zur Serialisierung:
http://msdn.microsoft.com/de-de/library/vstudio/ms233843.aspx
Dani schrieb am 2/11/2013:
@Koopakiller, besten Dank für die Info. Es funktioniert.
 

Logge dich ein, um hier zu kommentieren!