SLOONO.de-API SMS: XML

Aus SLOONO.de-API

Wechseln zu: Navigation, Suche

Es ist möglich SMS durch senden einer XML-POST-Anfrage zu senden. Die Variablen sind die gleichen wie bei der normalen SMS.

Inhaltsverzeichnis

API

Anfrage

Adresse: http://www.sloono.de/API/xmlsms.php

Der XML-Block sieht dabei möglicherweise so aus:

  1. <?xml version="1.0"?>
  2. <SMS>
  3.     <user>Username</user>
  4.     <password>MD5 des Userpassworts</password>
  5.     <typ>0</typ>
  6.     <timestamp>0</timestamp>
  7.     <text><![CDATA[SMS-Text]]></text>
  8.     <from>1</from>
  9.     <to>+49(160)4863634</to>
  10.     <action>info</action>
  11.     <return>html</return>
  12.     <httphead>1</httphead>
  13. </SMS>

Der XML-Block muss als Variable XMLDATA übertragen werden.

Parameter Typ Beschreibung Standard
user Text Username  
password Text MD5-Hashwert des Passworts  
typ Zahl API-ID, des zu verdenenen SMS-Typs. Siehe Verfügbare SMS-Typen 0
timestamp Zahl UNIX-Timestamp der genünschten Sendezeit. Bei 0 oder einem vergangenem Zeitpunkt wird sofort gesendet. 0
text Text SMS-Text mit maximal 1600 Zeichen.  
from Zahl

Absenderkennung:

  1. Handynummer
  2. Absenderkennung 1
  3. Absenderkennung 2
  4. Absenderkennung 3
  5. Absenderkennung 4
1
to Text Zielnummern getrennt durch Komma (,) und im nationalen oder internationalen Format (0123/456789 oder +49(123)456789). Es können auch die Spitznamen aus dem Adressbuch oder Vor- + Nachname aus dem Adressbuch benutzt werden.  
action Text Es können die Werte info oder send gesetzt werden. Der Wert send überträgt die SMS ins System von MMSCLICK, während info nur Informationen über die SMS wie z. B. Preis zurück gibt. Nach dem senden werden die gleichen Informationen zurück gegeben. send
return Text Mit dieser Variable wird das Antwortformat festgelegt. Mit text wird die Antwort als Mehrzeiliger Text zurückgegeben während xml ein XML-Schema liefert. text
httphead Zahl Wenn httphead auf 1 gesetzt wird, so werden bei Fehlern HTTP-Header ungleich 200 gesendet. Beim Wert 0 muss der Fehler aus der Antwort abgelesen werden. 1

Alle Variablen, die keinen Standartwert haben müssen gesetzt werden!

Antwort

Eine Vorauswahl wird bereits mit dem HTTP-Header der Antwort getroffen. Wenn etwas anderes als HTTP 1/1 200 OK als Antwort empfangen wird ist ein Fehler aufgetreten. Zurückgegeben wird ein Fehlercode, ein Fehlertext und Informationen (falls vorhanden).

Beispiele

  1. POST /API/xmlsms.php HTTP/1.1
  2. Host: www.sloono.de
  3. Content-Type: application/x-www-form-urlencoded
  4. Content-length: 540
  5. Connection: close
  6.  
  7. XMLDATA=%3C%3Fxml+version%3D%221.0%22%3F%3E%0D%0A%3CSMS%3E%0D%0A%09%3Cuser%3EMax%3C%2Fuser%3E%0D%0A%09%3Cpassword%3E41a2bb1f0a4d8b14b876e2379bbabb4a%3C%2Fpassword%3E%0D%0A%09%3Ctyp%3E0%3C%2Ftyp%3E%0D%0A%09%3Ctimestamp%3E0%3C%2Ftimestamp%3E%0D%0A%09%3Ctext%3E%3C%21%5BCDATA%5BDies+ist+ein+SMS-Text.%5D%5D%3E%3C%2Ftext%3E%0D%0A%09%3Cfrom%3E1%3C%2Ffrom%3E%0D%0A%09%3Cto%3E0123%252F456789%3C%2Fto%3E%0D%0A%09%3Caction%3Einfo%3C%2Faction%3E%0D%0A%09%3Creturn%3Ehtml%3C%2Freturn%3E%0D%0A%09%3Chttphead%3E1%3C%2Fhttphead%3E%0D%0A%3C%2FSMS%3E%0D%0A

So kann eine Textantwort aussehen:

  1. 100
  2. SMS erfolgreich versendet
  3.  
  4. Text: Dieser Text wird gesendet.
  5. Zeichen: 26
  6. SMS: 1
  7. Absenderkennung: +49(123)456789
  8. Ziele: +49(321)987654
  9. Kosten: 0,059
  10. Versenden: Sofort

So kann eine XML-Antwort aussehen:

  1. <?xml version="1.0" encoding="iso-8859-1"?>
  2. <answer>
  3. <code>100</code>
  4. <codetext>SMS erfolgreich versendet</codetext>
  5. <info>Text: Dieser Text wird gesendet.
  6. Zeichen: 26
  7. SMS: 1
  8. Absenderkennung: +49(123)456789
  9. Ziele: +49(321)987654
  10. Kosten: 0,059
  11. Versenden: Sofort</info>
  12. </answer>

Quellcodebeispiele

PHP

Beispiel 1:

  1. <?php
  2. mb_internal_encoding("UTF-8");
  3. echo "<pre>";
  4.  
  5. /////////////////////////////////////////////////////////////////////////////////
  6. /// Einstellungen für Account und SMS                                         ///
  7. /////////////////////////////////////////////////////////////////////////////////
  8. /// ÄNDERN!                                                                   ///
  9. /////////////////////////////////////////////////////////////////////////////////
  10.  
  11. define("ABSENDER_Handynummer",1);
  12. define("ABSENDER_Kennung_1",2);
  13. define("ABSENDER_Kennung_2",3);
  14. define("ABSENDER_Kennung_3",4);
  15. define("ABSENDER_Kennung_4",5);
  16.  
  17. $suser = "Username";			// Nickname
  18. $spw = "Passwort";			// Accountpasswort
  19. $styp = 2;				// Test: Pro-SMS
  20.  
  21. $smstext = "Testtext: Hallo Süße! Schlaf schön&träum' was Süßes!";
  22. $ziel = "+49(160)123456";		// Zielrufnummer, bitte einstellen!
  23. $absender = ABSENDER_Handynummer;	// Test: Handynummer
  24.  
  25. /////////////////////////////////////////////////////////////////////////////////
  26. /// Beispielfunktionen                                                        ///
  27. /////////////////////////////////////////////////////////////////////////////////
  28. /// NICHT ÄNDERN!                                                             ///
  29. /////////////////////////////////////////////////////////////////////////////////
  30.  
  31. /**
  32.  * XML-Objekt in Array umwandeln.
  33.  * 
  34.  * Diese Funktion wandelt ein SimpleXMLElement {@link http://www.php.net/manual/de/class.simplexmlelement.php}
  35.  * in ein normales mehrdimensionales Array um.
  36.  * 
  37.  * @param SimpleXMLElement XML-Objekt welches konvertiert werden soll
  38.  */
  39. function simpleXMLToArray($xml) {
  40. 	$return = array();
  41. 	if(!($xml instanceof SimpleXMLElement)) return $return;
  42. 	$name = $xml->getName();
  43. 	$_value = trim((string)$xml);
  44. 	if(mb_strlen($_value) == 0) $_value = null;
  45. 	if($_value !== null) $return = html_entity_decode($_value);
  46. 	$children = array();
  47. 	$first = true;
  48. 	foreach($xml->children() as $elementName => $child) {
  49. 		$value = simpleXMLToArray($child);
  50. 		if(isset($children[$elementName])) {
  51. 			if($first) {
  52. 				$temp = $children[$elementName];
  53. 				unset($children[$elementName]);
  54. 				$children[$elementName][] = $temp;
  55. 				$first = false;
  56. 			}
  57. 			$children[$elementName][] = $value;
  58. 		} else
  59. 			$children[$elementName] = $value;
  60. 	}
  61. 	if(count($children) > 0) $return = array_merge($return,$children);
  62.  
  63. 	$attributes = array();
  64. 	foreach($xml->attributes() as $name=>$value){
  65. 		$attributes[$name] = trim($value);
  66. 	}
  67. 	if(count($attributes) > 0) $return = array_merge($return, $attributes);
  68.  
  69. 	return $return;
  70. }
  71.  
  72. /**
  73.  * Webseite als String zurückgeben.
  74.  * 
  75.  * Diese Funktion lädt eine Webseite via CURL {@link http://www.php.net/manual/de/book.curl.php} herunter.
  76.  * 
  77.  * @param string Adresse der Webseite
  78.  * @param mixed URL-konforme Daten für POST-Anfrage oder FALSE wenn GET verwendet werden soll
  79.  */
  80. function curlhttp($url,$post = false) {
  81. 	if($url == "") return false;
  82. 	$VersionArray = curl_version();
  83. 	$Optionen = array(CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => 0, CURLOPT_USERAGENT => "PHP ".phpversion()." + cURL ".$VersionArray["version"], CURLOPT_TIMEOUT => 30);
  84. 	if($post != false) {
  85. 		$Optionen[CURLOPT_POST] = 1;
  86. 		$Optionen[CURLOPT_POSTFIELDS] = $post;
  87. 	}
  88. 	$s = curl_init($url);
  89. 	foreach($Optionen as $CURLCONST => $Wert) curl_setopt($s,$CURLCONST,$Wert);
  90. 	$Quellcode = curl_exec($s);
  91. 	$StatusArray = curl_getinfo($s);
  92. 	$HttpHead = array(100 => "Continue", 101 => "Switching Protocols", 200 => "OK", 201 => "Created", 202 => "Accepted", 203 => "Non-Authoritative Information",
  93. 					  204 => "No Content", 205 => "Reset Content", 206 => "Partial Content", 300 => "Multiple Choices", 301 => "Moved Permanently",
  94. 					  302 => "Found", 303 => "See Other", 304 => "Not Modified", 305 => "Use Proxy", 306 => "(Unused)", 307 => "Temporary Redirect",
  95. 					  400 => "Bad Request", 401 => "Unauthorized", 402 => "Payment Required", 403 => "Forbidden", 404 => "Not Found", 405 => "Method Not Allowed",
  96. 					  406 => "Not Acceptable", 407 => "Proxy Authentication Required", 408 => "Request Timeout", 409 => "Conflict", 410 => "Gone",
  97. 					  411 => "Length Required", 412 => "Precondition Failed", 413 => "Request Entity Too Large", 414 => "Request-URI Too Long",
  98. 					  415 => "Unsupported Media Type", 416 => "Requested Range Not Satisfiable", 417 => "Expectation Failed", 500 => "Internal Server Error",
  99. 					  501 => "Not Implemented", 502 => "Bad Gateway", 503 => "Service Unavailable", 504 => "Gateway Timeout", 505 => "HTTP Version Not Supported");
  100. 	return array("HTTP_Code" => $StatusArray["http_code"], "HTTP_Text" => $HttpHead[$StatusArray["http_code"]], "HTTP_Body" => $Quellcode);
  101. }
  102.  
  103. /////////////////////////////////////////////////////////////////////////////////
  104. /// SMS verschicken und Ergebnis als Array ausgeben                           ///
  105. /////////////////////////////////////////////////////////////////////////////////
  106. $xml = '<?xml version="1.0" encoding="utf-8" ?>
  107. <SMS>
  108. 	<user>'.$suser.'</user>
  109. 	<password>'.$spw.'</password>
  110. 	<typ>'.$styp.'</typ>
  111. 	<text>'.htmlspecialchars($smstext, ENT_COMPAT, "UTF-8").'</text>
  112. 	<from>'.$absender.'</from>
  113. 	<to>'.$ziel.'</to>
  114. 	<return>xml</return>
  115. </SMS>';
  116.  
  117. $ret = curlhttp("http://www.sloono.de/API/xmlsms.php","XMLDATA=".urlencode(utf8_decode($xml)));
  118. print_r(simpleXMLToArray(simplexml_load_string($ret["HTTP_Body"])));
  119.  
  120. echo "</pre>";
  121. ?>

Beispiel 2 (veraltet):

  1. <?php
  2. define("WEBSMS_Discount",0);
  3. define("WEBSMS_Basic",1);
  4. define("WEBSMS_Pro",2);
  5.  
  6. define("ABSENDER_Handynummer",1);
  7. define("ABSENDER_Kennung_1",2);
  8. define("ABSENDER_Kennung_2",3);
  9. define("ABSENDER_Kennung_3",4);
  10. define("ABSENDER_Kennung_4",5);
  11.  
  12. function SMS_versenden($User,$Password,$Text,$Ziel,
  13.         $Absender = ABSENDER_Handynummer,
  14.         $Typ = WEBSMS_Discount,$Versenden = 0)
  15. {
  16.     if(strlen($Text) == 0) return array("Code" => 201,
  17.             "Codetext" => "Kein Text","Info" => "");
  18.     if(strlen($User) == 0 || strlen($Password) == 0) return array("Code" => 200
  19.             ,"Codetext" => "Username und/oder Passwort falsch","Info" => "");
  20.     if(strlen($Text) > 1600) $Text = substr($Text,0,1600);
  21.     if($Absender < 1 || $Absender > 5) $Absender = 1;
  22.     if($Versenden < time()) $Versenden = 0;
  23.     if($Typ < 0 || $Typ > 3) $Typ = 0;
  24.     $url_parsed = parse_url("http://www.mmsclick.de/API/xmlsms.php");
  25.     $host = $url_parsed["host"];
  26.     $port = $url_parsed["port"];
  27.     if ($port==0) $port = 80;
  28.     $path = $url_parsed["path"];
  29.     if (empty($path)) $path = "/";
  30.     if ($url_parsed["query"] != "") $path .= "?".$url_parsed["query"];
  31.     $xml = "<?xml version=\\"1.0\\"?>\\r\\n<SMS>\\r\\n";
  32.     $xml .= "    <user>".urlencode($User)."</user>\\r\\n";
  33.     $xml .= "    <password>".md5($Password)."</password>\\r\\n";
  34.     $xml .= "    <typ>".$Typ."</typ>\\r\\n";
  35.     $xml .= "    <timestamp>".$Versenden."</timestamp>\\r\\n";
  36.     $xml .= "    <text><![CDATA[".$Text."]]></text>\\r\\n";
  37.     $xml .= "    <from>".$Absender."</from>\\r\\n";
  38.     $xml .= "    <to>".urlencode($Ziel)."</to>\\r\\n";
  39.     $xml .= "    <action>info</action>\\r\\n";
  40.     $xml .= "    <return>html</return>\\r\\n";
  41.     $xml .= "    <httphead>1</httphead>\\r\\n</SMS>\\r\\n";
  42.     $fp = fsockopen($host, $port, $errno, $errstr, 60);
  43.     if(!$fp) return array("Code" => 302,"Codetext" =>
  44.             "Verbindung fehlgeschlagen","Info" => ""); 
  45.     $out = "POST $path HTTP/1.1\\r\\n";
  46.     $out .= "Host: $host\\r\\n";
  47.     $out .= "Content-Type: application/x-www-form-urlencoded\\r\\n";
  48.     $out .= "Content-length: ".strlen("XMLDATA=".urlencode($xml))."\\r\\n";
  49.     $out .= "Connection: close\\r\\n\\r\\n";
  50.     $out .= "XMLDATA=".urlencode($xml);
  51.     fputs($fp,$out);
  52.     $body = "";
  53.     while(!feof($fp)) $body.= fgets($fp, 256);
  54.     fclose($fp);
  55.     $hnr = substr($body,9,3);
  56.     $body = ltrim(strstr($body,"\\r\\n\\r\\n"));
  57.     $mcode = trim(substr($body,0,strpos($body,"\\n")));
  58.     $body = ltrim(strstr($body,"\\n"));
  59.     $mtext = trim(substr($body,0,strpos($body,"\\n")));
  60.     $body = trim(strstr($body,"\\n"));
  61.     return array("Code" => $mcode,"Codetext" => $mtext,"Info" => $body);
  62. }
  63. ?>
  64.  
  65. <?php
  66. $Antwort = SMS_versenden("Max","PW von Max",
  67.         "Dies ist ein SMS-Text.","0123/456789");
  68. if($Antwort["Code"] == 100)
  69.     echo "SMS gesendet!";
  70. else
  71.     echo "Fehler!";
  72. ?></sorce></div>
Meine Werkzeuge