Hi Martin,

 

About Github: +1 from me, how about the main developer(s) in charge?

 

The force-dlr option is a good idea, but it’s better to implement it in 
bearerbox, as in your use-case you always want it – not just for messages 
relayed via opensmppbox?

I’m not sure if something like that already exists.

 

True, that -besides that- also it needs to be implemented in opensmppbox to 
keep the dlr store.

 

== Rene

 

Van: Martin Caetano <martin.caet...@icloud.com> 
Verzonden: vrijdag 30 april 2021 02:18
Aan: Rene Kluwen <rene.klu...@chimit.nl>
CC: us...@kannel.org
Onderwerp: Re: OpenSMPPBox won't create DLR

 

 

Are the submit_sm's sent with registered_delivery set to 1?

 

It wasn’t and that was the issue. Now it is creating the DLR and storing them 
in the db. Thank you!

 

However, for our case this option is inconvenient as we plan to allow customers 
to connect via SMPP and use DLR for tracking billing. If we allow the customers 
to set dlr off we won’t be able to charge them.

 

As a solution I manually edited the opensmppbox.c file and “forced” a dlr-mask 
setting and removed the registered_delivery check: 

 

https://redmine.kannel.org/projects/smppbox/repository/entry/trunk/gw/opensmppbox.c#L1254
 

 

I believe it would be useful to enable this functionality (force-dlr) as an 
option on the smppopenbox settings.

 

I’m happy to send it as a patch if it is considered worth of adding to the 
project.

 

By the way, wouldn’t be better to migrate the kannel to Github and ditch 
subversion? I guess it would encourage more collaboration and make life easier 
for everybody.

 

Martin.





On Apr 29, 2021, at 4:18 PM, Rene Kluwen <rene.klu...@chimit.nl 
<mailto:rene.klu...@chimit.nl> > wrote:

 

Hi Martin,

Looks like you got opensmppbox setup correctly for dlr.
Adding or omitting sqlbox won't make a difference, like you already saw that
correctly.

Could you list if there is any rows available in the dlr table in your
postgres database?

Are the submit_sm's sent with registered_delivery set to 1?

It could be a msg-id-type issue. I'm not even sure if that's implemented in
opensmppbox.

== Rene


-----Oorspronkelijk bericht-----
Van: users <users-boun...@kannel.org <mailto:users-boun...@kannel.org> > Namens 
Martin Caetano
Verzonden: donderdag 29 april 2021 21:01
Aan: us...@kannel.org <mailto:us...@kannel.org> 
Onderwerp: OpenSMPPBox won't create DLR

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