Ako poslať SMS z Python flask

Najjednoduchší spôsob, ako poslať SMS z Python flask, je použiť vstavanú HTTP/Rest SMS API Ozeki SMS Gateway. Keď použijete toto API, budete posielať 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 pošle túto SMS na príjemcove telefónne číslo a vráti HTTP 200 OK odpoveď na vašu požiadavku.

ako poslať sms z python flask
Obrázok 1 - Ako poslať SMS z Python flask

Python kód na odoslanie SMS na mobil

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

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

Ako použiť Python SMS príklad:

Tento Python flask 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 a balík flask príkazom pip install flask. Po inštalácii balíkov musíte vložiť direktívu from ozekilibsrest import Configuration, Message, MessageApi a from flask import Flask, render_template, request do hlavičkovej časti vášho Python zdrojového kódu. To vám umožní používať triedy poskytované knižnicou ozekilibsrest. Môžete použiť triedu Message na vytvorenie SMS. Môžete použiť triedu MessageApi na odoslanie SMS na SMS bránu. SMS brána prepošle vašu správu do mobilnej siete buď cez bezdrôtové pripojenie alebo cez internet.

Stiahnuť SendSms.py

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

Čo je v priečinku SendSms.py?

Priečinok SendSms.py obsahuje skript Python SMS príkladu, ktorý vám ukáže, ako poslať viacero SMS správ pomocou Pythonu.

send sms py adresár
Obrázok 2 - Čo je vo vnútri SendSms.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

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

		pip install flask
	

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

Ako poslať SMS z Pythonu (Jednoduchý návod)

Ako poslať SMS z Pythonu:

  1. Stiahnite a nainštalujte Python
  2. Nainštalujte knižnicu ozekilibsrest pomocou pip alebo codna
  3. Nainštalujte knižnicu flask pomocou pip alebo codna
  4. Vytvorte používateľa HTTP API
  5. Povoľte zaznamenávanie komunikačných udalostí na karte Pokročilé
  6. Stiahnite si súbor SendSMS.py
  7. Otvorte súbor SendSms.py v poznámkovom bloku Windows
  8. Zmeňte údaje na svoje vlastné
  9. Spustite aplikáciu Ozeki SMS Gateway
  10. Spustite Python kód SendSms.py jeho otvorením
  11. Skontrolujte záznamy, či bola SMS odoslaná
Nainštalujte Ozeki SMS Gateway a vytvorte používateľa HTTP API

Ak chcete môcť posielať 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 Python kód v Python IDLE alebo Poznámkovom bloku. Po inštalácii je ďalším krokom pripojenie Ozeki SMS Gateway k mobilnej sieti. Môžete odoslať testovaciu SMS z Ozeki GUI, aby ste overili, že vaše pripojenie k mobilnej sieti funguje. Posledným krokom pri príprave vášho prostredia je vytvorenie používateľa HTTP SMS API. Vytvorte používateľa s používateľským menom "User1" a heslom "qwe123", aby príklad fungoval bez úprav.

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

URL HTTP API na odosielanie SMS z Pythonu

Ak chcete posielať SMS z Pythonu, váš Python bude musieť 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ží Python SMS aplikácia, 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
	
HTTP autentifikácia na odosielanie SMS z Pythonu

Na overenie Python SMS klienta 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==. Na odoslanie

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

Na odoslanie 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 vaša Python aplikácia odošle HTTP požiadavku podobnú nižšie uvedenej. 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 číslo príjemcu a text sprá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 odpoveď prijatá Python SMS príkladom

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
		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"
		      }
		    ]
		  }
		}
	
Pripojte svoju SMS bránu k mobilnej sieti a vytvorte používateľský účet HTTP API

Predpokladáme, že ste už nainštalovali Ozeki SMS Gateway, a že ste pripojili ho k mobilnej sieti. Aby ste mohli posielať SMS na mobilný telefón z Pythonu, musíte v Ozeki SMS Gateway nastaviť používateľský účet HTTP API.

Vytvorenie nového používateľa (Video návod)

Toto video vám ukáže, ako nastaviť nový účet HTTP API používateľa. Začína na domovskej stránke Ozeki SMS Gateway a končí na karte Udalosti nového používateľa. Video vám ukáže, ako vytvoriť a nakonfigurovať nového používateľa. Skvelé na tomto videu je, že trvá len 30 sekúnd, ale obsahuje všetky informácie potrebné na vytvorenie nového HTTP API používateľa.

Video 1 - Ako nastaviť účet HTTP API používateľa (Video návod)

Ako poslať SMS z Pythonu pomocou Python SMS API (Video návod)

Toto video vám ukáže, ako stiahnuť súbor SendSms.py.zip z tejto stránky a ako otvoriť obsah vloženého súboru v akomkoľvek textovom editore, ako je napríklad Windows Poznámkový blok. Ak si pozriete video, všimnete si, že obsah SendSms.py zipu je umiestnený na pracovnej ploche Windows.

Video 2 - Ako stiahnuť a otvoriť vzorový projekt (Video návod)

Príklad SMS v Pythone: SendSms.py

Ukážkový kód nižšie je súčasťou súboru SendSms.py.zip.

ako poslať sms pomocou python skriptu
Obrázok 3 - SendSms.py

Ak chcete poslať SMS pomocou vyššie uvedeného vzorového projektu, 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ý poslať SMS správu do Ozeki SMS Gateway.

spustenie sendsms python skriptu
Obrázok 4 - Výstup python skriptu SendSms.py

výsledok python skriptu
Obrázok 5 - Webová stránka SendSms.html

Ako skontrolovať, či SMS bola prijatá HTTP používateľom (Video návod)

Po odoslaní SMS je dobré skontrolovať svoju SMS bránu, aby ste videli, čo prijala. Protokol môžete skontrolovať otvorením podrobností HTTP používateľa v konzole na správu Ozeki SMS Gateway. Nasledujúce video vám ukáže, čo hľadať. Video začína otvoreným kódom a končí podrobnosťami odoslanej správy. Dozviete sa, ako spustiť projekt, ako projekt vyzerá počas behu a ako vyzerá protokolový súbor po jeho ukončení. Video trvá len 42 sekúnd a je ľahko zrozumiteľné. Nebudete mať problém s jeho sledovaním.

Video 3 - Ako poslať SMS pomocou vyššie uvedeného Python skriptu (Video návod)

Ako skontrolovať, či bola SMS odoslaná do mobilnej siete

Posledným krokom pri overovaní postupu je pozrieť sa na protokoly mobilného pripojenia. Možno budete musieť zapnúť protokolovanie v konfigurácii pripojenia pred odoslaním správy, aby ste videli protokoly. Ak je protokolovanie zapnuté, uvidíte telefónne číslo a text správy, ktorú ste odoslali.

Testovanie, či bola požiadavka prijatá (Video návod)

V nasledujúcom videu uvidíte, ako skontrolovať, či bol SMPP klient úspešný pri odosielaní vašej správy. Dozviete sa, ako otvoriť kartu Udalosti SMPP používateľa a čo hľadať. Video trvá len 18 sekúnd, ale bude veľmi užitočné.

Video 4 - Ako testovať, či požiadavku prijal SMPP klient (Video návod)

SMS prijatá na telefóne (Video návod)

V nasledujúcom videu uvidíte, ako vyzerá prichádzajúca správa, ktorá bola odoslaná z Ozeki SMS Gateway. Začína na domovskej obrazovke telefónu s Androidom a končí otvorenou správou. Trvá len 18 sekúnd a môžete vidieť celý proces prijatia správy.

Video 5 - Ako vyzerá SMS správa prijatá na mobilnom telefóne (Video návod)

Zhrnutie

Sprievodca vyššie vysvetlil kroky na odoslanie SMS z Python flask. Ako bolo vidieť, Ozeki vám poskytuje všetky potrebné nástroje na doručenie správ, takže ak boli kroky dôsledne dodržané, odosielanie správ z Pythonu už nie je problém. Ozeki SMS Gateway zohráva obrovskú úlohu pri doručovaní, bez tohto programu by ste sa nedostali k mobilným používateľom. Dôležité je poznamenať, že Ozeki SMS Gateway funguje v každej krajine, takže správy môžu byť odosielané medzinárodne s týmto riešením.

Neskončite čítanie tu, prehliadnite si stránku s návodmi Ozeki a dozviete sa viac o prijímaní SMS v Pythone.

Vašou ďalšou úlohou je stiahnuť si Ozeki SMS Gateway a nechať prácu začať!

More information