Python client for Puzzel SMS Gateway
Project description
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", # Country code + phone number
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", # Country code + phone number
content="Hello World!",
settings=MessageSettings( # Optional
send_window=SendWindow(
start_date="2022-07-13",
stop_date="2022-07-13", # Optional
start_time="15:20:00",
stop_time="15:30:00", # Optional
),
),
),
]
)
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", # Optional
)
originator_settings = OriginatorSettings(
originator_type="NETWORK",
originator="1960",
)
send_window = SendWindow(
start_date="2022-07-14",
stop_date="2022-07-14", # Optional
start_time="09:20:00",
stop_time="09:30:00", # Optional
)
parameter = Parameter( # All are optional
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( # All are optional
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, # Deprecated
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", # Optional
)
message = Message(
recipient="+47xxxxxxxxx", # Country code + phone number
content="Hello World!",
price=100, # Optional
client_reference="some_client_reference", # Optional
settings=message_settings, # Optional
)
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", # Country code + phone number
"+47xxxxxxxx2", # Country code + phone number
]
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
}
]
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file puzzel_sms_gateway_client-2.0.2.tar.gz
.
File metadata
- Download URL: puzzel_sms_gateway_client-2.0.2.tar.gz
- Upload date:
- Size: 11.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.10.5 Darwin/23.0.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a9954f23baaea1836f8e20b5dc69a692ca60ae223ad33d23a9e7f173a2a84ef |
|
MD5 | 4f59d4dd453b3f12ee6cb65b4bf2dee8 |
|
BLAKE2b-256 | daeaf2cf325968c68ce3dcacca836bca23005f5c4b9030d5eebd2c9bbdf513d7 |
File details
Details for the file puzzel_sms_gateway_client-2.0.2-py3-none-any.whl
.
File metadata
- Download URL: puzzel_sms_gateway_client-2.0.2-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.10.5 Darwin/23.0.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6287c29614efc85ebc2946515707e00aed876a93caeb9f37c56b50c104533852 |
|
MD5 | cfb0dc227b8aee3dd286ca3256e25685 |
|
BLAKE2b-256 | 85d3566613125aea98f751221a94347de90e0b036c8875143f849f862d7eff81 |