【问题标题】:How to have Kannel automatically clear DLR with type=4如何让 Kannel 自动清除 type=4 的 DLR
【发布时间】:2013-11-05 21:05:18
【问题描述】:

我希望有人可以帮助我解决我遇到的关于“中间”类型(即 type=4)的 DLR 继续排队的问题。

我的理解是,在美国,成功且最终的 DLR(即 DELIVERED (1))很少见,而中间 DLR,例如“在 SMSC 上排队”。 ACCEPTD、REJECTD 更为常见,因为运营商代表其客户接受消息。

我们使用的 SMSC 专门发回 type=2 用于未传递的消息,type=4 DLR 用于成功传递给运营商的消息。我们在 Kannel 中使用内部 DLR 存储(不使用 mysql),问题是 type=4 的 DLR 不被认为是最终的,因此不会离开 DLR 队列。当我们返回 type=4 DLR 时,在 Bearerbox 日志中会看到以下消息。

2013-11-05 14:59:06 [15084] [6] DEBUG: DLR[internal]: Looking for DLR smsc=test, ts=4154168431, dst=<censored>, type=4
2013-11-05 14:59:06 [15084] [6] DEBUG: DLR[internal]: created DLR message for URL <http://localhost/dlr.php>
2013-11-05 14:59:06 [15084] [6] DEBUG: DLR[internal]: DLR not destroyed, still waiting for other delivery report

Kannel 似乎正在等待类型=1 或 2 的 DLR 进入,然后才将 DLR 从其队列中取出。

是否有一个 Kannel 设置可以使 type=4 DLR 被视为最终 DLR 并因此清除 DLR 的内存?我弄乱了 Kannel 中的 dlr-mask 设置,但我认为该属性不适合我的答案。

提前致谢,如果我能提供更多信息,请告诉我。

TL;DR:我如何让 Kannel 将 type=4 的 DLR 视为最终 DLR。

【问题讨论】:

    标签: smpp kannel


    【解决方案1】:

    如果不更改源代码,您将无法做到这一点。这些值在 Kannel 源代码中是硬编码的,不能通过配置值或 URL 参数更改为 sendsms 地址。

    至少您可以为获得 DLR 感到高兴。您可以为 DLR 使用某种外部存储,例如 MySQL,并在不再需要 DLR 表中的这些条目后从应用程序中删除它们。

    【讨论】:

    • 感谢您的回复。我担心是这样的。在网上看了一会儿后,我认为这不是一个简单的设置,但很高兴得到确认。因此,如果我将 DLR 存储移动到 mysql 数据库,您是否建议让我的 dlr-url 脚本从数据库中删除不再需要的 DLR?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 2010-09-21
    • 2014-08-19
    • 2013-01-11
    相关资源
    最近更新 更多