Send SMS messages via REST api using Gammu as backend.
- The following program works both on Linux and OSX.
- You must already have Gammu installed and configured on the right device.
Note it's obvious that your device must manage SMS sending/receiving with Gammu perfectly.
Install the package into your project's virtual environment :
pip install smsgateway-gammu
- Modify the
/etc/smsgateway.yml
configuration file with your favorite text editor.
# Server settings
server:
# Listen address, put 0.0.0.0 to listen on all interfaces
host: "127.0.0.1"
# Listen port
port: 1234
# Gammu settings
gammu:
# PIN code, enter pin code there to unlock directly from application
pin: 1234
# Configuration : instead of a .gammurc file you can give configuration there
# config:
# Device: /dev/tty.HUAWEIMobile-Modem
# Connection: at
# General settings
# Phone numbers that doesn't want to receive messages from gateway
send_blacklist: ["+33689898989", "+33652525252"]
# Phone numbers that are allowed to send messages to gateway
receive_whitelist: ["+33638383838", "+33614141414"]
To start the gateway, just type the command :
smsgateway
Or if configuration file is elsewhere than
/etc/smsgateway.yml
:smsgateway --config <your_configuration_file>
There are different ways to send a message :
GET method
GET /sms?number=mynumbers&message=mymessage
Where mynumbers are phone numbers, comma separated.
For instance : GET /sms?number=+33565656565,+33689898989&message=Hello
Will send "Hello" message to the 2 phone numbers and return the JSON : {"status": "ok", "message": "messages sent"}
.
POST method
POST /sms?number=mynumbers { "message": "Hello World" }
Where POST data is JSON containing the field string "message".
POST /sms?number=mynumbers { "messages": [ "Hello", "World" ] }
Where JSON contains the field "messages" which is a list for multiple messages.
Users allowed to send SMS messages to the gateway (receive_whitelist in config) can interact with the system.
Keywords are :
- PING : to check if the gateway works correctly, returns PONG if all is good.
- PAUSE : temporary pause messages coming from the gateway. It's worth to have this feature when a monitoring system spams you. To enable again just resend PAUSE.
The gateway was primary designed to work with Prometheus Alertmanager, allowing sending alerts with SMS messages.
To configure it, create a new receiver entry in the alertmanager configuration file :
receivers:
...
...
- name: sms
webhook_configs:
- url: http://localhost:9876/sms?number=+33623232323,+33690909090