Jak odeslat více SMS z Python Flask

Nejjednodušší způsob, jak odeslat SMS z Python Flask, 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 odešle tuto SMS na telefon příjemce a vrátí HTTP 200 OK odpověď na váš požadavek.

jak odeslat více SMS z Python Flask
Obrázek 1 - Jak odeslat více SMS z Python Flask

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

Ukázka Python kódu pro SMS níže ukazuje, jak můžete odesílat SMS pomocí HTTP REST SMS API Ozeki SMS Gateway s využitím knihovny Python ozekilibsrest. Tato knihovna je poskytována zdarma a můžete ji používat a upravovat v jakémkoli svém projektu.

SendMultipleSms.py

		from flask import Flask, render_template, request
		from ozekilibsrest import Configuration, Message, MessageApi
		
		app = Flask(__name__)
		
		configuration = Configuration(
		    username="http_user",
		    password="qwe123",
		    api_url="http://127.0.0.1:9509/api"
		)
		
		api = MessageApi(configuration)
		
		messages_to_send = []
		logs = []
		
		
		@app.route('/', methods=['GET', 'POST'])
		def index():
		    if request.method == 'POST':
		        if request.form['submit'] == 'SEND' and len(messages_to_send) > 0:
		            log = api.send(messages_to_send)
		            logs.append(log)
		            messages_to_send.clear()
		        elif request.form['submit'] == 'ADD':
		            message = Message(
		                to_address=request.form['to_address'],
		                text=request.form['text']
		            )
		            messages_to_send.append(message)
		    return render_template('SendMultipleSms.html', logs=logs, messages=messages_to_send)
		
		
		if __name__ == '__main__':
		    app.run()
	

Kód 1 - SendMultipleSms.py

SendMultipleSms.html

		<!DOCTYPE html>
		<html lang="en">
		    <head>
		        <meta charset="UTF-8">
		        <title>Odeslat více 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: 8vh; margin-left: 30%;
		        display: flex; flex-direction: column; height: 30vh;
		        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>
		            <input class="btn btn-primary"
		                   style="font-weight: 600;"
		                   type="submit"
		                   name="submit"
		                   value="ADD">
		        </form>
		        <ul style="width: 40%; margin-left: 30%;
		        margin-bottom: 30px; height: 20vh; overflow-y: scroll;"
		            class="list-group card">
		            <li class="list-group-item card"><b>Zprávy:</b></li>
		            {% if messages %}
		                {%for message in messages%}
		                    <li class="list-group-item">{{ message }}</li>
		                {%endfor%}
		            {% endif  %}
		        </ul>
		        <form method="POST" class="form-group"
		        style="width: 40%; margin-left: 30%;
		            display: flex; flex-direction: column;
		            height: auto; justify-content: space-evenly;">
		            <input class="btn btn-primary"
		                   style="font-weight: 600;"
		                   type="submit"
		                   name="submit"
		                   value="SEND">
		        </form>
		        <ul style="width: 40%; margin-left: 30%;
		        margin-top: 30px; height: 20vh;
		        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 - SendMultipleSms.html

Jak použít příklad Python Flask SMS:

Tento příklad Python Flask SMS lze použít v jakékoli Python aplikaci. Pro jeho použití je nutné nainstalovat balíček ozekilibsrest pomocí příkazu pip install ozekilibsrest a balíček flask pomocí příkazu pip install flask. Po instalaci balíčků musíte do hlavičky svého Python kódu přidat direktivy from ozekilibsrest import Configuration, Message, MessageApi a from flask import Flask, render_template, request. 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 přepošle vaši zprávu do mobilní sítě buď přes bezdrátové připojení nebo přes internet.

Stáhnout SendMultipleSms.py

Zdrojový kód vysvětlený v tomto článku lze stáhnout, použít a upravit zdarma.
Stáhnout: SendMultipleSms.py.zip (1.65Kb)

Co je ve složce SendMultipleSms.py?

Složka SendMultipleSms.py obsahuje skript příkladu Python Flask pro SMS, který vám ukáže, jak odeslat více SMS zpráv pomocí Pythonu.

send multiple sms py directory
Obrázek 2 - Co je uvnitř SendMultipleSms.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 se nainstaluje knihovna ozekilibsrest a její závislosti.

		pip install ozekilibsrest
	

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

Jak nainstalovat knihovnu flask

Pro instalaci knihovny 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 2 - Příkaz pro instalaci knihovny flask

Jak odeslat více SMS z Python flask (Rychlé kroky)

Pro odeslání více SMS z Python flask:

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

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

Pro odesílání SMS z Pythonu je nejprve nutné 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 vytvoření HTTP SMS API uživatelského účtu. 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.

HTTP API URL 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ána na stejném počítači, kde běží Python SMS aplikace, může to být 127.0.0.1. Pokud je nainstalována 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 autentizaci 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 použít následující kód pro toto kódování:

	    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==.

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

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

		Content-Type: application/json
		Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
	
HTTP požadavek pro odeslání SMS z Pythonu

Pro odeslání SMS zpráv bude vaše Python aplikace odesílat HTTP požadavek podobný níže uvedenému. Všimněte si, že tento požadavek obsahuje část HTTP hlavičky a část HTTP těla. Tělo HTTP je řetězec dat zakódovaný v JSON. 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: 1027
		
		{
			"messages": [
				{
					"message_id": "cf609600-7269-46e3-ab6e-87ef5a99f848",
					"to_address": "+3620111111",
					"text": "Hello world 1!",
					"create_date": "2021-09-10T15:19:20",
					"valid_until": "2021-09-17T15:19:20",
					"time_to_send": "2021-09-10T15:19:20",
					"submit_report_requested": true,
					"delivery_report_requested": true,
					"view_report_requested": true,
					"tags": []
				},
				{
					"message_id": "8d93e43a-b4dc-493f-a243-10db358a58ec",
					"to_address": "+36202222222",
					"text": "Hello world 2!",
					"create_date": "2021-09-10T15:19:20",
					"valid_until": "2021-09-17T15:19:20",
					"time_to_send": "2021-09-10T15:19:20",
					"submit_report_requested": true,
					"delivery_report_requested": true,
					"view_report_requested": true,
					"tags": []
				},
				{
					"message_id": "35e56437-15e4-4ee7-9ad4-dfc00a8f7c3a",
					"to_address": "+36203333333",
					"text": "Hello world 3!",
					"create_date": "2021-09-10T15:19:20",
					"valid_until": "2021-09-17T15:19:20",
					"time_to_send": "2021-09-10T15:19:20",
					"submit_report_requested": true,
					"delivery_report_requested": true,
					"view_report_requested": true,
					"tags": []
				}
			]
		}
	

HTTP odpověď přijatá Python příkladem SMS

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í strukturu zakódovanou v JSON, která poskytuje 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: Fri, 10 Sep 2021 10:22:37 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, 10 Sep 2021 13:19:19 GMT
		
		{
		  "http_code": 200,
		  "response_code": "SUCCESS",
		  "response_msg": "Zprávy zařazeny do fronty k odeslání.",
		  "data": {
		    "total_count": 3,
		    "success_count": 3,
		    "failed_count": 0,
		    "messages": [
		      {
		        "message_id": "cf609600-7269-46e3-ab6e-87ef5a99f848",
		        "from_station": "%",
		        "to_address": "+3620111111",
		        "to_station": "%",
		        "text": "Hello world 1!",
		        "create_date": "2021-09-10 15:19:20",
		        "valid_until": "2021-09-17 15:19:20",
		        "time_to_send": "2021-09-10 15:19:20",
		        "submit_report_requested": true,
		        "delivery_report_requested": true,
		        "view_report_requested": false,
		        "tags": [
		          {
		            "name": "Type",
		            "value": "SMS:TEXT"
		          }
		        ],
		        "status": "SUCCESS"
		      },
		      {
		        "message_id": "8d93e43a-b4dc-493f-a243-10db358a58ec",
		        "from_station": "%",
		        "to_address": "+36202222222",
		        "to_station": "%",
		        "text": "Hello world 2!",
		        "create_date": "2021-09-10 15:19:20",
		        "valid_until": "2021-09-17 15:19:20",
		        "time_to_send": "2021-09-10 15:19:20",
		        "submit_report_requested": true,
		        "delivery_report_requested": true,
		        "view_report_requested": false,
		        "tags": [
		          {
		            "name": "Type",
		            "value": "SMS:TEXT"
		          }
		        ],
		        "status": "SUCCESS"
		      },
		      {
		        "message_id": "35e56437-15e4-4ee7-9ad4-dfc00a8f7c3a",
		        "from_station": "%",
		        "to_address": "+36203333333",
		        "to_station": "%",
		        "text": "Hello world 3!",
		        "create_date": "2021-09-10 15:19:20",
		        "valid_until": "2021-09-17 15:19:20",
		        "time_to_send": "2021-09-10 15:19:20",
		        "submit_report_requested": true,
		        "delivery_report_requested": true,
		        "view_report_requested": false,
		        "tags": [
		          {
		            "name": "Type",
		            "value": "SMS:TEXT"
		          }
		        ],
		        "status": "SUCCESS"
		      }
		    ]
		  }
		}
	

Python příklad SMS: SendMultipleSms.py

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

V následujícím videu se dozvíte, jak můžete použít Python projekt SendMultipleSms.py. Video začne na stránce ke stažení a provede vás až k otevřenému panelu editoru kódu. Naučíte se, jak stáhnout a otevřít soubor s kódem. Video je dlouhé pouze 54 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 SendMultipleSms.py.zip.

jak odeslat více SMS pomocí Pythonu
Obrázek 3 - SendMultipleSms.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 říká, ž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 více SMS zpráv do Ozeki SMS Gateway.

výstup Python skriptu
Obrázek 4 - Výstup Python skriptu SendMultipleSms.py

výsledek Python skriptu
Obrázek 5 - Webová stránka SendMultipleSms.html

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

V následujícím klipu uvidíte, jak můžete spustit Python kód SendMultipleSms.py. Video začne 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 kratší než 1 minuta, ale obsahuje všechny informace potřebné k spuštění projektu.

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

Závěr

Tento článek ukázal kroky pro odesílání více SMS v jednom požadavku z Python Flask.

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 odeslat 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 mazání v Pythonu.

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

More information