怎么做我发送短信,直接通过HTTP?我的供应商提供了一个菲律界面发送短信,我怎么连接到吗?是否有任何图书馆或实例,可以教我,在使用HTTP发送?也许使用PHP?或C#?

有帮助吗?

解决方案

还有的逻SMPP项目,用Java编写的,这可能对你的教育此事。除此之外,还有的项目在 SMPP维基百科页面列表,可以填充类似的目的。

其他提示

我用从DevShock客户端库了几年,但该公司似乎已经从视线中消失。

一个快速谷歌虽然打开了这一个:

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

似乎足够简单的,并带有C#既和VB.Net实例以及一些体面的文件。

希望有所帮助。

我认为最好的choise是jsmpp库。它具有很好的例子,许多低级别的事情发生在幕后,你可以专注于您的业务逻辑。

jsmpp家网站

我用一个Kannel于HTTP,连接kannel到菲律服务器: 链接.

这是我的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"

发送短信:

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

您可以使用的Net ::如果您熟悉的 Perl的的/ strong>或茉莉(建于的的Python )。那些是相当测试和使用。

我会建议的Kannel 以SMPP,但几个问题。

谁是你的聚合?他们应该为此提供一些帮助。

我知道 OpenMarket 确实SMPP以及HTTP与多SDK语言

Devshock组成部分是凉爽的...他们释放的来源,我想在某些时候?

我相信我还有这个。

但是写你自己的菲律lib是不是很难...

HTTP3.4规范是相当直截了当。

你基本上做了3件事情:

  • 管理座连接-.净堆使,非常容易和 有效的
  • 发送正确的格式PDU
  • 解码接收字节到PDU

法律事务厅,你可以给我发邮件如果你还需要这个。

欢呼声。

编辑 一些提供商提供,就像一个我用(高科技InfoSystems)还提供你一个http网关,通过其可能后你的业务

你可以寻求,作为一种替代菲律.

一个缺点我已经看到经验丰富的与菲律,是频繁的切断是你的网络连接不稳定。

HTTP关选择不遭受这只是因为快速。

可以使用SMPPCli其是命令行SMPP SMS发送器。 您可以从 http://www.kaplansoft.com/download.html

下面是使用SMPP协议C#中的简单的例子代码。

顺便说与Ardan工作室DLL具有大约数据编码和解码的一些问题。

TON和NPI被赋予在与Ardan工作室DLL静态的,所以我们改变了它,然后我们使用这个代码,否则它的工作原理,但你不能使用不同的字符集。

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
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top