Skip to main content

Python client for Puzzel SMS Gateway

Project description

Puzzel SMS Gateway Python Client

GitHub License Latest Version Supported Python versions Downloads Coverage GitHub issues GitHub last commit

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

puzzel_sms_gateway_client-2.0.2.tar.gz (11.0 kB view details)

Uploaded Source

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

Hashes for puzzel_sms_gateway_client-2.0.2.tar.gz
Algorithm Hash digest
SHA256 5a9954f23baaea1836f8e20b5dc69a692ca60ae223ad33d23a9e7f173a2a84ef
MD5 4f59d4dd453b3f12ee6cb65b4bf2dee8
BLAKE2b-256 daeaf2cf325968c68ce3dcacca836bca23005f5c4b9030d5eebd2c9bbdf513d7

See more details on using hashes here.

File details

Details for the file puzzel_sms_gateway_client-2.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for puzzel_sms_gateway_client-2.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6287c29614efc85ebc2946515707e00aed876a93caeb9f37c56b50c104533852
MD5 cfb0dc227b8aee3dd286ca3256e25685
BLAKE2b-256 85d3566613125aea98f751221a94347de90e0b036c8875143f849f862d7eff81

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page