Skip to Content
Mobile SoftphonesMessagingUse your own SMS service
Mobile Softphones

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.

ProviderWhere to send incoming messagesVerification in the example
A&ASMS Inbound: https://YOUR_HOST/webhooks/aa/YOUR_RANDOM_SECRETPrivate random URL credential and destination-number check
TwilioNumber’s incoming-message webhook: POST https://YOUR_HOST/webhooks/twilioTwilio SDK signature, Account SID and destination
TelnyxMessaging profile webhook: https://YOUR_HOST/webhooks/telnyxEd25519 signature, fresh timestamp and destination
CustomPOST https://YOUR_HOST/webhooks/customHMAC-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

  1. Disable the SIP account and enable SMS in its advanced messaging settings.
  2. 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 names username, password, da, ud, and success prefix OK:. A&A users can keep the direct A&A outgoing preset instead.
  3. Open Advanced SIP settings > Messaging > Incoming messages and enable Use my own messaging service.
  4. Enter these values from your server administrator:
App fieldExample server value
Incoming message fetch URLhttps://YOUR_HOST/inbox
Push registration URLhttps://YOUR_HOST/devices
Mailbox IDGenerated MAILBOX_ID UUID
SMS numberSMS_NUMBER, including + and country code
Mailbox access tokenGenerated 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.