Ein einfaches Script, um eine SMS per HTTP request abzusetzen, hier über sms77.de als Anbieter.
Aufruf in anderem Script durch
Code:
# Wiregate Plugin, um SMS per Anbieter SMS77.de zu versenden
# HTTP API Version 0.76 Spezifikationen: http://sms77.de/api.pdf
# Version 0.01 07.07.2015
# Copyright: nipponichi, License: GPLv2
# Steuerung über Variablen:
# <plugin_name>_request 0/1
# <plugin_name>_data zu sendener Text
#####################
### EINSTELLUGNEN ###
#####################
my $user = "user1234567"; # user
my $pwrd = "1234"; # password
my $telno = "0160123456789"; # Zieltelefonnummer(n), per Komma getrennt
my $from = "Niemand"; # Absender 16 Ziffern oder 11 Zeichen, nicht basicplus
my $prio = "basicplus"; # basicplus/quality/direct
$plugin_info{$plugname.'_cycle'} = 60;
#####################
my $gv_event=undef;
if (!$plugin_initflag) { # aus welchem Grund laeuft das Plugin gerade
$gv_event = EVENT_RESTART; # Restart des daemons / Reboot
} elsif ($plugin_info{$plugname.'_lastsaved'} > $plugin_info{$plugname.'_last'}) {
$gv_event = EVENT_MODIFIED; # Plugin modifiziert
} elsif (%msg) {
$gv_event = EVENT_BUS; # Bustraffic
} elsif ($fh) {
$gv_event = EVENT_SOCKET; # Netzwerktraffic
} else {
$gv_event = EVENT_CYCLE; # Zyklus
}
if (($gv_event eq EVENT_RESTART) or ($gv_event eq EVENT_MODIFIED)) {
$plugin_info{$plugname.'_request'} = 0;
$plugin_info{$plugname.'_data'} = '';
$plugin_info{$plugname.'_prio'} = 0;
} elsif ($gv_event eq EVENT_BUS) {
} elsif ($gv_event eq EVENT_SOCKET) {
} elsif ($gv_event eq EVENT_CYCLE) {
if ($plugin_info{$plugname.'_request'} == 1) {
use LWP::UserAgent;
use URI::Escape;
use Encode;
my ($userAgent, $request, $response, $requestURL);
$userAgent = LWP::UserAgent->new;
$userAgent->agent("WireGatePlugin/1.0");
# für Test: "&debug=1"
$requestURL = sprintf("https://gateway.sms77.de/?u=%s&p=%s&to=%s&text=%s&type=%s&from=%s",
uri_escape($user),
uri_escape($pwrd),
uri_escape($telno),
uri_escape(encode("utf8", $plugin_info{$plugname.'_data'})),
uri_escape($prio),
uri_escape(encode("utf8", $from)) );
$request = HTTP::Request->new(GET => $requestURL);
#$request->timeout(5);
$response = $userAgent->request($request);
if ($response->is_success) {
plugin_log($plugname, "SMS senden erfolgreich: $telno, $plugin_info{$plugname.'_data'}");
} elsif ($response->code == 401) {
plugin_log($plugname, "SMS nicht gesendet.");
} else {
plugin_log($plugname, "SMS nicht gesendet " . $response->content);
}
$plugin_info{$plugname.'_request'} = 0;
$plugin_info{$plugname.'_data'} = '';
$plugin_info{$plugname.'_prio'} = 0;
}
}
return;
Code:
$plugin_info{'SendSms.pl_request'} = 1;
$plugin_info{'SendSms.pl_data'} = 'Hallo';


Kommentar