C# 从SMSC InteLab SMPP接收传递消息

C# 从SMSC InteLab SMPP接收传递消息,c#,.net,sms,smpp,C#,.net,Sms,Smpp,这几周我试过了,但仍然不知道如何在从SMSC发送短信后获得传递信息。我使用了Intelab SMPP并开发了一个sms系统。我使用了以下代码来获取交货收据,并且我使用MessageId成功获取了收据 public static IList<SubmitSmResp> ConnectToInet(string sourceAddress, string DestinationAddress, string Message) { try {

这几周我试过了,但仍然不知道如何在从SMSC发送短信后获得传递信息。我使用了Intelab SMPP并开发了一个sms系统。我使用了以下代码来获取交货收据,并且我使用MessageId成功获取了收据

public static IList<SubmitSmResp> ConnectToInet(string sourceAddress, string DestinationAddress, string Message)
    {
        try
        {
            SmppClient client = new SmppClient();
            IList<SubmitSmResp> respList = null;
            client.Connect(#SMSSeverIP, #PORT);

            if (client.Status == Inetlab.SMPP.Common.ConnectionStatus.Open)
            {
                client.Bind("USERNAME", "Password", Inetlab.SMPP.Common.ConnectionMode.Transceiver);

                if (client.Status == Inetlab.SMPP.Common.ConnectionStatus.Bound)
                {
                    client.AddrTon = 5;

                    respList = client.Submit(
                        SMS.ForSubmit().From(sourceAddress).To(DestinationAddress).Text(Message).DeliveryReceipt().Coding(DataCodings.Default)
                        );


                    //client.Submit(SMS.ForSubmit().Text(Message).From(sourceAddress).To(DestinationAddress).DeliveryReceipt().Coding(DataCodings.Default));

                    client.evDeliverSm += new Inetlab.SMPP.Common.DeliverSmEventHandler(OnDeliverSm);




                    client.UnBind();
                }

                client.Disconnect();
            }
            return respList;
        }
        catch (Exception ex)
        {
            throw ex;
        }


    }

我已经存储了从每个SMSC响应收到的MessageId,我需要使用它来获取每个消息的相应传递报告,其中包含传递状态、传递日期和提交日期。有人能帮我弄清楚吗。谢谢你的帮助

正如我所看到的,您在设置SMPP传递处理程序后立即解除绑定,这可能是您不这么做的原因;I don’我没有收到DR.试着等一段时间再解开。我对你的想法有所改进,但仍然没有得到结果。我只收到SMSC发出的messageId值,状态为NONE。没有提交日期和完成日期。我需要使用存储的messageId在发送短消息一段时间后获取传递消息。我正在使用windows服务访问它,无法在windows服务内实现evDeliverSm事件。你知道吗?顺便说一下,感谢您的回复。请检查DR消息(短消息或有效负载消息),通常SMSC会将状态和时间放在该字段中,否则SMSC可能无法正确配置应用程序DR交付。在此之前,请启动Wireshark,查看您的DR PDU是否具有所需的所有字段。我的SMSC已正确配置,但我仍能找出问题所在。虽然我还没有解除客户机的绑定,但OnDeliverSm方法没有启动。我的代码有错误吗?当我调试代码OnDeliverSm方法时,从未调用过。什么是提交状态(resp),它成功了吗?交付注册事件的响应是什么?你检查过wireshark看到DeliverSM包了吗?您使用哪种SMSC?
private static void OnDeliverSm(object sender, DeliverSm data)
    {
        string messageText = data.Client.GetMessageText(data.UserDataPdu.ShortMessage, data.DataCoding);
    }