Use your own SMS service
SessionTalk Pro and Free 8.0.13 (build 734) or later support incoming SMS through your own HTTPS service, without a SessionCloud portal project. Install a build that includes this feature; a Google Play submission is not confirmation that it is available in your country yet. iOS needs a separately built and released version containing this feature.
Your provider sends its inbound webhook to your server. Your server stores the message, requests an app notification through SessionTalk’s push relay, and makes the message available for the app to fetch. A public webhook listener does not run on the phone. Outgoing SMS uses the app’s separate HTTPS gateway settings.
Download the working example
Download the Python SMS bridge and tests. The archive includes the server, persistent SQLite queue, Docker Compose setup, secure credential generator, webhook verification, tests and a complete README. It has adapters for A&A, Twilio, Telnyx and Custom HTTPS. It supports one number/mailbox per deployment and text SMS. MMS and delivery receipts are outside this example’s scope.
Read the complete setup and API contract or inspect the server source. The server implements SessionTalk’s JSON contract; existing Acrobits fetch scripts need an adapter and cannot be pasted in unchanged.
Configure the server
Follow the downloaded README to deploy the bridge behind HTTPS. Generate fresh mailbox and webhook credentials, set the carrier credentials, and run both the HTTP service and notification worker. Keep provider API keys on the server.
| Provider | Where to send incoming messages | Verification in the example |
|---|---|---|
| A&A | SMS Inbound: https://YOUR_HOST/webhooks/aa/YOUR_RANDOM_SECRET | Private random URL credential and destination-number check |
| Twilio | Number’s incoming-message webhook: POST https://YOUR_HOST/webhooks/twilio | Twilio SDK signature, Account SID and destination |
| Telnyx | Messaging profile webhook: https://YOUR_HOST/webhooks/telnyx | Ed25519 signature, fresh timestamp and destination |
| Custom | POST https://YOUR_HOST/webhooks/custom | HMAC-SHA256 signature, fresh timestamp and destination |
The A&A URL must not end with ? or &, which would select GET. Its callback is
not a signed webhook, so protect the secret URL and exclude it from logs. See the
A&A API . Twilio requires the exact public URL
for signature validation .
The README defines the example’s Custom schema; it differs from the portal’s
Custom integration.
Configure the standalone app
- Disable the SIP account and enable SMS in its advanced messaging settings.
- Configure and save HTTPS > Custom for outgoing SMS. With the example, use
https://YOUR_HOST/send, the mailbox ID as the SMS username, the mailbox token as the SMS password, parameter namesusername,password,da,ud, and success prefixOK:. A&A users can keep the direct A&A outgoing preset instead. - Open Advanced SIP settings > Messaging > Incoming messages and enable Use my own messaging service.
- Enter these values from your server administrator:
| App field | Example server value |
|---|---|
| Incoming message fetch URL | https://YOUR_HOST/inbox |
| Push registration URL | https://YOUR_HOST/devices |
| Mailbox ID | Generated MAILBOX_ID UUID |
| SMS number | SMS_NUMBER, including + and country code |
| Mailbox access token | Generated MAILBOX_TOKEN, 43 characters |
Choose Connect mailbox, re-enable the account, enable account push and allow notifications. Keep the app open for initial device registration. Your SIP password is not sent to the bridge. Protect the mailbox token as a password. URLs require HTTPS and cannot include credentials, query strings or fragments.
Push and synchronization
On iOS and Android, the app reports an encrypted-in-transit, device/account-scoped push capability to your server. The bridge uses that capability to request normal APNs/FCM message notifications. It never needs SessionTalk’s shared relay secret. Each grant lasts seven days and is refreshed while the app is open; open the app at least once every seven days to renew it. Private push servers need the matching relay implementation and must be explicitly approved in the bridge configuration.
The app fetches full messages after a push and catches up when reopened. Fetching is non-destructive, with stable message UUIDs and a monotonic cursor, so retries and multiple devices do not delete each other’s inbox. If push is unavailable, foreground fetching still works. A successful push response does not prove the phone displayed or read the message.
Disconnecting keeps local conversation history and stops that mailbox’s messages being accepted by the app. Remove the device route from your bridge as well. Changing the SIP identity does not transfer the old mailbox to the new account.
Verify the complete setup
Run the sample’s automated tests, then send a real SMS with the app open and with the phone locked. Reply, repeat a callback, reconnect, and test both mobile platforms you will support. Check long Unicode messages and that the intended account receives them. The README covers backups, encrypted storage, credentials, retention, queue retries and production hardening.
SessionCloud continues to receive inbound/outbound messaging configuration through its portal. See Connect the app. Teams Hosted uses its separate messaging service.