【问题标题】:How to pass unique parameter to Inetlab client, like database Id?如何将唯一参数传递给 Inetlab 客户端,例如数据库 ID?
【发布时间】:2019-12-22 11:38:28
【问题描述】:

我在数据库中有一些短信,我想在所有任务完成后更新它们的状态, 我不想在每次提交时使用task.Resultawait,因为它的工作速度非常慢。我需要将 sms Id 传递给客户并在响应时获取 Id。我使用 Inetlab。 有什么建议吗?

            var messagesNumber = 30;
            List<Task<SubmitSmResp[]>> tasks = new List<Task<SubmitSmResp[]>>();

            for (int i = 0; i < messagesNumber; i++)
            {
                tasks.Add(client.SubmitAsync(
                          SMS.ForSubmit()
                           .AddUserDataHeader(new Inetlab.SMPP.Headers.UserDataHeader(1, new byte[2]))
                              .From("test")
                              .To("2323")
                              .Coding(DataCodings.UCS2)
                              .Text($"{i}test")));
            }

            await Task.WhenAll(tasks);
            int k = 0; var thr = 0;
            foreach (var t in tasks)
            {
                var res = (SubmitSmResp[])t.Result;
                var ss = res.Select(x => x.Header.Sequence);
                if (res.All(x => x.Header.Status == CommandStatus.ESME_ROK))
                {
                    //want to update this sms in database,I need sms Id
                }
                if (res.All(x => x.Header.Status == CommandStatus.ESME_RTHROTTLED))
                {
                    //want to update this sms in database,I need sms Id
                    thr++;
                }
            }

【问题讨论】:

  • 请不要将代码作为图片发布
  • 我通过代码改变了图像

标签: c# .net .net-core smpp inetlab.smpp


【解决方案1】:

在这种情况下,为了在传输和接收时保留 ID,您可以做的是使用参数。您可以在准备发送短信时附加参数。请看官方文档:https://docs.inetlab.com/smpp/v2/api/Inetlab.SMPP.Parameters.TLV.html

【讨论】:

    【解决方案2】:

    GUID 可能是一种选择。您可以用作唯一标识符。

    【讨论】:

    • 这是评论而非答案。
    猜你喜欢
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多