oscerd opened a new pull request, #2989:
URL: https://github.com/apache/camel-kamelets/pull/2989
Fixes #1060. Companion to #2988 (`smpp-sink`, #1059) — same component, same
connection surface, reviewable independently.
Adds `smpp-source`, which receives SMS messages and delivery receipts from a
SMSC using `camel-smpp`. The short message text becomes the body; the received
PDU details stay in the `CamelSmpp*` headers the component already sets
(`CamelSmppMessageType`, `CamelSmppStatus`, `CamelSmppDelivered`,
`CamelSmppSubmitDate`, `CamelSmppOptionalParameters`, …), so nothing is
remapped or hidden.
```yaml
from:
uri: "smpp:{{host}}:{{port}}"
parameters:
systemId: "{{systemId}}"
password: "{{?password}}"
systemType: "{{?systemType}}"
addressRange: "{{?addressRange}}"
encoding: "{{encoding}}"
usingSSL: "{{usingSSL}}"
steps:
- to: "kamelet:sink"
```
## Properties
Only `host` is required.
| property | default | notes |
|---|---|---|
| `host` | — | **required** |
| `port` | `2775` | |
| `systemId` | `smppclient` | credentials descriptor |
| `password` | — | `format: password` + credentials descriptor |
| `systemType` | — | ESME type, max 13 chars |
| `addressRange` | — | consumer-side; tells the SMSC which messages to route
to this ESME (SMPP 3.4 §5.2.7) |
| `encoding` | `ISO-8859-1` | |
| `usingSSL` | `false` | |
`addressRange` is the one option that differs from the sink — it is the
consumer-labelled option in the component and has no meaning on the producer
side. Conversely the sink's `sourceAddr` / `destAddr` / `splittingPolicy` are
producer-only and are deliberately absent here.
## Verification
`script/validator` reports no errors, `script/generator` adds the `nav.adoc`
entry, `mvn clean install` passes from the repository root.
Parameter binding checked against the real component with `camel run` rather
than by eye — the consumer endpoint is constructed and startup fails only on
the missing SMSC:
```
Error starting CamelContext (smpp-src-probe) due to exception thrown:
java.io.IOException: Connection refused
Caused by: java.net.ConnectException: Connection refused
```
A mistyped option would have failed earlier with `unknown option` instead.
## Same two caveats as the sink
**No Citrus test** — `camel-smpp` needs a live SMSC and the project's
Citrus/Testcontainers toolchain has no SMSC simulator. Marked `Preview`, no
`kamelet.verified=true`. Happy to add the test in a follow-up if there is an
SMSC image the project will depend on.
**`usingSSL` defaults to `false`,** matching the component default and the
plain `smpp` scheme. Worth a reviewer's eye given the catalog's
secure-by-default direction (#2954, #2955, #2956), but SMPP-over-TLS is not
widely supported by SMSCs, so defaulting it on would make the Kamelet unusable
against most of them.
This is a source Kamelet, so the usual operator note applies: it binds
outward to the SMSC you configure, and the SMSC decides what to deliver to it
via `addressRange`.
---
_Claude Code on behalf of Andrea Cosentino_
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]