I've spent a significant amount of time around this issue. I've read the 
complete Kannel guide, SO, Nabble and any other resource I could find yet I 
couldn't find any solution or hint on why the DLR aren't being created. 

I believe what I'm trying to do is very straightforward: 

I'm connected using SMPP to OpenSMPPBox, using PostgreSQL and routing to a SMPP 
SMSC like this: 

opensmppbox --> sqlbox ->  bearerbox -> smsc 

I can send SMS with no problem to the other end and I can see the pdu responses 
back in the logs. However, the DLRs aren't being created as they are when I use 
HTTP with smsbox and dlr-mask/dlr-url params. 

It doesn't matter if I remove the sqlbox and use internal storage, the DLRs are 
never being created (or at least never appear as created in the logs) when 
connecting via smpp to opensmppbox. 

2021-04-29 05:28:14 [35121] [6] DEBUG: SMPP[smsc1]: throughput (0.00,0.00)
2021-04-29 05:28:14 [35121] [6] DEBUG: SMPP[smsc1]: Got PDU:
2021-04-29 05:28:14 [35121] [6] DEBUG: SMPP PDU 0x7eff380010e0 dump:
2021-04-29 05:28:14 [35121] [6] DEBUG:   type_name: deliver_sm
2021-04-29 05:28:14 [35121] [6] DEBUG:   command_id: 5 = 0x00000005
2021-04-29 05:28:14 [35121] [6] DEBUG:   command_status: 0 = 0x00000000
2021-04-29 05:28:14 [35121] [6] DEBUG:   sequence_number: 31 = 0x0000001f
2021-04-29 05:28:14 [35121] [6] DEBUG:   service_type: NULL
2021-04-29 05:28:14 [35121] [6] DEBUG:   source_addr_ton: 0 = 0x00000000
2021-04-29 05:28:14 [35121] [6] DEBUG:   source_addr_npi: 0 = 0x00000000
2021-04-29 05:28:14 [35121] [6] DEBUG:   source_addr: "xxxxxxxxxx"
2021-04-29 05:28:14 [35121] [6] DEBUG:   dest_addr_ton: 5 = 0x00000005
2021-04-29 05:28:14 [35121] [6] DEBUG:   dest_addr_npi: 0 = 0x00000000
2021-04-29 05:28:14 [35121] [6] DEBUG:   destination_addr: "MySender"
2021-04-29 05:28:14 [35121] [6] DEBUG:   esm_class: 4 = 0x00000004
2021-04-29 05:28:14 [35121] [6] DEBUG:   protocol_id: 8 = 0x00000008
2021-04-29 05:28:14 [35121] [6] DEBUG:   priority_flag: 0 = 0x00000000
2021-04-29 05:28:14 [35121] [6] DEBUG:   schedule_delivery_time: NULL
2021-04-29 05:28:14 [35121] [6] DEBUG:   validity_period: NULL
2021-04-29 05:28:14 [35121] [6] DEBUG:   registered_delivery: 0 = 0x00000000
2021-04-29 05:28:14 [35121] [6] DEBUG:   replace_if_present_flag: 0 = 0x00000000
2021-04-29 05:28:14 [35121] [6] DEBUG:   data_coding: 0 = 0x00000000
2021-04-29 05:28:14 [35121] [6] DEBUG:   sm_default_msg_id: 0 = 0x00000000
2021-04-29 05:28:14 [35121] [6] DEBUG:   sm_length: 105 = 0x00000069
2021-04-29 05:28:14 [35121] [6] DEBUG:   short_message:
2021-04-29 05:28:14 [35121] [6] DEBUG:    Octet string at 0x7eff38001340:
2021-04-29 05:28:14 [35121] [6] DEBUG:      len:  105
2021-04-29 05:28:14 [35121] [6] DEBUG:      size: 106
2021-04-29 05:28:14 [35121] [6] DEBUG:      immutable: 0
2021-04-29 05:28:14 [35121] [6] DEBUG:      data: 69 64 3a 37 32 36 34 37 33 33 
37 20 73 75 62 3a   id:72647337 sub:
2021-04-29 05:28:14 [35121] [6] DEBUG:      data: 30 20 64 6c 76 72 64 3a 32 38 
20 73 75 62 6d 69   0 dlvrd:28 submi
2021-04-29 05:28:14 [35121] [6] DEBUG:      data: 74 20 64 61 74 65 3a 32 31 30 
34 32 39 30 32 32   t date:210429022
2021-04-29 05:28:14 [35121] [6] DEBUG:      data: 38 20 64 6f 6e 65 20 64 61 74 
65 3a 32 31 30 34   8 done date:2104
2021-04-29 05:28:14 [35121] [6] DEBUG:      data: 32 39 30 32 32 38 20 73 74 61 
74 3a 45 4e 52 4f   290228 stat:ENRO
2021-04-29 05:28:14 [35121] [6] DEBUG:      data: 55 54 45 20 65 72 72 3a 30 20 
54 65 78 74 3a 48   UTE err:0 Text:H
2021-04-29 05:28:14 [35121] [6] DEBUG:      data: 65 6c 6c 6f 20 54 65 78 74    
                    ello Text
2021-04-29 05:28:14 [35121] [6] DEBUG:    Octet string dump ends.
2021-04-29 05:28:14 [35121] [6] DEBUG: SMPP PDU dump ends.
2021-04-29 05:28:14 [35121] [6] DEBUG: SMPP[smsc1] handle_pdu, got DLR
2021-04-29 05:28:14 [35121] [6] DEBUG: DLR[pgsql]: Looking for DLR smsc=smsc1, 
ts=72647337, dst=xxxxxxxxxx, type=4
2021-04-29 05:28:14 [35121] [6] DEBUG: sql: SELECT "mask", "service", "url", 
"source", "destination", "boxc" FROM "dlr" WHERE "smsc"='smsc1' AND 
"ts"='72647337'  LIMIT 1;
2021-04-29 05:28:14 [35121] [6] DEBUG: no rows found
2021-04-29 05:28:14 [35121] [6] WARNING: DLR[pgsql]: DLR from SMSC<smsc1> for 
DST<xxxxxxxxxx> not found.
2021-04-29 05:28:14 [35121] [6] ERROR: SMPP[smsc1]: got DLR but could not find 
message or was not interested in it id<72647337> dst<xxxxxxxxxx>, type<4>
2021-04-29 05:28:14 [35121] [6] DEBUG: SMPP[smsc1]: Sending PDU:
2021-04-29 05:28:14 [35121] [6] DEBUG: SMPP PDU 0x7eff38001ec0 dump:
2021-04-29 05:28:14 [35121] [6] DEBUG:   type_name: deliver_sm_resp
2021-04-29 05:28:14 [35121] [6] DEBUG:   command_id: 2147483653 = 0x80000005
2021-04-29 05:28:14 [35121] [6] DEBUG:   command_status: 0 = 0x00000000
2021-04-29 05:28:14 [35121] [6] DEBUG:   sequence_number: 31 = 0x0000001f
2021-04-29 05:28:14 [35121] [6] DEBUG:   message_id: NULL
2021-04-29 05:28:14 [35121] [6] DEBUG: SMPP PDU dump ends.


Looking at the logs when using smsbox/HTTP I can see the DLR being created 
right after the submit_sm_resp, which isn't the case using opensmppbox which 
causes the later select query fails as it doesn't find the record. 

I understand I can set the dlr-mask when using smsbox/HTTP but I haven't found 
any way to do so in opensmppbox (unsure if it is even possible). 

I'm unsure if dlr-mask has to be set to get the DLRs somehow or I may be 
missing something terrible wrong or maybe even obvious. 

My main use case if to allow customers to connect directly via SMPP while we 
can still keep track of what was delivery/failed by forwarding those DLRs to 
our external system for billing/reporting/processing/etc. 

Any help around this is greatly appreciated. 

Here are the configurations: 

I first tried compiling Kannel 1.4.5 (and installing opensmppbox and sqlbox 
from its addons folder) and later  also tried Kannel and the opensmppbox/sqlbox 
directly from their current svn trunks. In both cases the same behavior 
happens. 

bearerbox /etc/kannel/kannel.conf
group = core
admin-port = 13000
smsbox-port = 13001
admin-password = bar
box-deny-ip = "*.*.*.*"
box-allow-ip = "127.0.0.1"
access-log = "/var/log/kannel/kannel.access.log"
dlr-storage = pgsql

group = smsc
smsc = smpp
smsc-id = smsc1
host = xxx.xxx.xxx.xxx
port = 7777
smsc-username = smpp
smsc-password = smpp
system-type = 

group = smsbox
bearerbox-host = localhost
global-sender = Default
bearerbox-port = 13002

group = sendsms-user
username = tester
password = foobar
user-deny-ip = ""
user-allow-ip = ""

group = sms-service
keyword = default
text = "You asked nothing and I did it!"

group = pgsql-connection
id = mydlr
host = localhost
username = postgres
password = postgres
database = dlr
max-connections = 10

group = dlr-db
id = mydlr
table = dlr
field-smsc = smsc
field-timestamp = ts
field-destination = destination
field-source = source
field-service = service
field-url = url
field-mask = mask
field-status = status
field-boxc-id = boxc


sqlbox /etc/kannel/sqlbox.conf
group = sqlbox
id = sqlbox-db
smsbox-id = sqlbox
bearerbox-host = localhost
bearerbox-port = 13001
smsbox-port = 13002
sql-log-table = sent_sms
sql-insert-table = send_sms

group = pgsql-connection
id = sqlbox-db
host = localhost
username = postgres
password = postgres
database = dlr
max-connections = 10


opensmppbox /etc/kannel/opensmppbox.conf
group = core
dlr-storage = pgsql

# Proxy configuration
group = opensmppbox
opensmppbox-id = smsc1
opensmppbox-port = 13003
bearerbox-host = 127.0.0.1
bearerbox-port = 13002
log-file = /var/log/kannel/opensmppbox.log
log-level = 0
our-system-id = smsc
use-systemid-as-smsboxid = true
# Will send only to this
route-to-smsc = smsc1
# New accounts
smpp-logins = /etc/opensmppbox/clients/smpplogins.txt

group = pgsql-connection
id = mydlr
host = localhost
username = postgres
password = postgres
database = dlr
max-connections = 10

group = dlr-db
id = mydlr
table = dlr
field-smsc = smsc
field-timestamp = ts
field-destination = destination
field-source = source
field-service = service
field-url = url
field-mask = mask
field-status = status
field-boxc-id = boxc


/etc/kannel/smpplogins.txt
goodclient secret smsc1 *.*.*.*

Reply via email to