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.
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()
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>
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.
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
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
Za slanje SMS-a iz Pythona:
- Preuzmite i instalirajte Python
- Instalirajte ozekilibsrest biblioteku koristeći pip ili codna
- Instalirajte flask biblioteku koristeći pip ili codna
- Instalirajte HTTP API korisnika
- Omogućite bilježenje komunikacijskih događaja na kartici Napredno
- Preuzmite SendSMS.py
- Otvorite SendSms.py datoteku u Windows Notepadu
- Promijenite podatke prema svojim potrebama
- Pokrenite Ozeki SMS Gateway aplikaciju
- Pokrenite SendSms.py Python kod otvaranjem
- 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.
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.
Python SMS primjer: SendSms.py
Primjer koda u nastavku dio je datoteke SendSms.py.zip.
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.
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.
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.
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.
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
- Python flask pošalji SMS s HTTP REST API-jem (primjer koda)
- Python flask pošalji više SMS-ova s HTTP REST API-jem (primjer koda)
- Python flask zakazani SMS s HTTP REST API-jem (primjer koda)
- Python flask primi SMS s HTTP REST API-jem (primjer koda)
- Python flask izbriši SMS s HTTP REST API-jem (primjer koda)
- Kako preuzeti najnoviju Python flask SMS biblioteku s Githuba