Ako naplánovať SMS v Python flask

Najjednoduchší spôsob, ako odoslať naplánované SMS z Pythonu, je použiť vstavanú HTTP/Rest SMS API Ozeki SMS Gateway. Keď použijete toto API, budete odosielať SMS správy vydaním HTTP POST požiadavky na SMS bránu. HTTP POST požiadavka bude obsahovať správu formátovanú v json formáte. SMS brána odošle túto SMS na telefón príjemcu a vráti HTTP 200 OK odpoveď na vašu požiadavku.

ako naplánovať sms v python flask
Obrázok 1 - Ako naplánovať SMS v Python flask

Python kód na odoslanie naplánovanej sms na mobil

Ukážka Python SMS kódu nižšie demonštruje, ako môžete odosielať naplánované SMS pomocou HTTP REST SMS API Ozeki SMS Gateway pomocou Python knižnice ozekilibsrest. Táto knižnica je poskytovaná bezplatne a môžete ju používať a upravovať v akomkoľvek z vašich projektov.

SendScheduledSms.py

		from flask import Flask, render_template, request
		from ozekilibsrest import Configuration, Message, MessageApi
		from datetime import datetime
		app = Flask(__name__)
		
		configuration = Configuration(
		    username="http_user",
		    password="qwe123",
		    api_url="http://127.0.0.1:9509/api"
		)
		
		api = MessageApi(configuration)
		
		logs = []
		
		
		@app.route('/', methods=['GET', 'POST'])
		def index():
		    if request.method == 'POST':
		        message = Message(
		            to_address=request.form['to_address'],
		            text=request.form['text'],
		            time_to_send=datetime.strptime(request.form.get('time_to_send'),
		            "%Y-%m-%d %H:%M:%S")
		        )
		        log = api.send(message)
		        logs.append(log)
		    return render_template('SendScheduledSms.html', logs=logs)
		
		
		if __name__ == '__main__':
		    app.run()
	

Kód 1 - SendScheduledSms.py

SendScheduledSms.html

		<!DOCTYPE html>
		<html lang="en">
		    <head>
		        <meta charset="UTF-8">
		        <title>Odoslať naplánovanú SMS s Ozeki SMS Gateway</title>
		        <link rel="stylesheet"
		        href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
		        integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
		        crossorigin="anonymous">
		    </head>
		    <body>
		        <form action="/" method="POST" class="form-group"
		        style="width: 40%; margin-top: 10vh; margin-left: 30%;
		        display: flex; flex-direction: column; height: 40vh;
		        justify-content: space-evenly;">
		            <b>Adresát:</b>
		            <input class="form-control" type="text"
		                   name="to_address" placeholder="+36201111111"
		                   autocomplete=false>
		            <b>Text:</b>
		            <input class="form-control"
		                   type="text" name="text"
		                   placeholder="Hello world!"
		                   autocomplete=false>
		            <b>Čas odoslania:</b>
		            <input class="form-control"
		                   type="text" name="time_to_send"
		                   placeholder="2021-08-06 16:30:00"
		                   autocomplete=false>
		            <input class="btn btn-primary"
		                   style="font-weight: 600;"
		                   type="submit"
		                   name="submit"
		                   value="ODOSLAŤ">
		        </form>
		        <ul style="width: 40%; margin-left: 30%; height: 38vh; overflow-y: scroll;"
		            class="list-group card">
		            <li class="list-group-item card"><b>Záznamy:</b></li>
		            {% if logs %}
		                {% for log in logs %}
		                    <li class="list-group-item">{{ log }}</li>
		                {% endfor %}
		            {% endif  %}
		        </ul>
		    </body>
		</html>
	

Kód 2 - SendScheduledSms.html

Ako použiť Python SMS príklad:

Tento Python SMS príklad môže byť použitý v akejkoľvek Python aplikácii. Na jeho použitie musíte nainštalovať balík ozekilibsrest príkazom pip install ozekilibsrest. Po inštalácii balíka musíte vložiť direktívu from ozekilibsrest import Configuration, Message, MessageApi do hlavičkovej časti vášho Python zdrojového kódu. To vám umožní používať triedy poskytované knižnicou ozekilibsrest. Triedu Message môžete použiť na vytvorenie SMS. Triedu MessageApi môžete použiť na odoslanie SMS na SMS bránu. SMS brána prepošle vašu správu do mobilnej siete buď prostredníctvom bezdrôtového pripojenia alebo cez internet.

Stiahnuť SendScheduledSms.py

Zdrojový kód vysvetlený v tomto článku môže byť stiahnutý, použitý a upravený bezplatne.
Stiahnuť: SendScheduledSms.py.zip (1.62Kb)

Čo je v priečinku SendScheduledSms.py?

Priečinok SendScheduledSms.py obsahuje skript Python SMS príkladu, ktorý vám ukáže, ako odosielať naplánované SMS správy pomocou Pythonu.

priečinok send scheduled sms py
Obrázok 2 - Čo je vo vnútri SendScheduledSms.py.zip

Ako nainštalovať knižnicu ozekilibsrest

Na inštaláciu knižnice ozekilibsrest musíte otvoriť príkazový riadok a použiť nasledujúci príkaz. Tým sa nainštaluje knižnica ozekilibsrest a závislosti, ktoré potrebuje.

		pip install ozekilibsrest
	

Kód 3 - Príkaz na inštaláciu knižnice ozekilibsrest

Ako nainštalovať knižnicu flask

Ak chcete nainštalovať knižnicu flask, musíte otvoriť príkazový riadok a použiť nasledujúci príkaz. Týmto príkazom sa nainštaluje knižnica flask a jej závislosti.

		pip install flask
	

Kód 4 - Príkaz na inštaláciu knižnice flask

Ako odoslať naplánované SMS z Pythonu (Rýchle kroky)

Na odoslanie naplánovaných SMS z Pythonu:

  1. Stiahnite a nainštalujte Python
  2. Nainštalujte knižnicu ozekilibsrest pomocou pip alebo codna
  3. Stiahnite súbor SendScheduledSms.py.zip
  4. Extrahujte súbor .zip z priečinka Stiahnuté
  5. Otvorte súbor SendScheduledSms.py v ľubovoľnom textovom editore
  6. Spustite Ozeki SMS Gateway
  7. Vytvorte používateľa HTTP API v Ozeki
  8. Spustite kód SendScheduledSms.py pomocou príkazového riadku na odoslanie testovacích SMS správ
  9. Skontrolujte priečinok Odoslané v Ozeki SMS Gateway
Nainštalujte Ozeki SMS Gateway a vytvorte používateľa HTTP API

Na odosielanie SMS z Pythonu musíte najprv nainštalovať Ozeki SMS Gateway. SMS bránu je možné nainštalovať na rovnakom počítači, kde vyvíjate svoj kód v Pythone. Po inštalácii je ďalším krokom pripojenie Ozeki SMS Gateway k mobilnej sieti. Môžete vytvorenie používateľa HTTP SMS API. Vytvorte používateľa s používateľským menom "http_user" a heslom "qwe123", aby príklad fungoval bez úprav.

Po nastavení prostredia môžete spustiť svoj kód v Pythone.

URL HTTP API na odosielanie SMS z Pythonu

Na odosielanie SMS z Pythonu musí váš Python odoslať HTTP požiadavku na SMS bránu. API URL je uvedené nižšie. Upozorňujeme, že IP adresa (127.0.0.1) by mala byť nahradená IP adresou vašej SMS brány. Ak je Ozeki SMS Gateway nainštalovaný na rovnakom počítači, kde beží vaša aplikácia na odosielanie SMS v Pythone, môže to byť 127.0.0.1. Ak je nainštalovaný na inom počítači, mala by to byť IP adresa toho počítača.

		http://127.0.0.1:9509/api?action=rest
	
Autentizácia HTTP na odosielanie SMS z Pythonu

Na autentizáciu klienta SMS v Pythone musíte odoslať používateľské meno a heslo v reťazci zakódovanom do base64 na server v HTTP požiadavke. Používa sa formát: base64(používateľské meno+":"+heslo). V Pythone môžete na toto kódovanie použiť nasledujúci kód:

	    def create_authorization_header(username, password):
	        username_password = f'{ username }:{ password }'
	        return f'Basic { b64encode(username_password.encode()).decode() }'
	

Napríklad, ak zakódujete používateľské meno 'http_user' a heslo 'qwe123', dostanete nasledujúci reťazec zakódovaný do base64: aHR0cF91c2VyOnF3ZTEyMw==.

Hlavička HTTP požiadavky na odosielanie SMS z Pythonu

Na odosielanie SMS správ musíte do hlavičky HTTP požiadavky zahrnúť nasledujúce riadky. Upozorňujeme, že obsahujeme hlavičku Content-Type a Authorization.

		Content-Type: application/json
		Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
	
HTTP požiadavka na odosielanie SMS z Pythonu

Na odoslanie SMS správ vaša aplikácia v Pythone odošle HTTP požiadavku podobnú tej nižšie. Upozorňujeme, že táto požiadavka obsahuje časť hlavičky HTTP a časť tela HTTP. Telo HTTP je reťazec dát zakódovaný do JSON. Obsahuje čísla príjemcov a texty správ.

POST /api?action=sendmsg HTTP/1.1
Host: 127.0.0.1:9509
User-Agent: python-requests/2.26.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
Content-Type: application/json
Content-Length: 349

{
	"messages": [
		{
			"message_id": "cd0067bf-0797-489e-8796-325dacc68552",
			"to_address": "+3620111111",
			"text": "Hello world!",
			"create_date": "2021-09-17T08:20:15",
			"valid_until": "2021-09-24T08:20:15",
			"time_to_send": "2021-09-17T08:25:00",
			"submit_report_requested": true,
			"delivery_report_requested": true,
			"view_report_requested": true,
			"tags": []
		}
	]
}
	
HTTP odpoveď prijatá príkladom SMS v Pythone

Keď SMS brána prijme túto požiadavku, vygeneruje HTTP odpoveď. HTTP odpoveď bude obsahovať stavový kód, ktorý indikuje, či bola požiadavka na odoslanie SMS úspešná alebo nie. Tiež vráti štruktúru zakódovanú do JSON, ktorá vám poskytne užitočné informácie o odoslaní správy.

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json; charset=utf8
Last-Modified: Thu, 16 Sep 2021 09:14:44 GMT
Server: 10/10.3.124 Microsoft-HTTPAPI/2.0
User-Agent: OZEKI 10.3.124 (www.myozeki.com)
Access-Control-Allow-Origin: *
Date: Fri, 17 Sep 2021 06:20:15 GMT

{
  "http_code": 200,
  "response_code": "SUCCESS",
  "response_msg": "Messages queued for delivery.",
  "data": {
    "total_count": 1,
    "success_count": 1,
    "failed_count": 0,
    "messages": [
      {
        "message_id": "cd0067bf-0797-489e-8796-325dacc68552",
        "from_station": "%",
        "to_address": "+3620111111",
        "to_station": "%",
        "text": "Hello world!",
        "create_date": "2021-09-17 08:20:15",
        "valid_until": "2021-09-24 08:20:15",
        "time_to_send": "2021-09-17 08:25:00",
        "submit_report_requested": true,
        "delivery_report_requested": true,
        "view_report_requested": false,
        "tags": [
          {
            "name": "Type",
            "value": "SMS:TEXT"
          }
        ],
        "status": "SUCCESS"
      }
    ]
  }
}
	
Príklad SMS v Pythone: SendScheduledSms.py

Ako stiahnuť projekt SendScheduledSMS.py (Video návod)

V nasledujúcom videu sa dozviete, ako môžete použiť Python projekt SendScheduledSms.py. Video začne na stiahnuteľnej stránke a prevedie vás až k otvorenej panelu editora kódu. Dozviete sa, ako stiahnuť a otvoriť súbor s kódom. Video je dlhé len 34 sekúnd, ale obsahuje všetky potrebné informácie, ktoré potrebujete na úspešné použitie príkladového súboru s kódom.

Video 1 - Ako stiahnuť a otvoriť riešenie vyššie (Video návod)

Príkladový kód nižšie je súčasťou priečinka SendScheduledSms.py.zip.

sendscheduledsms.py
Obrázok 3 - SendScheduledSms.py

Na odoslanie SMS s vyššie uvedeným príkladovým projektom musíte spustiť python skript pomocou príkazu python SendSms.py. Po spustení skriptu si všimnete, že príkazový riadok hovorí, že musíte otvoriť http://127.0.0.1:5000 url. Tam uvidíte svoj prvý projekt Python Flask, ktorý je schopný odoslať naplánovanú SMS do Ozeki SMS Gateway.

send scheduled sms python file
Obrázok 4 - Výstup skriptu SendScheduledSms.py

send scheduled sms html file
Obrázok 5 - Výsledok skriptu SendScheduledSms.py

Ako používať projekt (Video návod)

V nasledujúcom klipu uvidíte, ako môžete spustiť Python kód SendScheduledSms.py. Video začne s otvoreným kódom a prevedie vás až k záložke udalostí s záznamom odoslanej správy. Uvidíte, ako spustiť kód a čo sa stane, ak bol kód vykonaný. Video je o niečo dlhšie ako minúta, ale obsahuje všetky informácie, ktoré sú potrebné na spustenie projektu.

Video 2 - Ako používať skript SendScheduledSms.py (Video návod)

Záver

Tento článok ukázal kroky naplánovaného odosielania SMS v jednom požiadavku z Pythonu.

S týmito vedomosťami a poskytnutými nástrojmi by ste mali byť schopní osloviť niekoľko zákazníkov jedným kódom. Ozeki SMS Gateway má dôležitú úlohu v tomto procese, pretože tento program organizuje doručenie správ. Ozeki SMS Gateway pracuje s vysokou kvalitou a výkonom, čo vám umožňuje odoslať až 1000 SMS za sekundu.

Pokračujte v učení na stránkach tutoriálov Ozeki, kde si môžete prečítať o témach ako Prijímanie SMS v Pythone.

Teraz už len stačí stiahnuť Ozeki SMS Gateway a začať pracovať!

More information