Question

Comment puis-je envoyer des SMS directement via SMPP? Mon fournisseur fournit une interface SMPP d'envoyer des SMS, comment puis-je le connecter à elle? Y a-t-il des bibliothèques ou des exemples qui peuvent me renseigner sur l'utilisation SMPP envoyer? Peut-être en utilisant PHP? ou C #?

Était-ce utile?

La solution

Il y a le projet Logica SMPP , écrit en Java, qui pourrait vous renseigner sur la question. En dehors de cela, il y a une liste de projets sur le SMPP Wikipedia qui pourrait remplir un but similaire.

Autres conseils

Je l'ai utilisé une bibliothèque cliente de DevShock pendant quelques années, mais la société semble avoir disparu de la vue.

Un rapide Google se place celui-ci si:

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

Semble assez simple, et est livré avec C # et VB.Net exemples, ainsi que de la documentation décent.

L'espoir qui aide.

Je pense que le meilleur est jsmpp lib choise. Il a de bons exemples et beaucoup de chose de bas niveau se produit dans les coulisses et vous pouvez vous concentrer sur votre logique métier.

site d'accueil de

J'utilise un Kannel pour SMPP, connectez kannel à un serveur SMPP: lien .

Ceci est mon 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"

Envoyer un SMS:

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

Vous pouvez utiliser Net :: SMPP si vous êtes familier avec Perl ou Jasmin (construit en Python ). Ceux-ci sont assez testés et utilisés.

Je suggère Kannel pour SMPP, mais quelques questions.

Qui est votre Aggregator? Ils devraient offrir une aide à cet effet.

Je sais que OpenMarket SMPP-t ainsi que HTTP avec plusieurs langues SDK

composante Devshock était cool ... ils ont sorti la source, je suppose à un moment donné?

Je crois avoir encore que.

mais écrire votre propre SMPP lib est pas difficile ...

SMPP 3.4 spec est assez simple.

Vous faites essentiellement 3 choses:

  • gérer les connexions socket - pile .net fait que très facile et efficace
  • envoi correctement formaté PDU
  • décoder les octets reçus dans PDU

Ola, vous pouvez me laisser un mail si vous avez encore besoin de cela.

Vive.

EDIT Certains fournisseurs, comme celui que j'utilise (InfoSystems High Tech) vous fournir également une passerelle http à travers lequel vous pouvez poster votre trafic

Vous pouvez demander que comme une alternative à SMPP.

Un inconvénient que j'ai vu avec l'expérience SMPP, est la fréquence des déconnexions est votre connexion réseau est fragile.

Les options de passerelle HTTP ne souffre pas de cela et est tout aussi rapide aussi.

Vous pouvez utiliser SMPPCli qui est une ligne de commande SMPP expéditeur SMS. Vous pouvez le télécharger à partir de http://www.kaplansoft.com/download.html

Voici le code exemple simple en utilisant le protocole SMPP en C #.

Par la dll studio ardan façon a une question sur les données encodage et le décodage.

et TONNE NPI est donnée statique dans dll studio ardan donc nous avons changé alors nous avons utilisé ce code sinon cela fonctionne, mais vous ne pouvez pas utiliser différents jeu de caractères.

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
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top