Hogyan küldjünk több SMS-t Python Flask-ből

A legegyszerűbb módja az SMS küldésének Python Flask-ből az Ozeki SMS Gateway beépített HTTP/Rest SMS API-jának használata. Amikor ezt az API-t használod, SMS üzeneteket küldhetsz HTTP POST kérések kiadásával az SMS gateway felé. A HTTP POST kérés egy JSON formátumban formázott üzenetet fog tartalmazni. Az SMS gateway továbbítja ezt az SMS-t a címzett telefonjára, és egy HTTP 200 OK választ küld vissza a kérésedre.

hogyan küldjünk több SMS-t Python Flask-ből
1. ábra - Hogyan küldjünk több SMS-t Python Flask-ből

Python kód SMS küldésére mobilra

Az alábbi Python SMS kód minta bemutatja, hogyan küldhetsz SMS-t az Ozeki SMS Gateway HTTP REST SMS API-jával a Python ozekilibsrest könyvtár segítségével. Ez a könyvtár ingyenesen elérhető, és bármilyen projektben felhasználhatod és módosíthatod.

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()
	

1. kód - SendMultipleSms.py

SendMultipleSms.html

		<!DOCTYPE html>
		<html lang="en">
		    <head>
		        <meta charset="UTF-8">
		        <title>Send multiple 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: 8vh; 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="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>Messages:</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>Logs:</b></li>
		            {% if logs %}
		                {%for log in logs%}
		                    <li class="list-group-item">{{ log }}</li>
		                {%endfor%}
		            {% endif  %}
		        </ul>
		    </body>
		</html>
	

2. kód - SendMultipleSms.html

A Python Flask SMS példa használata:

Ez a Python Flask SMS példa bármilyen Python alkalmazásban használható. A használathoz telepítened kell az ozekilibsrest csomagot a pip install ozekilibsrest paranccsal és a flask csomagot a pip install flask paranccsal. A csomagok telepítése után a from ozekilibsrest import Configuration, Message, MessageApi és a from flask import Flask, render_template, request direktívákat kell elhelyezned a Python forráskódod fejléc részébe. Ez lehetővé teszi az ozekilibsrest könyvtár által biztosított osztályok használatát. Az Message osztály segítségével hozhatod létre az SMS-t. Az MessageApi osztály segítségével küldheted az SMS-t az SMS gateway felé. Az SMS gateway továbbítja az üzenetedet a mobilhálózat felé vezeték nélküli kapcsolaton vagy az interneten keresztül.

SendMultipleSms.py letöltése

Az ebben a cikkben ismertetett forráskód ingyenesen letölthető, felhasználható és módosítható.
Letöltés: SendMultipleSms.py.zip (1.65Kb)

Mi található a SendMultipleSms.py mappában?

A SendMultipleSms.py mappa tartalmazza a Python Flask SMS példa szkriptjét, amely bemutatja, hogyan küldhetsz több SMS üzenetet Python használatával.

send multiple sms py directory
2. ábra - Mi található a SendMultipleSms.py.zip fájlban

Az ozekilibsrest könyvtár telepítése

Az ozekilibsrest könyvtár telepítéséhez meg kell nyitnod a parancssort és a következő parancsot kell használnod. Ez telepíti az ozekilibsrest könyvtárat és annak függőségeit.

		pip install ozekilibsrest
	

3. kód - Parancs az ozekilibsrest könyvtár telepítéséhez

A flask könyvtár telepítése

A flask könyvtár telepítéséhez meg kell nyitnod a parancssort és a következő parancsot kell használnod. Ez telepíti a flask könyvtárat és annak függőségeit.

		pip install flask
	

2. kód - Parancs a flask könyvtár telepítéséhez

Hogyan küldjünk több SMS-t Python Flask-ből (Gyors lépések)

Több SMS küldése Python Flask-ből:

  1. Töltsd le és telepítsd a Python-t
  2. Telepítsd az ozekilibsrest könyvtárat pip vagy conda használatával
  3. Telepítsd a flask könyvtárat pip vagy conda használatával
  4. Töltsd le a SendMultipleSms.py.zip fájlt
  5. Csomagold ki a .zip fájlt a Letöltések mappából
  6. Nyisd meg a SendMultipleSms.py fájlt bármilyen szövegszerkesztőben
  7. Indítsd el az Ozeki SMS Gateway-t
  8. Hozz létre egy HTTP API felhasználót az Ozeki-ben
  9. Futtasd a SendMultipleSms.py kódot a parancssorból teszt SMS üzenetek küldéséhez
  10. Ellenőrizd az Elküldött mappát az Ozeki SMS Gateway-ben

Ozeki SMS Gateway telepítése és HTTP API felhasználó létrehozása

Ahhoz, hogy SMS-t tudj küldeni Python-ból, először telepítened kell az Ozeki SMS Gateway-t. Az SMS gateway telepíthető ugyanarra a számítógépre, ahol a Python kódodat fejleszted. A telepítés után a következő lépés az Ozeki SMS Gateway csatlakoztatása a mobilhálózathoz. HTTP SMS API felhasználói fiók létrehozása. Hozz létre egy felhasználót "http_user" felhasználónévvel és "qwe123" jelszóval, hogy a példa módosítás nélkül működjön.

Miután a környezet be van állítva, futtathatod a Python kódodat.

HTTP API URL SMS küldéséhez Python-ból

Ahhoz, hogy SMS-t küldj Python-ból, a Python alkalmazásodnak HTTP kérést kell küldenie az SMS gateway felé. Az API URL az alábbiakban látható. Fontos, hogy az IP címet (127.0.0.1) le kell cserélni az SMS gateway IP címére. Ha az Ozeki SMS Gateway ugyanarra a számítógépre van telepítve, ahol a Python SMS alkalmazás fut, ez maradhat 127.0.0.1. Ha másik számítógépre van telepítve, akkor annak az IP címét kell megadni.

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

HTTP hitelesítés SMS küldéséhez Python-ból

A Python SMS kliens hitelesítéséhez a felhasználónevet és a jelszót base64 kódolt formában kell elküldened a szerver felé egy HTTP kérésben. A használt formátum: base64(username+":"+password). Python-ban a következő kódot használhatod a kódoláshoz:

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

Például, ha a 'http_user' felhasználónevet és a 'qwe123' jelszót kódolod, a következő base64 kódolt sztringet kapod: aHR0cF91c2VyOnF3ZTEyMw==.

HTTP kérés fejléc SMS küldéséhez Python-ból

Az SMS üzenetek küldéséhez a következő sorokat kell tartalmaznia a HTTP kérés fejlécének. Figyelj arra, hogy a Content-Type és az Authorization fejléc is szerepel.

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

HTTP kérés SMS küldéséhez Python-ból

Az SMS üzenetek elküldéséhez a Python alkalmazásod egy olyan HTTP kérést fog küldeni, mint az alábbi. Figyelj arra, hogy ez a kérés tartalmaz egy HTTP fejléc részt és egy HTTP törzs részt. A HTTP törzs egy JSON kódolt adatsztring. Ez tartalmazza a címzett számát és az üzenet szövegét.

		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 válasz a Python SMS példa által kapott

Amint az SMS gateway megkapja ezt a kérést, generál egy HTTP választ. A HTTP válasz tartalmaz egy státuszkódot, amely jelzi, hogy az SMS beküldési kérés sikeres volt-e vagy sem. Ezenkívül egy JSON kódolt struktúrát is visszaad, amely hasznos részleteket nyújt az üzenet beküldéséről.

		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": "Messages queued for delivery.",
		  "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 SMS példa: SendMultipleSms.py

Hogyan töltsd le a SendMultipleSMS.py projektet (Videó útmutató)

A következő videóban megtudhatod, hogyan használhatod a SendMultipleSms.py Python projektet. A videó a letöltési oldallal kezdődik, és végigvezet a kódszerkesztő panel megnyitásáig. Megtanulod, hogyan töltsd le és nyisd meg a kódfájlt. A videó mindössze 54 másodperc hosszú, de tartalmazza az összes szükséges információt a példa kódfájl sikeres használatához.

1. videó - Hogyan töltsd le és nyisd meg a fenti megoldást (Videó útmutató)

Az alábbi példakód a SendMultipleSms.py.zip mappa része.

hogyan küldjünk több SMS-t Python használatával
3. ábra - SendMultipleSms.py

Ahhoz, hogy SMS-t küldj a fenti példa projekttel, futtatnod kell a Python szkriptet a python SendSms.py paranccsal. A szkript futása után észreveszed, hogy a parancssor azt írja, hogy meg kell nyitnod a http://127.0.0.1:5000 URL-t. Itt láthatod az első Python Flask projektet, amely képes több SMS üzenet küldésére az Ozeki SMS Gateway felé.

a python szkript kimenete
4. ábra - A SendMultipleSms.py Python szkript kimenete

a python szkript eredménye
5. ábra - A SendMultipleSms.html weboldal

Hogyan használd a projektet (Videó útmutató)

A következő klipben láthatod, hogyan indíthatod el a SendMultipleSms.py Python kódot. A videó a megnyitott kóddal kezdődik, és végigvezet az események lapig, ahol az elküldött üzenet naplója látható. Látni fogod, hogyan indítsd el a kódot és mi történik, ha a kód végrehajtódik. A videó egy kicsit kevesebb, mint 1 perc hosszú, de tartalmazza az összes szükséges információt a projekt futtatásához.

2. videó - Hogyan használd a SendMultipleSms.py szkriptet (Videó útmutató)

Összegzés

Ez a cikk bemutatta a több SMS egy kérésben történő küldésének lépéseit Python Flask-ből.

Ezzel a tudással és a biztosított eszközökkel képesnek kell lenned több ügyfél elérésére egyetlen kóddal. Az Ozeki SMS Gateway fontos szerepet játszik ebben a folyamatban, mivel ez a program szervezi az üzenetek kézbesítését. Az Ozeki SMS Gateway nagy minőségben és teljesítménnyel működik, lehetővé téve akár 1000 SMS másodpercenkénti küldését.

Folytasd a tanulást az Ozeki oktató oldalain, ahol olyan témákról olvashatsz, mint az SMS törlése Python-ban.

Most már csak annyi a dolgod, hogy letöltöd az Ozeki SMS Gateway-t és elkezdesz dolgozni!

More information