Inviare SMS dal modulo
26.08.2021
Support Wissensdatenbank
Inviare SMS con un modulo
Con questo script, gli SMS possono essere inviati utilizzando qualsiasi GET (esempio xy.ch?key1=value1….) e POST (da un modulo).
Passo 1: cliccare su “sms.zip” per scaricare
Passo 2: scompatta l’archivio e carica i due script “sms.php” e “sms_gw.php” sul tuo sito web.
Ecco lo stesso codice di “sms.php”.
<?php require_once('sms_gw.php'); // SMS Settings $sender = "Absendername"; $recipients = ["079 254 33 22"]; $sms_userkey = "XXX"; $sms_password = "XXX"; // Get Request switch($_SERVER['REQUEST_METHOD']) { case 'GET': $fields = &$_GET; break; case 'POST': $fields = &$_POST; break; } // Fields Settings $allowed_fields = []; $required_fields = []; $sms = ""; foreach( $fields as $key => $field ) { if(!empty($allowed_fields)){ if(!in_array($key, $allowed_fields)){ continue; } } $sms .= $key . ": " . $field . "\r\n"; if(!empty($required_fields)){ if(in_array($key, $required_fields)){ $_key = array_search($key, $required_fields); unset($required_fields[$_key]); } } } if(!empty($required_fields)){ echo "Error! Some fields are missing: " . implode(",",$required_fields); exit; } $sms_gateway = new SMS_GW( "json.server2sms.com" , true ); $sms_gateway->auth( $sms_userkey, $sms_password ); $sms_gateway->sendSMS( $sender, $recipients, $sms ) ?>
Qui quello di “sms_gw.php”.
<?php class SMS_GW { private $api_host; private $api_protocol; private $userkey; private $password; public function __construct($api_host, $api_secure){ $this->api_host = $api_host; if($api_secure) { $this->api_protocol = "https://"; } else { $this->api_protocol = "http://"; } } public function auth($userkey, $password){ $this->userkey = $userkey; $this->password = $password; } public function getCredits() { $data = array(); $response = $this->callAPI("CheckCredits", $data); if($response['StatusCode'] == "1" || $response['StatusCode'] == "StatusCode:1") { return $response['Credits']; } else { throw new \Exception($response['StatusInfo']); } } public function sendSMS($originator, $recipients, $message) { $data = array(); $data['Originator'] = $originator; $data['Recipients'] = $recipients; $data['MessageText'] = $message; $data['ForceGSM7bit'] = true; $response = $this->callAPI("SendTextSMS", $data); if($response['StatusCode'] == "1" || $response['StatusCode'] == "StatusCode:1") { return true; } else { throw new \Exception($response['StatusInfo']); } } private function callAPI($path, $json) { $curl = curl_init(); if (is_array($json)) { $json['UserName'] = $this->userkey; $json['Password'] = $this->password; $json = json_encode($json); curl_setopt($curl, CURLOPT_POSTFIELDS, $json); } curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_URL, $this->api_protocol . $this->api_host . "/" . $path); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); if(curl_errno($curl)) echo 'Curl error: '.curl_error($curl); curl_close($curl); return json_decode($result, JSON_OBJECT_AS_ARRAY); } }
Importante:
- Le variabili dopo “// SMS Settings” devono essere corrette. Puoi scegliere qualsiasi nome come mittente. Nella variabile “recipients” puoi inserire diversi destinatari separati da virgole.
- Le variabili dopo “// Field Settings” possono essere impostate se volete.:
- “Allowed_fields” = Solo questi campi GET / POST sono inclusi nell’SMS (non importa quanti altri campi sono inviati con GET o POST).
- “Required_fields” = Questi campi devono avere un valore. Se questi campi non sono inviati o sono inviati vuoti, viene visualizzato un errore.