![收到了 DLR,但找不到消息或对某些消息不感兴趣 - kannel](https://linux22.com/image/613615/%E6%94%B6%E5%88%B0%E4%BA%86%20DLR%EF%BC%8C%E4%BD%86%E6%89%BE%E4%B8%8D%E5%88%B0%E6%B6%88%E6%81%AF%E6%88%96%E5%AF%B9%E6%9F%90%E4%BA%9B%E6%B6%88%E6%81%AF%E4%B8%8D%E6%84%9F%E5%85%B4%E8%B6%A3%20-%20kannel.png)
我已经使用 smsc 配置了 kannel。问题是我收到了某些消息的送达报告,而对于其他一些消息,我收到了:
ERROR: SMPP[XXX]: got DLR but could not find message or was not interested in it id<2691146294> dst<98XXXXXXXXXX>, type<1>
这是我的配置:
group = core
admin-port = 13000
admin-password = 123456
status-password = 654321
admin-deny-ip = "*.*.*.*"
admin-allow-ip = "127.0.0.1"
smsbox-port = 13001
box-deny-ip = "*.*.*.*"
box-allow-ip = "127.0.0.1"
log-file = "/var/log/kannel/bearerbox.log"
log-level = 1
store-type = spool
store-location = "/var/lib/kannel"
store-dump-freq = 60
sms-incoming-queue-limit = 10000000
sms-outgoing-queue-limit = 10000000
sms-resend-freq = 10
sms-resend-retry = -1
access-log = "/var/log/kannel/bearerbox-access.log"
group = smsc
smsc = smpp
smsc-id = my-smsc
host = XXX.XXX.XXX.XXX
port = 5019
receive-port = 5019
system-type = VMA
smsc-username = XXX
smsc-password = XXX
throughput = 1
reconnect-delay = 10
msg-id-type = 0x01
group = smsbox
smsbox-id = my-smsbox
bearerbox-host = 127.0.0.1
sendsms-port = 13013
log-file = "/var/log/kannel/smsbox.log"
log-level = 1
group = smsbox-route
smsbox-id = my-smsbox
smsc-id = my-smsc
group = sendsms-user
username = username
password = password
concatenation = true
max-messages = 100
我发送的每条消息都dlr-mask
设置为 3,dlr-url
如下所示:
http://10.0.0.1/delivery?id=12345687&type=%d"
id
消息 ID 是否在数据库中。有人可以帮忙吗?
答案1
从http://www.kannel.org/pipermail/users/2011-July/016183.html
“我不是 Kannel 大师,但我已经多次见过这种情况,可能至少有 4 个原因导致:
(1)您通过具有不同 SMSC ID 的不同连接发送了一条消息,回调 DLR 将不会获得匹配,例如,传输连接使用与接收连接不同的 SMSC ID,因为 kannel 也与 SMSC ID 匹配 !!
(2) 您发送了一条消息而没有要求 DLR,例如 dlr_mask = 0,则 kannel 不会存储已发送消息的引用。但运营商向您发送了 DLR!!这种情况可能发生,因为即使您没有要求,某些运营商也会向您发送 DLR。
(3) 当您发送连接的 MT 时,kannel 仅保留第一部分的引用并忽略其他部分,但某些操作员会向您发送所有部分的 DLR,其他部分将找不到匹配项。
(4)这种情况最为关键,一些运营商在发送 ACK 之前会先向您发送 DLR!DLR 不会匹配,因为 kannel 尚未保存消息引用!它会等待 submit_sm_resp (ACK、NACK 等),然后再将引用存储在商店中,Alex 对此进行了修复,但性能会受到影响。”
好吧,我希望这对你有帮助:)
答案2
您可能无法处理 dlr,因为它可能很忙。您可以使用 mysql 数据库来存储 dlr,这样您的 dlr 就不会丢失。请参阅
http://eshaiju.blogspot.in/2013/09/configuring-mysql-dlr-storage.html