Prep python with correct packages.
`pip install Flask twilio sqlite3
`
Create a SQuLite Database:
```
CREATE TABLE group_members (
id INTEGER PRIMARY KEY AUTOINCREMENT,
group_id TEXT NOT NULL,
phone_number TEXT NOT NULL
);
```
This is just an empty database.
Add some contacts to contact:
```
INSERT INTO group_members (group_id, phone_number) VALUES ('group1', '+1234567890');
INSERT INTO group_members (group_id, phone_number) VALUES ('group1', '+0987654321');
```
We add some contacts who will be contacted when the endpoint has data sent to it.
Create a flask app. Call it flasky.py.
```from flask import Flask, request, jsonify
import sqlite3
from twilio.rest import Client
app = Flask(__name__)
# Twilio credentials (fill these with your own credentials)
TWILIO_ACCOUNT_SID = 'your_account_sid'
TWILIO_AUTH_TOKEN = 'your_auth_token'
TWILIO_PHONE_NUMBER = 'your_twilio_phone_number'
# Initialize Twilio client
twilio_client = Client(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN)
# Function to query phone numbers by groupID
def get_phone_numbers_by_group(group_id):
try:
# Connect to SQLite database
conn = sqlite3.connect('groups.db')
cursor = conn.cursor()
# Query the database for phone numbers associated with the groupID
cursor.execute("SELECT phone_number FROM group_members WHERE group_id = ?", (group_id,))
phone_numbers = [row[0] for row in cursor.fetchall()]
# Close the connection
conn.close()
return phone_numbers
except Exception as e:
print(f"Database error: {e}")
return []
# Function to send SMS using Twilio
def send_sms(phone_number, message_body):
try:
message = twilio_client.messages.create(
body=message_body,
from_=TWILIO_PHONE_NUMBER,
to=phone_number
)
return message.sid
except Exception as e:
print(f"Twilio error: {e}")
return None
# Route to handle GET requests with a groupID parameter
@app.route('/send_message', methods=['GET'])
def send_message():
group_id = request.args.get('groupID')
message = request.args.get('message', 'Hello from our service!')
if not group_id:
return jsonify({"error": "groupID parameter is required"}), 400
# Get phone numbers associated with the groupID
phone_numbers = get_phone_numbers_by_group(group_id)
if not phone_numbers:
return jsonify({"error": "No phone numbers found for this groupID"}), 404
# Send the message to each phone number
sent_messages = []
for number in phone_numbers:
message_sid = send_sms(number, message)
if message_sid:
sent_messages.append({"phone_number": number, "message_sid": message_sid})
return jsonify({"status": "Messages sent", "details": sent_messages}), 200
if __name__ == '__main__':
app.run(debug=True)
```