我希望有人可以帮助我解决我遇到的关于“中间”类型(即 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。