Как установить submit sm, чтобы позволить клиенту использовать его свойства в jamaa smpp для отправки сообщения? - PullRequest
2 голосов
/ 28 мая 2019

Я использую jamaa-smpp для отправки сообщения. Это работает, но идентификатор отправителя был 00000 вместо имени, которое я хотел. Я добавил TON и NPI для включения буквенно-цифрового отправителя в поле отправки sm, как показано в коде ниже, но оно по-прежнему равно 00000. Я не могу связать sm с клиентом при отправке сообщения.

 public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void ss_Click(object sender, EventArgs e)
        {


            var sm = new SubmitSm();


            sm.SourceAddress.Ton = JamaaTech.Smpp.Net.Lib.TypeOfNumber.Aphanumeric;
            sm.SourceAddress.Npi = JamaaTech.Smpp.Net.Lib.NumberingPlanIndicator.ISDN;

            sm.DestinationAddress.Ton = JamaaTech.Smpp.Net.Lib.TypeOfNumber.International;
            sm.DestinationAddress.Npi = JamaaTech.Smpp.Net.Lib.NumberingPlanIndicator.ISDN;

            TextMessage msg = new TextMessage();

            msg.DestinationAddress ="96565565655556"; //Receipient number
            msg.SourceAddress = "NYCOMPANYNAME"; //Originating number

            msg.Text = "text text text text";
            msg.RegisterDeliveryNotification = true; //I want delivery notification for this message


            SmppClient client = GetSmppClient();

            client.BeginSendMessage(msg, SendMessageCompleteCallback, client);
        }


        private void client_ConnectionStateChanged(object sender, ConnectionStateChangedEventArgs e)
        {
            switch (e.CurrentState)
            {
                case SmppConnectionState.Closed:
                    //Connection to the remote server is lost
                    //Do something here

                    e.ReconnectInteval = 60000; //Try to reconnect after 1 min
                    break;
                case SmppConnectionState.Connected:
                    //A successful connection has been established
                    break;
                case SmppConnectionState.Connecting:
                    //A connection attemp is still on progress
                    break;
            }
        }
        private SmppClient GetSmppClient()
        {
            SmppClient client = new SmppClient();
            System.Threading.Thread.Sleep(9000);
            SmppConnectionProperties properties = client.Properties;
            properties.SystemID = "id";
            properties.Password = "pass";
            properties.Port = xxxxx; //IP port to use
            properties.Host = "x.x.x.x"; //SMSC host name or IP Address
            properties.SystemType = "SMPP";
            properties.DefaultServiceType = "SMPP";
            client.AutoReconnectDelay = 3000;
            client.KeepAliveInterval = 15000;
            client.Start();
            System.Threading.Thread.Sleep(9000);
            return client;
        }

        private static void SendMessageCompleteCallback(IAsyncResult result)
        {
            try
            {
                SmppClient client = (SmppClient)result.AsyncState;
                client.EndSendMessage(result);
            }
            catch (Exception e)
            {

            }
        }

    }

Я ожидаю, что имя отправителя будет MYCOMPANYNAME вместо 00000000.

Ответы [ 2 ]

1 голос
/ 18 июня 2019

вам нужно установить «NPI» на неизвестный, а «ton» на буквенно-цифровой и

client.Properties.SourceAddress = "COMPANYNAME";  
client.SourceAddress.Ton = JamaaTech.Smpp.Net.Lib.TypeOfNumber.Alphanumeric;
client.SourceAddress.Npi=JamaaTech.Smpp.Net.Lib.NumberingPlanIndicator.Unknown;

not msg.SourceAddress = "MYCOMPANYNAME";

надеюсь, что это поможет. Пожалуйста, отметьте, если вы найдете этот ответ полезным.

0 голосов
/ 23 июня 2019

обновленный код:

{

 protected void send_Click(object sender, EventArgs e)
    {
        var sm = new SubmitSm();
        sm.SourceAddress.Npi = JamaaTech.Smpp.Net.Lib.NumberingPlanIndicator.Unknown;
        sm.SourceAddress.Ton = JamaaTech.Smpp.Net.Lib.TypeOfNumber.Aphanumeric
        sm.DestinationAddress.Ton = JamaaTech.Smpp.Net.Lib.TypeOfNumber.International;
        sm.DestinationAddress.Npi = JamaaTech.Smpp.Net.Lib.NumberingPlanIndicator.Unknown;
        TextMessage msg = new TextMessage();
        msg.DestinationAddress ="123456789"; //Receipient number
        msg.Text = "test test";
        msg.RegisterDeliveryNotification = true; //I want delivery notification for this message
        SmppClient client = GetSmppClient();
        client.BeginSendMessage(msg, SendMessageCompleteCallback, client);
    }


    private void client_ConnectionStateChanged(object sender, ConnectionStateChangedEventArgs e)
    {
        switch (e.CurrentState)
        {
            case SmppConnectionState.Closed:
                e.ReconnectInteval = 60000; //Try to reconnect after 1 min
                break;
            case SmppConnectionState.Connected:
                break;
            case SmppConnectionState.Connecting:
                break;
        }
    }
    private SmppClient GetSmppClient()
    {
        SmppClient client = new SmppClient();
        System.Threading.Thread.Sleep(9000);
        SmppConnectionProperties properties = client.Properties;
        properties.SystemID = "xxxxxx";
        properties.Password = "xxxxxx";
        properties.Port = 10000; //IP port to use
        properties.Host = "xx.xx.xx.xx"; //SMSC host name or IP Address
        properties.SystemType = "SMPP";
        properties.DefaultServiceType = "SMPP";
        properties.SourceAddress = "MYCOMPANY";
        properties.AddressNpi = NumberingPlanIndicator.Unknown;
        properties.AddressTon = TypeOfNumber.Aphanumeric;
        properties.DefaultEncoding = DataCoding.Latin1;
        client.AutoReconnectDelay = 3000;
        client.KeepAliveInterval = 15000;
        client.Start();
        System.Threading.Thread.Sleep(9000);
        return client;
    }

    private static void SendMessageCompleteCallback(IAsyncResult result)
    {
        try
        {
            SmppClient client = (SmppClient)result.AsyncState;
            client.EndSendMessage(result);
        }
        catch (Exception e)
        {

        }
    }

}

...