Jak odeslat 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 vydáním HTTP Post požadavku na SMS bránu. HTTP Post požadavek bude obsahovat zprávu formátovanou ve formátu json. SMS brána odešle tuto SMS na příjemcův telefon a vrátí HTTP 200 OK odpověď na váš požadavek.

jak odeslat sms z python flask
Obrázek 1 - Jak odeslat 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 odeslat 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.

SendSms.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)
		
		logs = []
		
		
		@app.route('/', methods=['GET', 'POST'])
		def index():
		    if request.method == 'POST':
		        message = Message(
		            to_address=request.form['to_address'],
		            text=request.form['text']
		        )
		        log = api.send(message)
		        logs.append(log)
		    return render_template('SendSms.html', logs=logs)
		
		
		if __name__ == '__main__':
		    app.run()
	

Kód 1 - SendSms.py

SendSms.html

		<!DOCTYPE html>
		<html lang="en">
		    <head>
		        <meta charset="UTF-8">
		        <title>Send SMS with 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: 30vh; justify-content: space-evenly;">
		            <b>To address:</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="SEND">
		        </form>
		        <ul style="width: 40%; margin-left: 30%; height: 40vh; overflow-y: scroll;"
		            class="list-group card">
		            <li class="list-group-item card"><b>Logs:</b></li>
		            {% if logs %}
		                {%for log in logs%}
		                    <li class="list-group-item">{{ log }}</li>
		                {%endfor%}
		            {% endif  %}
		        </ul>
		    </body>
		</html>
	

Kód 2 - SendSms.html

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

Tento příklad Python flask 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 a balíček flask pomocí příkazu pip install flask. Po instalaci balíčků musíte vložit direktivu from ozekilibsrest import Configuration, Message, MessageApi a from flask import Flask, render_template, request do hlavičkové části vašeho Python zdrojového 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 přepošle vaši zprávu do mobilní sítě buď přes bezdrátové připojení nebo přes internet.

Stáhnout SendSms.py

Zdrojový kód vysvětlený v tomto článku lze stáhnout a používat a upravovat zdarma.
Stáhnout: SendSms.py.zip (1.42Kb)

Co je ve složce SendSms.py?

Složka SendSms.py obsahuje skript příkladu python sms, který vám ukáže, jak odeslat více SMS zpráv pomocí Pythonu.

složka send sms py
Obrázek 2 - Co je uvnitř SendSms.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 4 - Příkaz pro instalaci knihovny flask

Jak odeslat SMS z Pythonu (Jednoduchý návod)

Pro odeslání SMS z Pythonu:

  1. Stáhněte a nainstalujte Python
  2. Nainstalujte knihovnu ozekilibsrest pomocí pip nebo codna
  3. Nainstalujte knihovnu flask pomocí pip nebo codna
  4. Vytvořte uživatele HTTP API
  5. Povolte Logování komunikačních událostí na záložce Advanced
  6. Stáhněte soubor SendSMS.py
  7. Otevřete soubor SendSms.py v poznámkovém bloku Windows
  8. Změňte data na vlastní
  9. Spusťte aplikaci Ozeki SMS Gateway
  10. Spusťte Python kód SendSms.py jeho otevřením
  11. Zkontrolujte logy, zda byla SMS odeslána

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 v Python IDLE nebo Poznámkovém bloku. 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 přípravy prostředí je vytvoření uživatele HTTP SMS API. Vytvořte uživatele s uživatelským jménem "User1" 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 odeslá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==. Pro odeslání

Hlavička HTTP 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 odesílání SMS z Pythonu

Pro odeslání SMS váš Python aplikace odešle HTTP požadavek podobný tomuto níže. Poznámka: Tento požadavek obsahuje část HTTP hlavičky a část HTTP těla. HTTP tělo je JSON kódovaný datový řetězec. Obsahuje číslo příjemce a text zprávy.

		POST /api?action=sendmsg HTTP/1.1
		Connection: Keep-Alive
		Content-Length: 336
		Content-Type: application/json
		Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
		Host: 127.0.0.1:9509
		
		{
		  "messages": [
		    {
		      "message_id": "b570dbae-3a05-456d-9dad-a02161b16f1c",
		      "to_address": "+36201111111",
		      "text": "Hello, World!",
		      "create_date": "2021-06-11 11:20:02",
		      "valid_until": "2021-06-18 11:20:02",
		      "time_to_send": "2021-06-11 11:20:02",
		      "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 s užitečnými detaily o odeslání zprávy.

		HTTP/1.1 200 OK
		User-Agent: OZEKI 10.3.116 (www.myozeki.com)
		Content-Type: application/json; charset=utf8
		Last-Modified: Fri, 11 Jun 2021 11:17:49 GMT
		Server: 10/10.3.116
		Transfer-Encoding: chunked
		
		{
		  "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": "b570dbae-3a05-456d-9dad-a02161b16f1c",
		        "from_station": "%",
		        "to_address": "+36201111111",
		        "to_station": "%",
		        "text": "Hello, World!",
		        "create_date": "2021-06-11 11:20:02",
		        "valid_until": "2021-06-18 11:20:02",
		        "time_to_send": "2021-06-11 11:20:02",
		        "submit_report_requested": true,
		        "delivery_report_requested": true,
		        "view_report_requested": false,
		        "tags": [
		          {
		            "name": "Type",
		            "value": "SMS:TEXT"
		          }
		        ],
		        "status": "SUCCESS"
		      }
		    ]
		  }
		}
	

Připojte svou SMS bránu k mobilní síti a vytvořte uživatelský účet HTTP API

Předpokládáme, že jste již nainstalovali Ozeki SMS Gateway, a že jste připojili k mobilní síti. Abyste mohli odesílat SMS na mobilní telefon z Pythonu, musíte nastavit uživatelský účet HTTP API v Ozeki SMS Gateway.

Toto video vám ukáže, jak nastavit nový účet HTTP API uživatele. Začíná na domovské stránce Ozeki SMS Gateway a končí na kartě Události nového uživatele. Video vám ukáže, jak vytvořit a nakonfigurovat nového uživatele. Skvělé na tomto videu je, že trvá pouze 30 sekund, ale obsahuje všechny informace potřebné k vytvoření nového HTTP API uživatele.

Video 1 - Jak nastavit účet HTTP API uživatele (Video návod)

Jak odeslat SMS z Pythonu pomocí Python SMS API (Video návod)

Toto video vám ukáže, jak stáhnout soubor SendSms.py.zip z této stránky a jak otevřít obsah souboru v libovolném textovém editoru, jako je například Windows Notepad. Pokud se podíváte na video, všimnete si, že obsah SendSms.py zipu je umístěn na ploše Windows.

Video 2 - Jak stáhnout a otevřít ukázkový projekt (Video návod)

Příklad SMS v Pythonu: SendSms.py

Níže uvedený ukázkový kód je součástí souboru SendSms.py.zip.

jak odeslat sms pomocí python skriptu
Obrázek 3 - SendSms.py

Pro odeslání SMS pomocí výše uvedeného ukázkového projektu musíte spustit python skript pomocí příkazu python SendSms.py. Po spuštění skriptu si všimnete, že v příkazovém řádku se zobrazí, že musíte otevřít adresu http://127.0.0.1:5000. Zde uvidíte svůj první projekt v Python Flask, který je schopen odeslat SMS zprávu do Ozeki SMS Gateway.

spuštění sendsms python skriptu
Obrázek 4 - Výstup python skriptu SendSms.py

výsledek python skriptu
Obrázek 5 - Webová stránka SendSms.html

Jak zkontrolovat, že SMS byla přijata HTTP uživatelem (Video návod)

Po odeslání SMS je dobré zkontrolovat svou SMS bránu, abyste viděli, co přijala. Protokol můžete zkontrolovat otevřením detailů HTTP uživatele v konzoli pro správu Ozeki SMS Gateway. Následující video vám ukáže, na co se zaměřit. Video začíná otevřeným kódem a končí detaily odeslané zprávy. Dozvíte se, jak projekt spustit, jak vypadá během provozu a jak vypadá protokol po jeho dokončení. Video trvá pouze 42 sekund a je snadno pochopitelné. Nebudete mít problém jej sledovat.

Video 3 - Jak odeslat SMS pomocí výše uvedeného Python skriptu (Video návod)

Jak zkontrolovat, že SMS byla odeslána do mobilní sítě

Posledním krokem při ověřování postupu je podívat se na protokoly připojení k mobilní síti. Možná budete muset před odesláním zprávy zapnout protokolování v konfiguraci připojení, abyste viděli protokoly. Pokud je protokolování povoleno, uvidíte telefonní číslo a text odeslané zprávy.

Otestujte, zda byla žádost přijata (Video návod)

V následujícím videu uvidíte, jak zkontrolovat, zda byl SMPP klient úspěšný při odesílání vaší zprávy. Dozvíte se, jak otevřít kartu Události SMPP uživatele a na co se zaměřit. Video trvá pouze 18 sekund, ale bude velmi užitečné.

Video 4 - Jak otestovat, zda byla žádost přijata SMPP klientem (Video návod)

SMS přijatá na telefonu (Video návod)

V následujícím videu uvidíte, jak vypadá příchozí zpráva, která byla odeslána z Ozeki SMS Gateway. Začíná na domovské obrazovce telefonu s Androidem a končí otevřenou zprávou. Trvá pouze 18 sekund a můžete vidět celý proces přijetí zprávy.

Video 5 - Jak vypadá SMS zpráva přijatá na mobilním telefonu (Video návod)

Shrnutí

Výše uvedený průvodce vysvětluje kroky pro odesílání SMS z Python Flasku. Jak je vidět, Ozeki vám poskytuje všechny nástroje potřebné pro doručování zpráv, takže pokud byly kroky pečlivě dodrženy, odesílání zpráv z Pythonu již není problém. Ozeki SMS Gateway hraje obrovskou roli v doručování, bez tohoto programu byste se k mobilním uživatelům nedostali. Je důležité poznamenat, že Ozeki SMS Gateway funguje v jakékoli zemi, takže zprávy lze tímto řešením odesílat i mezinárodně.

Nezastavujte se zde, projděte si stránku s návody od Ozeki a naučte se více o příjmu SMS v Pythonu.

Vaším dalším krokem by mělo být stažení Ozeki SMS Gateway a můžete začít pracovat!

More information