Hinweis:
Diese Information ist nur dann wichtig für Sie, wenn Sie unser
SMS-Gateway in Ihre Homepage integrieren wollen oder aus einem
sonstigen Programm oder einer Anwendung heraus unser SMS-Gateway
ansteuern möchten.
Schnittstellen-Beschreibung:
Das SMS-Gateway lässt sich aus Ihrem Programm heraus über das Internet
über das http-Protokoll ansteuern. Dazu benötigen Sie einen GET- oder
POST-Request auf folgenden URL:
http://sms-gw.topconcepts.de/gw/sms.pl
oder alternativ mit ssl-Verschlüsselung:
https://sms-gw.topconcepts.de/gw/sms.pl
Dabei müssen Sie unbedingt Ihren HTTP-Benutzernamen, den Sie bei der Anmeldung
festlegen und Ihr persönliches SMS-Passwort mit in den Headern übertragen (www-authenticate).
Übermitteln Sie je nach Bedarf folgende Parameter:
nummer - enthält die Ziel-Rufnummer im Format +491711234567 bzw.
mehrere Ziel-Rufnummern jeweils durch Zeilenumbruch ("newline \\n" bzw. chr(13)
oder bei GET-Method %13) getrennt.
text - enthält den plain Text der zu übermittelnden Kurznachricht.
Der Text muss von Ihnen in url_encoded'er Form geliefert werden.
absender - Die Absenderkennung kann individuell gesetzt werden.
(Dazu müssen Sie zunächst die
Zusatzvereinbarung
unterzeichnen und an uns zurücksenden!)
test - Aktiviert den Debug-Modus. So können Sie in Ruhe testen, ohne
dass jedes Mal eine kostenpflichtige SMS generiert wird.
output - Unterdrückt die Ausgabe von HTML-Befehlen in der
Rückmeldung des Gateways. Dadurch wird das Parsen des Übermittlungsstatus aus Ihrer
Anwendung heraus vereinfacht.
multisms - Soll die Nachricht als verkettete SMS verschickt werden?
Dann senden Sie den Parameter multisms mit dem Wert 2-10, um Nachrichten mit
multisms*153 Zeichen
zu erhalten. Durch das Verketten von mehreren SMS werden im Hintergrund technisch mehrere
Einzel-SMS verschickt, für die Sie dann natürlich auch SMS-Credits bezahlen müssen.
Beispiel-Programme:
Listing in php
(erfordert curl, compile --with-curl=/usr !)
<?
$user = "benutzer"; # Account User
$password = "secret"; # Account Passwort
$nummer = "+491710000000"; # Ziel-Rufnummer
$text = "1, 2, 3 --- dies ist ein Test!"; # SMS-Nachricht Text
#### Ab hier nichts mehr ändern ####
$userpwd = "$user:$password";
$nummer = urlencode($nummer);
$text = urlencode($text);
$ch = curl_init ();
curl_setopt ($ch, CURLOPT_USERPWD, $userpwd);
curl_setopt ($ch, CURLOPT_URL, "http://sms-gw.topconcepts.de/gw/sms.pl");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, "nummer=$nummer&text=$text");
$status=curl_exec ($ch);
# Die Variable $status können Sie jetzt auslesen, um den
# Status des Requests abzufragen
curl_close ($ch);
?>
Listing in Perl:
(Die benötigten Perl-Module (siehe use-Anweisungen) finden Sie unter www.cpan.org)
#!/usr/bin/perl
use strict;
use LWP::UserAgent;
use URI::Escape;
use HTTP::Headers;
use HTTP::Request;
my \%vars=(
user=> "benutzer", # Benutzername
password=> "secret", # Passwort
nummer=> "+491797000000", # Ziel-Rufnummer
text=> "blah blah", # Text-Nachricht
absender=> "+491797000000", # Absenderkennung
test=> 1, # Debug-Modus aktivieren
output=> 1, # Unterdrückt HTML-Antwort
);
#### Ab hier nichts mehr ändern ####
my $c="";
my $ua=new LWP::UserAgent;
my $h=new HTTP::Headers;
$h->content_type('application/x-www-form-urlencoded');
$h->authorization_basic($vars{user},$vars{password});
foreach my $k(qw(nummer text absender test output)) {
$c.=$k."=".uri_escape($vars{$k})."&";
}
my $req=HTTP::Request->new("POST","http://sms-gw.topconcepts.de/gw/sms.pl",$h,$c);
my $res=$ua->request($req);
my $status=($res->is_success)?$res->content:$res->status_line;
# Den Wert $status können Sie nun auswerten, um
# festzustellen, ob der Versand erfolgreich war.
Listing in Java:
import java.io.*;
import java.net.*;
public class SendSMS {
private static String userNamePasswordBase64( String username, String password ) {
String s = username + ":" + password;
String encs = new sun.misc.BASE64Encoder().encode(s.getBytes());
return "Basic " + encs;
}
public static void main(String[] args) {
String user = "benutzer"; // Benutzername
String password = "secret"; // Passwort
String nummer = "+491797000000"; // Ziel-Rufnummer
String text = "blah blah"; // Text-Nachricht
String absender = "+491797000000"; // Absenderkennung
Byte test = 1; // Debug-Modus aktivieren
Byte output = 1; // Unterdrückt HTML-Antwort
URLEncoder encoder = new URLEncoder();
try {
URL url = new URL("http://sms-gw.topconcepts.de/gw/sms.pl?nummer=" +
encoder.encode(nummer) + "&text=" + encoder.encode(text) + "&absender=" +
encoder.encode(absender));
HttpURLConnection conn = (HttpURLConnection )url.openConnection();
conn.setRequestProperty( "Authorization",
userNamePasswordBase64(user, password));
conn.setRequestMethod("GET");
if (output == 1) {
if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
System.out.println(conn.getResponseMessage());
} else {
System.out.println(conn.getResponseMessage());
}
}
}
catch (MalformedURLException ex) {
if (output == 1 && test == 1) {
System.out.println(ex.getMessage());
}
}
catch (IOException ioe) {
if (output == 1 && test == 1) {
System.out.println(ioe.getMessage());
}
}
catch(Exception e) {
if (output == 1 && test == 1) {
System.out.println(e.getMessage());
}
}
}
}
Folgende Status-Meldungen liefert unsere Schnittstelle:
OK - Nachricht übermittelt.
ERROR - Absender fehlt.
ERROR - Text fehlt.
ERROR - Ungültiges Format der Handy-Nummer.
ERROR - Nummer fehlt.
ERROR - SMS-Credits aufgebraucht.
ERROR - Keine Empfänger-Nummer gewählt.
ERROR - User 'IHR_BENUTZERNAME' nicht berechtigt.
ERROR - IP-Sperre aktiv
Abfrage des aktuellen Credit-Guthabens:
Senden Sie einfach einen HTTP GET-Request auf folgenden URL:
http://sms-gw.topconcepts.de/gw/credits.pl
Dieses Script liefert Ihnen als plain/text die aktuelle Zahl verfügbarer Credits des gewählten Kontos.
Die Einbindung und Abfragen Ihres Kontostandes kann wie mit den oben aufgeführten perl- bzw. php-Scripten erfolgen.