Ako poslať viacero 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 potom pošle túto SMS na telefón príjemcu a vráti HTTP 200 OK odpoveď na vašu požiadavku.

ako poslať viacero SMS z python flask
Obrázok 1 - Ako poslať viacero 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 posielať SMS pomocou HTTP REST SMS API Ozeki SMS Gateway s použitím Python knižnice ozekilibsrest. Táto knižnica je poskytovaná bezplatne a môžete ju použiť a upraviť v akomkoľvek z vašich projektov.

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>Poslať viacero 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>Adresa príjemcu:</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>Sprá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>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 - SendMultipleSms.html

Ako použiť príklad Python flask SMS:

Tento príklad Python flask SMS 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. 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 potom prepošle vašu správu do mobilnej siete buď bezdrôtovým pripojením alebo cez internet.

Stiahnuť SendMultipleSms.py

Zdrojový kód vysvetlený v tomto článku je možné stiahnuť, použiť a upraviť bezplatne.
Stiahnuť: SendMultipleSms.py.zip (1.65Kb)

Čo obsahuje priečinok SendMultipleSms.py?

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

send multiple sms py directory
Obrázok 2 - Čo je vo vnútri SendMultipleSms.py.zip

Ako nainštalovať knižnicu ozekilibsrest

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

		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ým sa nainštaluje knižnica flask a jej závislosti.

		pip install flask
	

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

Ako odoslať viacero SMS z Python flask (Rýchle kroky)

Ak chcete odoslať viacero SMS z Python flask:

  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. Stiahnite súbor SendMultipleSms.py.zip
  5. Rozbaľte súbor .zip z priečinka Stiahnuté
  6. Otvorte súbor SendMultipleSms.py v ľubovoľnom textovom editore
  7. Spustite Ozeki SMS Gateway
  8. Vytvorte používateľa HTTP API v Ozeki
  9. Spustite kód SendMultipleSms.py pomocou príkazového riadku na odoslanie testovacích SMS správ
  10. Skontrolujte priečinok Odoslané v Ozeki SMS Gateway
Nainštalujte Ozeki SMS Gateway a vytvorte používateľa HTTP API

Ak chcete byť schopní odosielať 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 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 "http_user" a heslom "qwe123", aby príklad fungoval bez úprav.

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

HTTP API URL na odosielanie SMS z Pythonu

Ak chcete odosielať 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 autentifikáciu 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žitý formát je: 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 odoslanie SMS z Pythonu

Na odoslanie SMS správ vaša Python aplikácia odošle HTTP požiadavku podobnú tej nižšie. Upozorňujeme, že táto požiadavka obsahuje časť HTTP hlavičky a časť tela HTTP. Telo HTTP je reťazec dát zakódovaný v 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: 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 odpoveď prijatá Python príkladom SMS

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. Taktiež vráti štruktúru zakódovanú v JSON, ktorá poskytuje užitočné detaily o odoslaní sprá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": "Správy zaradené do fronty na odoslanie.",
		  "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 príklad SMS: SendMultipleSms.py

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

V nasledujúcom videu sa dozviete, ako môžete použiť Python projekt SendMultipleSms.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 54 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ť vyššie uvedené riešenie (Video návod)

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

ako odoslať viacero SMS pomocou Pythonu
Obrázok 3 - SendMultipleSms.py

Na odoslanie SMS pomocou vyššie uvedeného príkladové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 v Python Flask, ktorý je schopný odoslať viacero SMS správ do Ozeki SMS Gateway.

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

výsledok Python skriptu
Obrázok 5 - Webová stránka SendMultipleSms.html

Ako použiť projekt (Video návod)

V nasledujúcom klipu uvidíte, ako môžete spustiť Python kód SendMultipleSms.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 stalo, ak bol kód vykonaný. Video je o niečo kratšie ako minúta, ale obsahuje všetky informácie, ktoré sú potrebné na spustenie projektu.

Video 2 - Ako použiť skript SendMultipleSms.py (Video návod)

Záver

Tento článok ukázal kroky na odoslanie viacerých SMS v jednej požiadavke z Python Flask.

S týmito vedomosťami a poskytnutými nástrojmi by ste mali byť schopní osloviť viacerých zákazníkov jedným kódom. Ozeki SMS Gateway má dôležitú úlohu v tomto procese, pretože tento program organizuje doručovanie 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 s návodmi Ozeki, kde si môžete prečítať o témach ako mazanie v Pythone.

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

More information