Skip to main content

pySMSGateway

pySMSGateway is an asynchronous Python microservice that interacts with a GSM modem using Gammu. It provides a REST API for sending and receiving SMS messages and retrieving real-time modem and network details such as IMEI, signal quality, and carrier name. Incoming SMS messages can optionally be forwarded to any external service via a configurable webhook.


🚀 Features

  • 📤 Send SMS via REST API
  • 📥 Receive and decode incoming SMS messages
  • 📶 Query modem details (IMEI, model, firmware, signal, operator, etc.)
  • 🔁 Poll modem periodically for new messages
  • 🔧 Easily integrates with automation, IoT, or monitoring systems

⚙️ Configuration

Set the following environment variables to configure the gateway:

Variable Description Default
WEBHOOK_URL URL to forward incoming SMS as a JSON payload (optional) http://localhost:8123/webhook/sms
WEBHOOK_TOKEN Optional bearer token for secure webhook POSTs —
GSM_DEVICE Path to GSM modem serial port (e.g. /dev/ttyUSB0) /dev/ttyUSB0
GSM_CONNECTION Modem connection string (e.g. at19200, at115200) at115200
POLL_INTERVAL Interval (seconds) to poll modem for new messages 10

📡 API Endpoints

POST /api/sms/send

Send an SMS message via modem.

Request:

{
  "number": "+15551234567",
  "text": "Hello from pySMSGateway!"
}

Response:

{ "status": "SMS sent" }

GET /api/sms/info

Retrieve modem metadata and network diagnostics.

Response:

{
  "manufacturer": "Quectel",
  "model": "EC25",
  "firmware": "01.000.01.001",
  "imei": "867322032XXXXX",
  "signal_quality": { "SignalStrength": 21, "SignalPercent": 55 },
  "network_info": {
    "NetworkCode": "310260",
    "NetworkName": "T-Mobile",
    "LAC": "0001",
    "CID": "0A2B"
  }
}

🔁 Webhook Forwarding

When an incoming SMS is received, a POST request is sent to your WEBHOOK_URL containing:

{
  "phone": "+15559876543",
  "date": "2025-06-22 11:30:00",
  "message": "Your gateway is working!"
}

The Authorization: Bearer WEBHOOK_TOKEN header is included if configured.


🐳 Running via Docker

docker build -t pysmsgateway .
docker run --rm -it \
  -e GSM_DEVICE=/dev/ttyUSB0 \
  -e GSM_CONNECTION=at115200 \
  -e WEBHOOK_URL=https://your-service.example.com/sms \
  -e WEBHOOK_TOKEN=your-secret-token \
  --device=/dev/ttyUSB0 \
  -p 3000:3000 \
  pysmsgateway

🛠️ Development

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt  # include aiohttp, python-gammu, etc.
python sms_gateway.py

📝 License

MIT License


🤝 Contributing

Bug reports, feature suggestions, and pull requests are welcome!

Metadata

Release files for py-smsgateway-async 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for py-smsgateway-async 0.1.2
File Size Uploaded
py_smsgateway_async-0.1.2.tar.gz 5.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for py-smsgateway-async 0.1.2
File Interpreter ABI Platform
py_smsgateway_async-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 12.8 kB

Release files / py_smsgateway_async-0.1.2.tar.gz

Download URL py_smsgateway_async-0.1.2.tar.gz
Size 5.6 kB
Tags Source
SHA-256 checksum
How to use checksums
92c897771dc17bfb96b24d6874166df229f018ede7e6fe6a002aa101b0de57c4
BLAKE2b-256 checksum
How to use checksums
663b57ac8cb537d08bbe94b493d75f7fb25668c5ba833f7bc99673512abdf811
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.13

Release files / py_smsgateway_async-0.1.2-py3-none-any.whl

Download URL py_smsgateway_async-0.1.2-py3-none-any.whl
Size 7.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5aeb1e792d0fc5ac7611d77d78b90847909d433cccaf870d4392dba44dd25370
BLAKE2b-256 checksum
How to use checksums
4207df397262b546084b6fa43393bf54f37f22018751731d70e4849aacd090ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.13

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page