سؤال

كيف أرسل رسالة SMS مباشرة عبر SMPP؟ يوفر موفري واجهة SMPP لإرسال الرسائل القصيرة، كيف يمكنني توصيله به؟ هل هناك أي مكتبات أو أمثلة يمكنها تثقيفني باستخدام SMPP لإرسالها؟ ربما باستخدام php؟ مسخ#؟

هل كانت مفيدة؟

المحلول

هناك لوجيكا SMPP مشروع, ، مكتوبة في جافا، التي يمكن أن تثقيفك في هذه المسألة. بخلاف ذلك، هناك قائمة بالمشاريع على SMPP Wikipedia الصفحة يمكن أن تملأ غرض مماثل.

نصائح أخرى

لقد استخدمت مكتبة عميل من Devshock لبضع سنوات، ولكن يبدو أن الشركة قد اختفت من الرأي.

تحولت جوجل سريعة هذا واحد على الرغم من:

http://www.inetlab.ru/products/alt.sms.smppclient.aspx..

يبدو واضحا بما فيه الكفاية، ويأتي مع أمثلة C # و VB.NET بالإضافة إلى بعض الوثائق الكريمة.

امل ان يساعد.

أعتقد أن أفضل Choise هو JSMPP LIB. لديها أمثلة جيدة والعديد من الأشياء المنخفضة يحدث وراء الكواليس ويمكنك التركيز على منطق عملك.

JSMPP الصفحة الرئيسية الموقع

يمكنني استخدام Kannel for SMPP، قم بتوصيل Kannel بخادم SMPP: حلقة الوصل.

هذا هو 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"

يمكنك استخدام نت :: SMPP. إذا كنت على دراية بات أو ياسمين (بنيت في بيثون). تلك هي حقا اختبارها واستخدامها.

أود أن أقترح كانيل ل SMPP ولكن بضعة أسئلة.

من هو مجمعك؟ يجب أن يقدمون بعض المساعدة لهذا.

أنا أعرف السوق المفتوح هل SMPP وكذلك HTTP مع لغات SDK متعددة

كان مكون devshock باردا ... أصدروا المصدر الذي أعتقده في مرحلة ما؟

أعتقد أنني لا يزال لدي ذلك.

لكن كتابة SMPP Lib الخاص بك ليس بالأمر الصعب ...

SMPP 3.4 المواصفات مستقيم إلى الأمام إلى حد ما.

أنت تفعل أساسا 3 أشياء:

  • إدارة اتصالات المقبس - كومة .NET يجعل ذلك سهلة للغاية وفعالة
  • إرسال PDU المنسق بشكل صحيح
  • فك التشفير تلقى بايت في PDU

Ola، يمكنك أن تسقط لي رسالة إذا كنت لا تزال بحاجة إلى هذا.

هتافات.

تحرير بعض المزود، مثل واحد أستخدمه (Infosystems عالية التقنية) يوفر لك أيضا بوابة HTTP التي يمكنك من خلالها نشر حركة المرور الخاصة بك

قد تسعى إلى ذلك كبديل ل SMPP.

الجانب الهبوطي الذي رأيته من ذوي الخبرة مع SMPP، هو قطع اتصال متكرر هو اتصال الشبكة الخاص بك هو هش.

لا تعاني خيارات بوابة HTTP من هذا وسريع أيضا.

يمكنك استخدام SMPPCLI وهو سطر الأوامر SMPP SMS المرسل. يمكنك تنزيله من http://www.kaplansoft.com/download.html.

فيما يلي رمز المثال البسيط باستخدام بروتوكول SMPP في C #.

بالمناسبة لدى Ardan Studio DLL بعض القضية حول ترميز البيانات وفك التشفير.

يتم منح TON و NPİ ثابتة في Ardan Studio 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