Kako poslati SMS iz Python flask-a

Najjednostavniji način za slanje SMS-a iz Python flask-a je korištenje ugrađenog HTTP/Rest SMS API-ja Ozeki SMS Gateway-a. Kada koristite ovaj API, slat ćete SMS poruke slanjem HTTP Post zahtjeva SMS gateway-u. HTTP Post zahtjev će sadržavati poruku formatiranu u json formatu. SMS gateway će poslati ovaj SMS na telefonski broj primatelja i vratit će HTTP 200 OK odgovor na vaš zahtjev.

kako poslati sms iz python flask-a
Slika 1 - Kako poslati SMS iz Python flask-a

Python kod za slanje SMS-a na mobilni telefon

Python SMS primjer koda ispod pokazuje kako možete poslati SMS koristeći http rest SMS API Ozeki SMS Gateway-a koristeći Python ozekilibsrest biblioteku. Ova biblioteka vam je dostupna besplatno i možete je koristiti i mijenjati u bilo kojem od vaših projekata.

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

Kod 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>
	

Kod 2 - SendSms.html

Kako koristiti Python SMS primjer:

Ovaj Python flask SMS primjer može se koristiti u bilo kojoj Python aplikaciji. Da biste ga koristili, morate instalirati ozekilibsrest paket s naredbom pip install ozekilibsrest i flask paket s naredbom pip install flask. Nakon što su paketi instalirani, morate dodati from ozekilibsrest import Configuration, Message, MessageApi direktivu i from flask import Flask, render_template, request u zaglavlje vašeg Python izvornog koda. To će vam omogućiti korištenje klasa koje pruža ozekilibsrest biblioteka. Možete koristiti klasu Message za kreiranje SMS-a. Možete koristiti klasu MessageApi za slanje SMS-a SMS gateway-u. SMS gateway će proslijediti vašu poruku mobilnoj mreži bilo putem bežične veze ili putem interneta.

Preuzmite SendSms.py

Izvorni kod objašnjen u ovom članku može se besplatno preuzeti, koristiti i mijenjati.
Preuzimanje: SendSms.py.zip (1.42Kb)

Što se nalazi u SendSms.py mapi?

SendSms.py mapa sadrži skriptu Python SMS primjera koja će vam pokazati kako poslati više SMS poruka koristeći Python.

send sms py direktorij
Slika 2 - Što se nalazi unutar SendSms.py.zip

Kako instalirati ozekilibsrest biblioteku

Da biste instalirali ozekilibsrest biblioteku, morate otvoriti komandnu liniju i koristiti sljedeću naredbu. Ovo će instalirati ozekilibsrest biblioteku i ovisnosti koje su joj potrebne.

		pip install ozekilibsrest
	

Kod 3 - Naredba za instalaciju ozekilibsrest biblioteke

Kako instalirati flask biblioteku

Da biste instalirali flask biblioteku, morate otvoriti komandnu liniju i koristiti sljedeću naredbu. Ovo će instalirati flask biblioteku i ovisnosti koje su joj potrebne.

		pip install flask
	

Kod 4 - Naredba za instalaciju flask biblioteke

Kako poslati SMS iz Pythona (Jednostavne smjernice)

Za slanje SMS-a iz Pythona:

  1. Preuzmite i instalirajte Python
  2. Instalirajte ozekilibsrest biblioteku koristeći pip ili codna
  3. Instalirajte flask biblioteku koristeći pip ili codna
  4. Instalirajte HTTP API korisnika
  5. Omogućite bilježenje komunikacijskih događaja na kartici Napredno
  6. Preuzmite SendSMS.py
  7. Otvorite SendSms.py datoteku u Windows Notepadu
  8. Promijenite podatke prema svojim potrebama
  9. Pokrenite Ozeki SMS Gateway aplikaciju
  10. Pokrenite SendSms.py Python kod otvaranjem
  11. Provjerite zapisnike kako biste vidjeli je li SMS poslan

Instalirajte Ozeki SMS Gateway i stvorite HTTP API korisnika

Da biste mogli slati SMS iz Pythona, prvo morate instalirati Ozeki SMS Gateway. SMS gateway se može instalirati na istom računalu na kojem razvijate svoj Python kod u Python IDLE-u ili Notepadu. Nakon instalacije, sljedeći korak je povezivanje Ozeki SMS Gatewaya s mobilnom mrežom. Možete poslati testni SMS iz Ozeki GUI-a kako biste potvrdili da vaša mobilna mrežna veza radi. Posljednji korak za pripremu vašeg okruženja je stvaranje HTTP SMS API korisničkog računa. Stvorite korisnika s korisničkim imenom "User1" i lozinkom "qwe123" kako bi primjer radio bez izmjena.

Nakon što je okruženje postavljeno, možete pokrenuti svoj Python kod.

HTTP API URL za slanje SMS-a iz Pythona

Da biste poslali SMS iz Pythona, vaš Python će morati poslati HTTP zahtjev SMS gatewayu. API URL je prikazan u nastavku. Imajte na umu da IP adresu (127.0.0.1) treba zamijeniti IP adresom vašeg SMS gatewaya. Ako je Ozeki SMS Gateway instaliran na istom računalu na kojem se pokreće Python SMS aplikacija, ovo može biti 127.0.0.1. Ako je instaliran na drugom računalu, treba biti IP adresa tog računala.

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

HTTP autentifikacija za slanje SMS-a iz Pythona

Da biste autentificirali Python SMS klijent, morate poslati korisničko ime i lozinku u base64 kodiranom stringu na poslužitelj u HTTP zahtjevu. Korišteni format je: base64(korisničko_ime+":"+lozinka). U Pythonu možete koristiti sljedeći kod za to kodiranje:

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

Na primjer, ako kodirate korisničko ime 'http_user' i lozinku 'qwe123', dobit ćete sljedeći base64 kodirani string: aHR0cF91c2VyOnF3ZTEyMw==. Za slanje

HTTP zaglavlje zahtjeva za slanje SMS-a iz Pythona

Da biste poslali SMS poruke, morate uključiti sljedeće retke kao zaglavlja u HTTP zahtjevu. Imajte na umu da uključujemo Content-Type i Authorization zaglavlje.

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

HTTP zahtjev za slanje SMS-a iz Pythona

Da biste poslali SMS, vaša Python aplikacija će poslati HTTP zahtjev sličan onome u nastavku. Imajte na umu da ovaj zahtjev sadrži dio HTTP zaglavlja i dio HTTP tijela. HTTP tijelo je JSON kodirani podatkovni string. Sadrži broj primatelja i tekst poruke.

		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 odgovor primljen od Python SMS primjera

Nakon što SMS gateway primi ovaj zahtjev, generirat će HTTP odgovor. HTTP odgovor će sadržavati statusni kod, kako bi naznačio je li zahtjev za slanje SMS-a bio uspješan ili ne. Također će vratiti JSON kodiranu strukturu kako bi vam pružio korisne pojedinosti o slanju poruke.

		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"
		      }
		    ]
		  }
		}
	

Povežite svoj SMS gateway s mobilnom mrežom i stvorite HTTP API korisnički račun

Pretpostavljamo da ste već instalirali Ozeki SMS Gateway, i da ste ga povezali s mobilnom mrežom. Kako biste mogli slati SMS na mobilni telefon iz Pythona, morate postaviti HTTP API korisnički račun u Ozeki SMS Gatewayu.

Kreirajte novog korisnika (Video tutorial)

Ovaj video prikazuje kako postaviti novi HTTP API korisnički račun. Počet će s početnom stranicom Ozeki SMS Gatewaya i završit će s karticom Događaji novog korisnika. Video će vam pokazati kako kreirati i konfigurirati vašeg novog korisnika. Sjajna stvar u vezi ovog videa je da traje samo 30 sekundi, ali sadrži sve informacije koje su vam potrebne za kreiranje novog HTTP API korisnika.

Video 1 - Kako postaviti HTTP API korisnički račun (Video tutorial)

Kako poslati SMS iz Pythona koristeći Python SMS API (Video tutorial)

Ovaj video pokazuje kako preuzeti datoteku SendSms.py.zip s ove stranice i kako otvoriti sadržaj uključene datoteke u bilo kojem uređivaču teksta kao što je Windows Notepad. Ako pogledate video, primijetit ćete da je sadržaj SendSms.py zipa smješten na Windows radnu površinu.

Video 2 - Kako preuzeti i otvoriti primjerni projekt (Video tutorial)

Python SMS primjer: SendSms.py

Primjer koda u nastavku dio je datoteke SendSms.py.zip.

kako poslati sms s python skriptom
Slika 3 - SendSms.py

Da biste poslali SMS s gore navedenim primjernim projektom, morate pokrenuti python skriptu koristeći naredbu python SendSms.py. Nakon što se skripta pokrene, primijetit ćete da naredbeni redak kaže da morate otvoriti http://127.0.0.1:5000 URL. Tamo možete vidjeti svoj prvi Python Flask projekt, koji je u stanju poslati SMS poruku Ozeki SMS Gatewayu.

pokretanje sendsms python skripte
Slika 4 - Izlaz SendSms.py python skripte

rezultat python skripte
Slika 5 - SendSms.html web stranica

Kako provjeriti je li SMS prihvaćen od strane HTTP korisnika (Video tutorial)

Nakon što je SMS poslan, dobro je provjeriti vaš SMS gateway kako biste vidjeli što je primio. Dnevnik možete provjeriti otvaranjem detalja HTTP korisnika iz konzole za upravljanje Ozeki SMS Gatewaya. Sljedeći video pokazuje što trebate tražiti. Video će započeti s otvorenim kodom i završit će s detaljima poslane poruke. Naučit ćete kako pokrenuti projekt, kako projekt izgleda tijekom rada i kako izgleda datoteka dnevnika nakon toga. Video traje samo 42 sekunde i lako ga je razumjeti. Nećete imati problema s praćenjem.

Video 3 - Kako poslati SMS s gore navedenom Python skriptom (Video tutorial)

Kako provjeriti je li SMS poslan na mobilnu mrežu

Završni korak u provjeri postupka je pogledati dnevnike mobilne mrežne veze. Možda ćete morati uključiti bilježenje u konfiguraciji veze prije nego što pošaljete poruku kako biste vidjeli dnevnike. Ako je bilježenje uključeno, vidjet ćete broj telefona i tekst poruke koju ste poslali.

Testirajte je li zahtjev prihvaćen (Video tutorial)

U sljedećem videu vidjet ćete kako provjeriti je li SMPP klijent uspješno poslao vašu poruku. Naučit ćete kako otvoriti karticu Događaji SMPP korisnika i što trebate tražiti. Video traje samo 18 sekundi, ali bit će vrlo koristan.

Video 4 - Kako testirati je li zahtjev prihvaćen od strane SMPP klijenta (Video tutorial)

SMS primljen na telefonu (Video tutorial)

U sljedećem videu vidjet ćete kako izgleda dolazna poruka koja je poslana iz Ozeki SMS Gatewaya. Počet će s početnim ekranom Android telefona i završit će s otvorenom porukom. Traje samo 18 sekundi i možete vidjeti cijeli proces primanja poruke.

Video 5 - Kako izgleda SMS poruka primljena na mobilnom telefonu (Video tutorial)

Sažetak

Gore navedeni vodič objasnio je korake slanja SMS-a iz Python flaska. Kao što se može vidjeti, Ozeki vam daje sve potrebne alate za isporuku poruka, tako da, ako su koraci pažljivo slijedeni, slanje poruka iz Pythona više nije problem. Ozeki SMS Gateway igra ogromnu ulogu u isporuci, bez ovog programa ne biste mogli doći do mobilnih korisnika. Važno je napomenuti da Ozeki SMS Gateway radi u bilo kojoj zemlji, tako da se poruke mogu slati internacionalno s ovim rješenjem.

Ne završavajte čitanje ovdje, pregledajte Ozekijevu stranicu s tutorijalima i naučite o primanju SMS-ova u Pythonu.

Sljedeće što trebate učiniti je preuzeti Ozeki SMS Gateway i neka počne rad!

More information