Frage

Wie sende ich SMS direkt über SMPP? Mein Provider bietet eine SMPP-Schnittstelle SMS zu senden, wie verbinde ich es ihm? Gibt es Bibliotheken oder Beispiele, die mich zur Verwendung von SMPP zu senden erziehen? Vielleicht mit PHP? oder C #?

War es hilfreich?

Lösung

Es gibt das Logica SMPP Projekt , in Java geschrieben, das könnte Sie erziehen Der Grund. Other than that, gibt es eine Liste von Projekten auf der SMPP Wikipedia das könnte füllt einen ähnlichen Zweck.

Andere Tipps

Ich habe eine Client-Bibliothek von DevShock für ein paar Jahre, aber das Unternehmen scheint aus dem Blickfeld verschwunden.

Eine schnelle Google aufgedreht diese eine aber:

http://www.inetlab.ru/Products/ALT.SMS .SmppClient.aspx .

Es scheint einfach genug, und kommt mit C # und VB.Net Beispielen sowie einige anständige Dokumentation.

Ich hoffe, das hilft.

Ich denke, dass die beste Wahl jsmpp lib ist. Es hat gute Beispiele und viel niedriges Niveau, was hinter den Kulissen passiert und Sie können sich auf Ihrer Geschäftslogik konzentrieren.

jsmpp home site

Ich verwende eine Kannel für SMPP, connect kannel an einen smpp Server: link .

Das ist mein kannel.conf:

group = core
admin-port = 13000
smsbox-port = 13001
admin-password = bar
status-password = foo
log-file = "/var/log/kannel/bearerbox.log"
log-level = 0
box-deny-ip = "*.*.*.*"
box-allow-ip = "127.0.0.1"
access-log = "/var/log/kannel/smsaccess.log"

#SMSC CONNECTION
group=smsc
smsc=smpp
smsc-id=ID1
host=130.1.1.50
port=5016
transceiver-mode = 1
source-addr-ton = 1
source-addr-autodetect = 0
dest-addr-npi = 1
dest-addr-ton = 1
smsc-username = "user"
smsc-password= "pass"
system-type= "system"

#SMSBOX SETUP
group = smsbox
bearerbox-host = 127.0.0.1
bearerbox-port = 13001
sendsms-port = 13013
log-file = "/var/log/kannel/smsbox.log"
log-level = 0
access-log = "/var/log/kannel/smsaccess.log"

#SEND-SMS USERS
group = sendsms-user
username = user
password = pass

#SERVICES
group = sms-service
keyword = default
text = "Su mensaje ha sido procesado"
concatenation = true
catch-all = true
accept-x-kannel-headers = true
get-url = "http://localhost/kannel/receivesms.php?sender=%p&text=%b"

Send SMS:

curl "http://localhost:13013/cgi-bin/sendsms?user=xxxxxx&pass=yyyyy&to=56976808016&text=tes"

Sie können mit Net :: SMPP wenn Sie sind vertraut mit Perl oder Jasmin (Baujahr Python ). Diese sind ziemlich getestet und genutzt werden.

Ich würde vorschlagen, Kannel für SMPP aber ein paar Fragen.

Wer ist Ihr Aggregator? Sie sollten etwas Unterstützung für diese anbieten.

Ich weiß Openmarket tut SMPP sowie HTTP mit mehreren SDK Sprachen

war Devshock Komponente cool ... sie die Quelle freigegeben ich irgendwann erraten?

Ich glaube ich, dass nach wie vor haben.

aber Ihren eigenen smpp lib zu schreiben ist nicht so schwer ...

SMPP 3.4 Spezifikation ist ziemlich geradlinig.

Sie sind drei Dinge im Grunde tun:

  • Verwaltung von Socket-Verbindungen - .net-Stack macht, dass es sehr einfach und effizient
  • Senden PDU korrekt formatiert
  • Dekodieren empfangenen Bytes in PDU

Ola, können Sie mir eine E-Mail löschen, wenn Sie diese noch benötigen.

Prost.

EDIT Einige Anbieter, wie die, die ich verwenden (High Tech Infosystems) Ihnen auch ein HTTP-Gateway, über die Sie Ihren Traffic verfassen

Sie können, dass suchen als Alternative zu SMPP.

Ein Nachteil i mit SMPP erlebt haben gesehen, ist häufig trennt sich, Ihre Netzwerkverbindung wackelig ist.

Die HTTP-Gateway-Optionen ist nicht leiden und ist genauso schnell zu.

Sie können SMPPCli verwenden, die eine Befehlszeile SMPP SMS-Absender ist. Sie können es herunterladen von http://www.kaplansoft.com/download.html

Hier ist der einfache Beispielcode unter Verwendung von SMPP-Protokoll in C #.

Übrigens ardan Studio dll hat einige Ausgabe über Daten Codierung und Decodierung.

TON und NPI ist statisch in ardan Studio dll gegeben, so dass wir es dann änderten wir diesen Code verwendet, sonst funktioniert es, aber sie können nicht verschiedenen Zeichensatz verwenden.

using ArdanStudios.Common.SmppClient;
using ArdanStudios.Common.SmppClient.App;

public class SMPPClientService
{
    public static readonly object CounterLock = new object();
    private static bool isConnected = false;
    private ESMEManager SMPPConnectClient()
    {
        var smppServerPort = Library.GetAppSetting(SMPP_Server_Port).Split(';');
        string server = "xxx.xx.xx.xxx";
        short port = 6101;
        string shortLongCode = "MESSAGETİTLE";
        string systemId = "USername";
        string password = "password";
        DataCodings dataCoding = DataCodings.Latin1;    
        ESMEManager connectionManager = new ESMEManager("EricssonTest", shortLongCode, new ESMEManager.CONNECTION_EVENT_HANDLER(ConnectionEventHandler), null, null, null, null, new ESMEManager.LOG_EVENT_HANDLER(LogEventHandler), null);
        connectionManager.AddConnections(1, ConnectionModes.Transmitter, server, port, systemId, password, "Transmitter", dataCoding);
        return connectionManager;
    }
    private static void LogEventHandler(LogEventNotificationTypes logEventNotificationType, string logKey, string shortLongCode, string message)
    {                    
    }
    private static void ConnectionEventHandler(string logKey, ConnectionEventTypes connectionEventType, string message)
    {
        if (ConnectionEventTypes.Connected == connectionEventType)
        {
            lock (CounterLock)
            {
                isConnected = true;
            }
        }
    }
    private string Msisdn(string receiver)
    {
        var tmp = receiver.Replace("/", "")
            .Replace(" ", "")
            .Replace("-", "");

        if (tmp.Length == 10)
            return 90 + receiver;
        if (tmp.Length == 11 && tmp[0] == '0')
            return 9 + tmp;
        return tmp;
    }
    public int SMPPSendMessage(string messageText, string phoneNumber)
    {
        var result = 0;
        var pql = new PSmsSendLogs();
        try
        {
            using (var connectionManager = SMPPConnectClient())
            {
                phoneNumber = Msisdn(phoneNumber);
                DataCodings submitDataCoding = DataCodings.Latin1;
                DataCodings encodeDataCoding = DataCodings.Latin1;
                List<SubmitSm> submitSm = null;
                List<SubmitSmResp> submitSmResp = null;
                while (true)
                {
                    Thread.Sleep(1000);
                    if (isConnected)
                    {
*// put code here to wait until connection is being establish.İt works Async so it coulnt be connected when we called send method*
                        break;
                    }
                }
                result = connectionManager.SendMessageLarge(phoneNumber, null, Ton.Alphanumeric, Npi.Unknown, submitDataCoding, encodeDataCoding, messageText, out submitSm, out submitSmResp);     
            }
        }
        catch (Exception ex)
        {
            result = 0;
        }
        return result;
    }
    #endregion
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top