smsgw_uvt
SMS brána pro UVT.
| IP | 192.168.36.102:22 |
| DNS | smsgw.uvt.cz |
| verejna | 31.170.176.15 |
| root | 1:9OP05vTzsuOB |
| mysql root | 1:18bVytHaow== |
Běží tam sms gw software kannel.
Dokumentace tady.
Dokumentace sqlboxu tady.
Zprávy se posílají přes modem Cinterion MC75i.
Všechna konfigurace je v /etc/kannel
Pro povolení odesílat sms přes web interface, je potřeba přidat uživatele a povolit IP v /etc/kannel/sendsms-user.d/users.conf a povolit přístup na FW.
Odesílaní přes web
#!/bin/bash from=00420778521774 to=00420777915063 text="Test message" message=`echo "$text" | perl -MURI::Escape -ne 'chomp;print uri_escape($_),"\n"'` # normal #curl --silent -k "https://smsgw.uvt.cz:13013/cgi-bin/sendsms?username=local&password=local&from=$from&to=$to&text=$message&charset=utf-8&coding=2" > /dev/null # validity #curl --silent -k "https://smsgw.uvt.cz:13013/cgi-bin/sendsms?username=local&password=local&validity=8640&from=$from&to=$to&text=$message&charset=utf-8&coding=2" > /dev/null # directly to display #curl --silent -k "https://smsgw.uvt.cz:13013/cgi-bin/sendsms?mclass=0&username=local&password=local&from=$from&to=$to&text=$message&charset=utf-8&coding=2" > /dev/null
Nejdrřive musíme text poslat přes urlencode, abychom ho mohli poslat v URL.
V prvním případe se odešle klasická sms, ve druhém se nastavuje validity na 24h, a ve třetím se odešle sms která se rovnou zobrazí na mobilu.
Další možností odesílaní je vkládání zpráv přímo do mysql, asi vhodnější způsob, než http pří větším počtu odesílaných zpráv.
Zprávy se vkládají do tabulky send_sms a odeslané se pak přesunou do sent_sms.
Tady není potřeba pridávat uživatele do konfigurace, akorát je potřeba přidat uživatele do mysql s přístupem do db sqlbox.
Příklady stejné jako výše, akorát v php a použitím mysql.
<?php
$servername = "smsgw.uvt.cz";
$port = "3307";
$username = "username";
$password = "password";
$dbname = "sqlbox";
$from="00420778521774";
$to="00420777915063";
$text=urlencode("čřžýé");
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname, $port);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
#$sql = "INSERT INTO send_sms (momt, sender, receiver, msgdata, sms_type, coding, charset, boxc_id) VALUES ('MT', '$from', '$to', '$text', '2', '2', 'utf-8', 'sqlbox')";
# validity
#$sql = "INSERT INTO send_sms (momt, sender, receiver, msgdata, sms_type, coding, validity, charset, boxc_id) VALUES ('MT', '$from', '$to', '$text', '2', '2', '86400', 'utf-8', 'sqlbox')";
# directly to display
$sql = "INSERT INTO send_sms (momt, sender, receiver, msgdata, sms_type, mclass, coding, validity, charset, boxc_id) VALUES ('MT', '$from', '$to', '$text', '2', '0', '2', '86400', 'utf-8', 'sqlbox')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
Dále je možnost si vyžádat delivery report, tady označovaný jako DLR.
Korektní DLR o doručení na mobil je však možné jenom u komerčních sms center, při použití modemu to ohláasi akorát doručení na modem, což se ale taky nekdy může hodit.
Takže, pro vyžádání DLR je potřeba do konfigurace usera přidat dlr-url, a do URL nebo mysql přidat ještě dlr-mask.
dlr-url udává kam se pošle výsledek o doručení a dlr-mask určuje které stavy se budou odesílat.
dlr-url se může vložit i do do URL ale muí být taky urlencoded.
konfigurace může vypadat třeba takhle
dlr-url = http://localhost/dlr.php?output=%d
Script kam se pošle výsledek je potřeba přizbůsobit konkrétnímu použití, jestli se má výsledek zapisovat do db, nebo se má vykonat jiná akce.
dlr-mask je celkem dobře popsána v manuálu, takže tady jenom príklad použití.
curl --silent -k "https://smsgw.uvt.cz:13013/cgi-bin/sendsms?username=local&password=local&validity=8640&from=$from&to=$to&text=$message&charset=utf-8&coding=2&dlr-mask=31"
hodnota 31 znamená, že se budou posílat všechny statusy.
Možné statusy
1: Delivered to phone, 2: Non-Delivered to Phone, 4: Queued on SMSC, 8: Delivered to SMSC, 16: Non-Delivered to SMSC
V našem případě dostaneme při doručení status 8.