Jak naplánovat SMS v Python Flask

Nejjednodušší způsob, jak odeslat naplánované SMS z Pythonu, je použít vestavěné HTTP/REST SMS API Ozeki SMS Gateway. Když použijete toto API, budete odesílat SMS zprávy vytvořením HTTP POST požadavku na SMS bránu. HTTP POST požadavek bude obsahovat zprávu ve formátu JSON. SMS brána následně odešle tuto SMS na telefon příjemce a vrátí HTTP 200 OK odpověď na váš požadavek.

jak naplánovat sms v python flask
Obrázek 1 - Jak naplánovat SMS v Python Flask

Python kód pro odeslání naplánované SMS na mobil

Níže uvedený ukázkový kód Python pro SMS demonstruje, jak můžete odeslat naplánované SMS pomocí HTTP REST SMS API Ozeki SMS Gateway s využitím knihovny ozekilibsrest. Tato knihovna je poskytována zdarma a můžete ji používat a upravovat v jakémkoli svém projektu.

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>Odeslat naplánovanou 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>Příjemce:</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 odeslání:</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="ODESLAT">
		        </form>
		        <ul style="width: 40%; margin-left: 30%; height: 38vh; overflow-y: scroll;"
		            class="list-group card">
		            <li class="list-group-item card"><b>Logy:</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

Jak použít ukázkový kód Python pro SMS:

Tento ukázkový kód Python pro SMS lze použít v jakékoli Python aplikaci. Pro jeho použití musíte nainstalovat balíček ozekilibsrest pomocí příkazu pip install ozekilibsrest. Po instalaci balíčku musíte přidat direktivu from ozekilibsrest import Configuration, Message, MessageApi do hlavičkové části vašeho Python kódu. To vám umožní používat třídy poskytované knihovnou ozekilibsrest. Třídu Message můžete použít k vytvoření SMS. Třídu MessageApi můžete použít k odeslání SMS na SMS bránu. SMS brána následně přepošle vaši zprávu do mobilní sítě buď přes bezdrátové připojení nebo přes internet.

Stáhnout SendScheduledSms.py

Zdrojový kód popsaný v tomto článku lze zdarma stáhnout, použít a upravit.
Stáhnout: SendScheduledSms.py.zip (1.62Kb)

Co obsahuje složka SendScheduledSms.py?

Složka SendScheduledSms.py obsahuje skript ukázkového kódu Python pro SMS, který vám ukáže, jak odesílat naplánované SMS zprávy pomocí Pythonu.

složka send scheduled sms py
Obrázek 2 - Co obsahuje SendScheduledSms.py.zip

Jak nainstalovat knihovnu ozekilibsrest

Pro instalaci knihovny ozekilibsrest musíte otevřít příkazový řádek a použít následující příkaz. Tím nainstalujete knihovnu ozekilibsrest a její závislosti.

		pip install ozekilibsrest
	

Kód 3 - Příkaz pro instalaci knihovny ozekilibsrest

Jak nainstalovat knihovnu flask

Chcete-li nainstalovat knihovnu flask, musíte otevřít příkazový řádek a použít následující příkaz. Tím se nainstaluje knihovna flask a její závislosti.

		pip install flask
	

Kód 4 - Příkaz pro instalaci knihovny flask

Jak odeslat naplánované SMS z Pythonu (Rychlé kroky)

Pro odeslání naplánovaných SMS z Pythonu:

  1. Stáhněte a nainstalujte Python
  2. Nainstalujte knihovnu ozekilibsrest pomocí pip nebo codna
  3. Stáhněte soubor SendScheduledSms.py.zip
  4. Rozbalte soubor .zip ze složky Stažené
  5. Otevřete soubor SendScheduledSms.py v libovolném textovém editoru
  6. Spusťte Ozeki SMS Gateway
  7. Vytvořte uživatele HTTP API v Ozeki
  8. Spusťte kód SendScheduledSms.py pomocí příkazového řádku pro odeslání testovacích SMS zpráv
  9. Zkontrolujte složku Odeslané v Ozeki SMS Gateway

Instalace Ozeki SMS Gateway a vytvoření uživatele HTTP API

Abyste mohli odesílat SMS z Pythonu, musíte nejprve nainstalovat Ozeki SMS Gateway. SMS bránu lze nainstalovat na stejný počítač, kde vyvíjíte svůj Python kód. Po instalaci je dalším krokem připojení Ozeki SMS Gateway k mobilní síti. Můžete odeslat testovací SMS z Ozeki GUI a ověřit, zda vaše připojení k mobilní síti funguje. Posledním krokem k přípravě prostředí je vytvoření uživatele HTTP SMS API. Vytvořte uživatele s uživatelským jménem "http_user" a heslem "qwe123", aby příklad fungoval bez úprav.

Po nastavení prostředí můžete spustit svůj Python kód.

URL HTTP API pro odesílání SMS z Pythonu

Pro odesílání SMS z Pythonu musí váš Python odeslat HTTP požadavek na SMS bránu. API URL je uvedeno níže. Poznámka: IP adresa (127.0.0.1) by měla být nahrazena IP adresou vaší SMS brány. Pokud je Ozeki SMS Gateway nainstalován na stejném počítači, kde běží Python SMS aplikace, může to být 127.0.0.1. Pokud je nainstalován na jiném počítači, měla by to být IP adresa tohoto počítače.

		http://127.0.0.1:9509/api?action=rest
	

HTTP autentizace pro odesílání SMS z Pythonu

Pro ověření Python SMS klienta musíte odeslat uživatelské jméno a heslo v base64 kódovaném řetězci na server v HTTP požadavku. Použitý formát je: base64(username+":"+password). V Pythonu můžete pro toto kódování použít následující kód:

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

Například, pokud zakódujete uživatelské jméno 'http_user' a heslo 'qwe123', získáte následující base64 kódovaný řetězec: aHR0cF91c2VyOnF3ZTEyMw==.

Hlavička HTTP požadavku pro odesílání SMS z Pythonu

Pro odeslání SMS zpráv musíte do hlavičky HTTP požadavku zahrnout následující řádky. Poznámka: Zahrnujeme hlavičku Content-Type a Authorization.

		Content-Type: application/json
		Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
	

HTTP požadavek pro odesílání SMS z Pythonu

Pro odeslání SMS zpráv váš Python aplikace odešle HTTP požadavek podobný níže uvedenému. Poznámka: Tento požadavek obsahuje část HTTP hlavičky a část těla. Tělo HTTP je JSON kódovaný datový řetězec. Obsahuje čísla příjemců a texty zprá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 odpověď přijatá Python SMS příkladem

Jakmile SMS brána obdrží tento požadavek, vygeneruje HTTP odpověď. HTTP odpověď bude obsahovat stavový kód, který indikuje, zda byl požadavek na odeslání SMS úspěšný nebo ne. Také vrátí JSON kódovanou strukturu, která vám poskytne užitečné detaily o odeslání zprá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"
      }
    ]
  }
}
	

Python SMS příklad: SendScheduledSms.py

Jak stáhnout projekt SendScheduledSMS.py (Video návod)

V následujícím videu se dozvíte, jak můžete použít Python projekt SendScheduledSms.py. Video začíná na stránce ke stažení a provede vás až k otevřenému panelu editoru kódu. Dozvíte se, jak stáhnout a otevřít soubor s kódem. Video je dlouhé pouze 34 sekund, ale obsahuje všechny potřebné informace pro úspěšné použití ukázkového souboru s kódem.

Video 1 - Jak stáhnout a otevřít výše uvedené řešení (Video návod)

Ukázkový kód níže je součástí složky SendScheduledSms.py.zip.

sendscheduledsms.py
Obrázek 3 - SendScheduledSms.py

Pro odeslání SMS s výše uvedeným ukázkovým projektem musíte spustit python skript pomocí příkazu python SendSms.py. Po spuštění skriptu si všimnete, že příkazový řádek ukazuje, že musíte otevřít http://127.0.0.1:5000 url. Zde uvidíte svůj první projekt v Python Flask, který je schopen odeslat naplánovanou SMS do Ozeki SMS Gateway.

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

send scheduled sms html file
Obrázek 5 - Výsledek skriptu SendScheduledSms.py

Jak použít projekt (Video návod)

V následujícím klipu uvidíte, jak můžete spustit Python kód SendScheduledSms.py. Video začíná otevřeným kódem a provede vás až k záložce událostí s protokolem odeslané zprávy. Uvidíte, jak spustit kód a co se stane, když byl kód proveden. Video je o něco delší než 1 minuta, ale obsahuje všechny informace potřebné ke spuštění projektu.

Video 2 - Jak použít skript SendScheduledSms.py (Video návod)

Závěr

Tento článek ukázal kroky pro naplánované odesílání SMS v jednom požadavku z Pythonu.

S těmito znalostmi a poskytnutými nástroji byste měli být schopni oslovit několik zákazníků jediným kódem. Ozeki SMS Gateway má důležitou roli v tomto procesu, protože tento program organizuje doručování zpráv. Ozeki SMS Gateway pracuje s vysokou kvalitou a výkonem, což vám umožňuje odesílat až 1000 SMS za sekundu.

Pokračujte ve svém vzdělávání na výukových stránkách Ozeki, kde si můžete přečíst o tématech jako Příjem SMS v Pythonu.

Nyní už vám zbývá jen stáhnout Ozeki SMS Gateway a začít pracovat!

More information