1

我希望有人可以帮助我解决我遇到的关于“中间”类型(即 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 时,将在承载箱日志中看到以下消息。

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。

4

1 回答 1

0

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

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

于 2013-11-06T01:06:43.343 回答