Our setup is such that we never normally need actually to route a message. We get sent a copy of the message as an MO SMS via SMPP, and feed it to some business logic in an MOInterceptor.
If the MOInterceptor logic determines that the message should be delivered to the recipient, we respond with ESME_RDELIVERYFAILURE. The upstream service then routes it to the recipient.
If the MOInterceptor logic determines that the message should NOT be delivered to the recipient, we respond with ESME_RX_P_APPN. The upstream service then tells the sender that the delivery was unsuccessful.
There is also a third case, where the message is actually an instruction to us; we can tell from the PDU content exactly what needs to be done, and for which user. If we can process this successfully, we do not want the sender to be told that message sending was unsuccessful; but neither do we want the message, now it has been dealt with, actually to be sent anywhere. Leaving smpp_status unset in the MOInterceptor script causes jasmin to want to route the message.
I have an MO route to my dummy HTTP connector (which logs in syslog the fact it was called; and if I use curl at the bash prompt, I can see this) at order 20, with a "log only" EvalPyFilter attached to it. This filter appears to be firing correctly, based on router.log:
2025-12-15 09:57:29 DEBUG 625849 Callbacked a deliver_sm with a DeliverSmPDU[8cc9d600-1c09-4529-ab3b-35efafbdd1c2] (?): PDU [command: CommandId.deliver_sm, sequence_number: 88, command_status: CommandStatus.ESME_ROK
...stuff omitted...
]
2025-12-15 09:57:29 DEBUG 625849 ** This is jm-log_only_filter.py **
2025-12-15 09:57:29 DEBUG 625849 routable has tags: ['12345']
2025-12-15 09:57:29 DEBUG 625849 Nothing more to do here, returning True
2025-12-15 09:57:29 DEBUG 625849 RouterPB selected StaticMORoute to http(http-dummy) NOT RATED for this SubmitSmPDU
2025-12-15 09:57:29 DEBUG 625849 Connector 'http-dummy'(http) is set to be a route for this DeliverSmPDU
2025-12-15 09:57:29 DEBUG 625849 Publishing RoutedDeliverSmContent [msgid:8cc9d600-1c09-4529-ab3b-35efafbdd1c2] in deliver_sm_thrower.http
(the second, third and fourth lines are my log-only filter announcing itself, reporting that tag 12345 has been added by the intercept logic and reporting successful completion), and it's even possible to see things happening with the rabbitmq queues, but the dummy http connector still never seems to get called.
I feel sure I'm quite close to getting this working, and there is just one small piece I must be missing.
--
Julie Montoya.