SMS-gateway
Bruger |
Send med HTTP / HTTPSAlle afsendelser med HTTPS skal ske til flg. URL: Alle kald skal laves som HTTP GET eller HTTP POST.
Følgende variabler er mulige.
Som svar på HTTP kaldet modtages f.eks. følgende: OK|12345|Sendt til SMS-gateway OK|12346|Sendt til SMS-gateway Der vil optræde en linie for hver modtager. Første parameter er enten "OK" eller "ERROR". Ved "ERROR" medsendes en fejl-besked som sidste parameter. Bemærk at vores SMS-gateway afviser gentagne afsendelser inden for 60 sekunder, dvs. hvor alle parametre er ens som det tidligere kald.
Desuden afviser vores SMS-gateway hvis der sendes mere end 10 beskeder til samme nummer inden for 5 minutter.
Encodingen er ISO-8859-1.
Funktion til afsendelse af SMS:
function send_sms($mobile, $message, $sender) { $user = "Dit brugernavn her"; $pass = "Dit password her"; $gsm_id = ""; // Angiv GSM-ID, hvis du vil sende via hosted simkort $url_ok = ""; // Angiv en URL her, hvis vi skal kalde den, når SMS er leveret $url_error = ""; // Angiv en URL her, hvis vi skal kalde den, hvis SMS fejler $response = file_get_contents("https://sms.stadel.dk/send.php" . "?user=" . urlencode($user) . "&pass=" . urlencode($pass) . "&mobile=" . urlencode($mobile) . "&message=" . urlencode($message) . "&sender=" . urlencode($sender) . "&gsm_id=" . urlencode($gsm_id) . "&url_ok=" . urlencode($url_ok) . "&url_error=" . urlencode($url_error)); if (preg_match("/^OK\|([0-9]+)\|(.*)$/", $response, $array)) { // Afsendelse OK $id = $array[1]; // Her har du vores ID for denne SMS, gem det, hvis du har behov for det return true; } elseif (preg_match("/^ERROR\|([0-9]+)\|(.*)$/", $response, $array)) { // Afsendelse fejlet $error = $array[2]; return $error; } else { // Ukendt svar fra server $error = "Ukendt svar"; return $error; } }Anvendelse af funktionen: $result = send_sms("4512345678", "Hej dette er en test-SMS. Har du fået den?", "4512345678"); if ($result === true) { echo("SMS afsendt korrekt"); } else { echo("SMS ikke afsendt korrekt. ($result)"); }
Funktion til afsendelse af SMS (kan med fordel placeres i et modul ved anvendelse i Access):
Private Function url_encode(ByVal str As String) As String Dim newstr, chr As String Dim i As Integer For i = 1 To Len(str) chr = Mid(str, i, 1) Select Case Asc(chr) Case 32 newstr = newstr & "+" Case 48 To 57, 65 To 90, 97 To 122 newstr = newstr & chr Case Else newstr = newstr & "%" & Right("0" & Hex(Asc(chr)), 2) End Select Next i url_encode = newstr End Function Public Function send_sms(ByVal mobile As String, ByVal message As String, ByVal sender As String) As String Dim user, pass, gsm_id, url_ok, url_error, response As String Dim ohttp As Object user = "Dit brugernavn her" pass = "Dit password her" gsm_id = "" ' Angiv GSM-ID, hvis du vil sende via hosted simkort url_ok = "" ' Angiv en URL her, hvis vi skal kalde den, når SMS er leveret url_error = "" ' Angiv en URL her, hvis vi skal kalde den, hvis SMS fejler On Error GoTo httperror Set ohttp = CreateObject("MSXML2.XMLHTTP") ohttp.Open "GET", "https://sms.stadel.dk/send.php" & _ "?user=" & url_encode(user) & _ "&pass=" & url_encode(pass) & _ "&mobile=" & url_encode(mobile) & _ "&message=" & url_encode(message) & _ "&sender=" & url_encode(sender) & _ "&gsm_id=" & url_encode(gsm_id) & _ "&url_ok=" & url_encode(url_ok) & _ "&url_error=" & url_encode(url_error) & _ "&" & CStr(Timer), True ohttp.SetRequestHeader "Connection", "Close" ohttp.Send ' Venter på HTTP objektet får svar iTimeout = Timer + 3 ' Du kan ændre timeout, hvis det er nødvendigt While iTimeout > Timer And ohttp.ReadyState <> 4 DoEvents Wend If (ohttp.Status = 200 Or ohttp.Status = 201) Then ' HTTP kald er gået godt If (Left(ohttp.responseText, 3) = "OK|") Then ' Afsendelse OK send_sms = "OK" ElseIf (Left(ohttp.responseText, 8) = "ERROR|0|") Then ' Afsendelse fejlet send_sms = ohttp.responseText Else ' Ukendt svar fra server send_sms = "Ukendt svar" End If Else ' Ukendt svar fra server send_sms = "Serverfejl " & CStr(ohttp.Status) End If Set ohttp = Nothing Exit Function httperror: ' Uventet fejl Set ohttp = Nothing send_sms = Err.Description End FunctionAnvendelse af funktionen: Dim result As String result = send_sms("4512345678", "Hej dette er en test-SMS. Har du fået den?", "4512345678") If (result = "OK") Then MsgBox ("SMS afsendt korrekt") Else MsgBox ("SMS ikke afsendt korrekt. (" & result & ")") End If
Funktion til afsendelse af SMS:
import urllib.request def send_sms(mobile, message, sender): user = "Dit brugernavn her" passw = "Dit password her" gsm_id = "" # Angiv GSM-ID, hvis du vil sende via hosted simkort url_ok = "" # Angiv en URL her, hvis du vil kalde den, hvis SMS er leveret url_error = "" # Angiv en URL her, hvis du vil kalde den, hvis SMS fejler params = { "user": user, "pass": passw, "mobile": mobile, "message": message, "sender": sender, "gsm_id": gsm_id, "url_ok": url_ok, "url_error": url_error, "utf8": "true" } data = urllib.parse.urlencode(params) data = data.encode("ascii") req = urllib.request.Request("https://sms.stadel.dk/send.php", data) with urllib.request.urlopen(req) as response: body = response.read().decode("iso-8859-1") if (body[0:3] == "OK|"): return True elif (body[0:6] == "ERROR|"): return body[8:] else: return "Ukendt svar: " + bodyAnvendelse af funktionen: result = send_sms("4512345678", "Dette er en test - har du modtaget den?", "4512345678") if result == True: print("SMS afsendt korrekt") else: print("SMS ikke afsendt korrekt. (" + result + ")") |