use strict;
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
# отсутствующие библиотеки можно установить, используя CPAN
# подробнее о CPAN см. http://ru.wikipedia.org/wiki/CPAN
# пример: cpan LWP::UserAgent
sub gateRequest {
my $data = shift;
my $json_output = encode_json $data;
my $method = $data->{'method'};
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(POST => 'http://json.api.smsfeedback.ru/'.$method);
$req->content_length(length($json_output));
$req->content($json_output);
my $res = $ua->request($req);
if ($res->is_success) {
return decode_json $res->decoded_content;
}
return 'error '.$res->status_line;
}
# отправка сообщений
my $result = gateRequest({
'method' => 'send',
'login' => 'login',
'password' => 'password',
'messages' => [
{'clientId'=> 0, 'phone' => '79031234567', 'text' => 'text here'},
{'clientId'=> 1, 'phone' => '79031234567', 'text' => 'test', 'sender' => 'TEST-SMS'}
]
});
# проверка статуса отправки пакета
if ($result->{'status'} ne 'ok') {
print 'Error: '.$result->{'status'};
exit;
}
# проверка статуса отправки каждого сообщения
for(my $i=-1; $i<$#{$result->{'messages'}}; $i++) {
print $result->{'messages'}[$i]->{'clientId'}.": ";
print $result->{'messages'}[$i]->{'smscId'}."/";
print $result->{'messages'}[$i]->{'status'}."\n";
}