Puzzel SMS Gateway Python Client
Copyright 2024 Puzzel AS
Released under the MIT license.
Python client for the Puzzel SMS Gateway.
Contents
Prerequisites
python = "^3.10.5"
requests = "^2.28.1"
pydantic = "^1.9.1"
fastapi = "^0.78.0"
Please see pyproject.toml for the full citation information.
Installation
Using pip
python -m pip install puzzel_sms_gateway_client
Using Poetry
poetry add puzzel_sms_gateway_client
Usage
For all the following examples it is recommended to define the following needed variables as secrets in your repository, environment variables or as constants in the script.
Importing as a module
import puzzel_sms_gateway_client as smsgw
BASE_ADDRESS: str = "https://[YOUR_SERVER_ADDRESS]/gw/rs"
SERVICE_ID: int = [YOUR_SERVICE_ID]
USERNAME: str = "[YOUR_USERNAME]"
PASSWORD: str = "[YOUR_PASSWORD]"
client = smsgw.Client(
service_id=SERVICE_ID,
username=USERNAME,
password=PASSWORD,
base_address=BASE_ADDRESS,
)
response = client.send(
messages=[
smsgw.Message(
recipient="+47xxxxxxxxx",
content="Hello World!",
),
]
)
Using classes directly
from puzzel_sms_gateway_client import (
Client,
GasSettings,
Message,
MessageSettings,
OriginatorSettings,
Parameter,
SendWindow,
)
BASE_ADDRESS: str = "https://[YOUR_SERVER_ADDRESS]/gw/rs"
SERVICE_ID: int = [YOUR_SERVICE_ID]
USERNAME: str = "[YOUR_USERNAME]"
PASSWORD: str = "[YOUR_PASSWORD]"
client = Client(
service_id=SERVICE_ID,
username=USERNAME,
password=PASSWORD,
base_address=BASE_ADDRESS,
)
response = client.send(
messages=[
Message(
recipient="+47xxxxxxxxx",
content="Hello World!",
settings=MessageSettings(
send_window=SendWindow(
start_date="2022-07-13",
stop_date="2022-07-13",
start_time="15:20:00",
stop_time="15:30:00",
),
),
),
]
)
Using object instantiation
from puzzel_sms_gateway_client import (
Client,
GasSettings,
Message,
MessageSettings,
OriginatorSettings,
Parameter,
SendWindow,
)
BASE_ADDRESS: str = "https://[YOUR_SERVER_ADDRESS]/gw/rs"
SERVICE_ID: int = [YOUR_SERVICE_ID]
USERNAME: str = "[YOUR_USERNAME]"
PASSWORD: str = "[YOUR_PASSWORD]"
gas_settings = GasSettings(
service_code="02001",
description="SMS",
)
originator_settings = OriginatorSettings(
originator_type="NETWORK",
originator="1960",
)
send_window = SendWindow(
start_date="2022-07-14",
stop_date="2022-07-14",
start_time="09:20:00",
stop_time="09:30:00",
)
parameter = Parameter(
business_model="contact center",
dcs="F5",
udh="0B0504158200000023AB0201",
pid=65,
flash=True,
parsing_type="AUTO_DETECT",
skip_customer_report_delivery=True,
strex_verification_timeout="10",
strex_merchant_sell_option="pin",
strex_confirm_channel="sms",
strex_authorization_token="some_token",
)
message_settings = MessageSettings(
priority=1,
validity=173,
differentiator="sms group 1",
invoice_node="marketing department",
age=18,
new_session=True,
session_id="01bxmt7f8b8h3zkwe2vg",
auto_detect_encoding=True,
safe_remove_non_gsm_characters=True,
originator_settings=originator_settings,
gas_settings=gas_settings,
send_window=send_window,
parameter=parameter,
)
client = Client(
service_id=SERVICE_ID,
username=USERNAME,
password=PASSWORD,
base_address=BASE_ADDRESS,
batch_reference="some_batch_reference",
)
message = Message(
recipient="+47xxxxxxxxx",
content="Hello World!",
price=100,
client_reference="some_client_reference",
settings=message_settings,
)
response = client.send(messages=[message])
Sending message to multiple recipients
import json
from puzzel_sms_gateway_client import (
Client,
Message,
)
BASE_ADDRESS: str = "https://[YOUR_SERVER_ADDRESS]/gw/rs"
SERVICE_ID: int = [YOUR_SERVICE_ID]
USERNAME: str = "[YOUR_USERNAME]"
PASSWORD: str = "[YOUR_PASSWORD]"
recipients = [
"+47xxxxxxxx1",
"+47xxxxxxxx2",
]
client = Client(
service_id=SERVICE_ID,
username=USERNAME,
password=PASSWORD,
base_address=BASE_ADDRESS,
)
response = client.send(
messages=[
Message(
content="Hello World!",
)
],
recipients=recipients,
)
print(json.dumps(response.json(), indent=4))
Output:
{
"batchReference": "60908fdd-6da7-4658-b0f7-5685e513c19f",
"messageStatus": [
{
"statusCode": 1,
"statusMessage": "Message enqueued for sending",
"clientReference": null,
"recipient": "+47xxxxxxxx1",
"messageId": "7a04egxihb00",
"sessionId": null,
"sequenceIndex": 1
},
{
"statusCode": 1,
"statusMessage": "Message enqueued for sending",
"clientReference": null,
"recipient": "+47xxxxxxxx2",
"messageId": "7a04egxihc00",
"sessionId": null,
"sequenceIndex": 2
}
]
}