отправить смс через SMPP - PullRequest
5 голосов
/ 12 марта 2010

Как отправить SMS напрямую через SMPP? Мой провайдер предоставляет интерфейс SMPP для отправки SMS, как мне подключить его к нему? Существуют ли какие-либо библиотеки или примеры, которые могут научить меня использовать SMPP для отправки? Возможно с помощью PHP? или C #?

Ответы [ 9 ]

4 голосов
/ 12 марта 2010

Существует проект Logica SMPP , написанный на Java, который может рассказать вам об этом. Кроме этого, на странице SMPP Wikipedia есть список проектов, которые могли бы выполнить аналогичную задачу.

2 голосов
/ 22 октября 2012

Я думаю, что лучший выбор - это jsmpp lib. У него есть хорошие примеры, и многие закулисные вещи происходят за кулисами, и вы можете сосредоточиться на своей бизнес-логике.

Домашний сайт jsmpp

2 голосов
/ 14 марта 2010

Я использовал клиентскую библиотеку DevShock в течение нескольких лет, но компания, похоже, исчезла из виду.

Быстрый Google обнаружил это, хотя:

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

Кажется достаточно простым и поставляется с примерами как на C #, так и на VB.Net, а также с приличной документацией.

Надеюсь, это поможет.

1 голос
/ 13 ноября 2015

Вы можете использовать Net :: SMPP , если вы знакомы с Perl или Jasmin (встроенный Python ). Они довольно проверены и используются.

1 голос
/ 12 марта 2015

Я использую Kannel для SMPP, подключаю kannel к серверу smpp: link .

Это мой 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"

Отправьте SMS:

curl "http://localhost:13013/cgi-bin/sendsms?user=xxxxxx&pass=yyyyy&to=56976808016&text=tes"
0 голосов
/ 11 сентября 2017

Вот простой пример кода с использованием протокола smpp в C #.

Кстати, у ardan studio dll есть некоторые проблемы с кодированием и декодированием данных.

TON и NPİ задаются статическими в dll ardan studio, поэтому мы изменили его, затем использовали этот код, иначе он работает, но вы не можете использовать другой набор символов.

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
}
0 голосов
/ 02 апреля 2015

Вы можете использовать SMPPCli, который является отправителем SMS SMPP из командной строки. Вы можете скачать его с http://www.kaplansoft.com/download.html

0 голосов
/ 12 апреля 2014

Компонент Devshock был крут ... они выпустили источник, я думаю, в какой-то момент?

Я верю, что у меня все еще есть.

но написать свой собственный smpp lib не так уж и сложно ...

Спецификация SMPP 3.4 довольно проста.

Вы в основном делаете 3 вещи:

  • управление сокетными соединениями - стек .net делает это очень простым и эффективный
  • отправка правильно отформатированного PDU
  • декодирование принятых байтов в PDU

Ола, можешь оставить мне письмо, если оно тебе все еще нужно.

Приветствие.

EDIT Некоторые провайдеры, такие как тот, который я использую (High Tech InfoSystems), также предоставляют вам http-шлюз, через который вы можете отправлять свой трафик

Вы можете искать это как альтернативу SMPP.

Единственным недостатком, с которым я столкнулся при работе с SMPP, является частое отключение, когда ваше сетевое соединение шатко.

Опции HTTP-шлюза от этого не страдают и также бывают быстрыми.

0 голосов
/ 25 марта 2010

Я бы предложил Канал для SMPP, но пару вопросов.

Кто твой агрегатор? Они должны предложить некоторую помощь для этого.

Я знаю, OpenMarket поддерживает SMPP, а также HTTP с несколькими языками SDK

...