3 { package Ucam
::SMS
::Send
;
10 use vars
qw/$VERSION/;
16 my $class = ref($proto) || $proto;
22 # Save allowed arguments in $self, ignore extraneous ones (e.g. that
23 # can only be used in other calls).
24 $self->{'url'} = $args{'url'};
25 # The message-specific details...
26 $self->{'msg'}{'token'} = $args{'token'};
27 $self->{'msg'}{'bulk'} = $args{'bulk'};
28 $self->{'msg'}{'truncate'} = $args{'truncate'};
29 $self->{'msg'}{'long_message'} = $args{'long_message'};
30 $self->{'msg'}{'test'} = $args{'test'};
40 # Set default URL for retrieving status.
41 $self->{'url'} = "https://api.phone.cam.ac.uk/api/text/1/submitSMS";
43 # Save allowed arguments in $self, ignore extraneous ones (e.g. that
44 # can only be used in other calls or are misspelled).
45 $self->{'url'} = $args{'url'} if defined $args{'url'};
46 # The message-specific details...
47 $self->{'msg'}{'token'} = $args{'token'} if defined $args{'token'};
48 $self->{'msg'}{'number'} = $args{'number'} if defined $args{'number'};
49 $self->{'msg'}{'message'} = $args{'message'} if defined $args{'message'};
50 $self->{'msg'}{'bulk'} = $args{'bulk'} if defined $args{'bulk'};
51 $self->{'msg'}{'truncate'} = $args{'truncate'} if defined $args{'truncate'};
52 $self->{'msg'}{'long_message'} = $args{'long_message'} if defined $args{'long_message'};
53 $self->{'msg'}{'test'} = $args{'test'} if defined $args{'test'};
55 my $ourname = (caller(0))[3];
56 die "$ourname: mandatory argument token is undefined\n" unless defined $self->{'msg'}{'token'};
57 die "$ourname: mandatory argument number is undefined\n" unless defined $self->{'msg'}{'number'};
58 die "$ourname: mandatory argument message is undefined\n" unless defined $self->{'msg'}{'message'};
61 my $ua = LWP
::UserAgent
->new;
62 $ua->timeout(10); # max 10s for response
65 my $url = $self->{'url'};
66 my $response = $ua->post($url,$self->{'msg'});
67 print ""; # for breakpointing
68 unless ($response->is_success)
70 my $msg = $self->{'msg'}{'message'};
71 my $number = $self->{'msg'}{'number'};
72 my $status = $response->code;
73 my $message = $response->message;
74 die "$0: error sending SMS message '$msg' to $number: HTTP status $status message '$message'\n";
77 # Parse SMS service response (HTTP response content).
79 my @content = split(/\n/,$response->content);
81 foreach my $line (@content)
84 if ($line =~ /^(\S+):\s+(.*)\s*$/)
86 my ($key,$value) = ($1,$2);
89 $self->{'msg'}{'messageid'} = $2 if $1 eq 'Msg-ID';
90 # warn "$key: $value\n";
94 warn "unrecognised result line: $line";
98 my $status = $results{'Status'} eq 'OK';
99 return ($status,%results);
108 # Set default URL for retrieving status.
109 $self->{'url'} = "https://api.phone.cam.ac.uk/api/text/1/getMessageStatus";
111 # Save allowed arguments in $self, ignore extraneous ones (e.g. that
112 # can only be used in other calls or are misspelled).
114 $self->{'url'} = $args{'url'} if defined $args{'url'};
115 $self->{'msg'}{'token'} = $args{'token'} if defined $args{'token'};
116 $self->{'msg'}{'messageid'} = $args{'messageid'} if defined $args{'messageid'};
118 my $ourname = (caller(0))[3];
119 die "$ourname: mandatory argument token is undefined\n" unless defined $self->{'msg'}{'token'};
120 die "$ourname: mandatory argument messageid is undefined (was it a test-mode message?)\n" unless defined $self->{'msg'}{'messageid'};
123 my $ua = LWP
::UserAgent
->new;
124 $ua->timeout(10); # max 10s for response
126 my $url = $self->{'url'};
127 my $response = $ua->post($url,$self->{'msg'});
128 print ""; # for breakpointing
129 unless ($response->is_success)
131 my $msgid = $self->{'msg'}{'messageid'};
132 my $msg = $self->{'msg'}{'message'};
133 my $number = $self->{'msg'}{'number'};
134 my $status = $response->code;
135 my $message = $response->message;
136 die "$0: error getting SMS message ID '$msgid' status: HTTP status $status message '$message'\n";
139 # Parse SMS service response (HTTP response content).
141 my @content = split(/\n/,$response->content);
143 foreach my $line (@content)
146 if ($line =~ /^(\S+):\s+(.*)\s*$/)
148 my ($key,$value) = ($1,$2);
153 warn "unrecognised result line: $line";
158 my $status = $results{'Status'} eq 'OK';
161 return ($status,%results);
170 # Set default URL for retrieving status.
171 $self->{'url'} = "https://api.phone.cam.ac.uk/api/text/1/getBalance";
173 # Save allowed arguments in $self, ignore extraneous ones (e.g. that
174 # can only be used in other calls or are misspelled).
176 $self->{'msg'}{'token'} = $args{'token'} if defined $args{'token'};
178 my $ourname = (caller(0))[3];
179 die "$ourname: mandatory argument token is undefined\n" unless defined $self->{'msg'}{'token'};
182 my $ua = LWP
::UserAgent
->new;
183 $ua->timeout(10); # max 10s for response
185 my $url = $self->{'url'};
186 my $response = $ua->post($url,$self->{'msg'});
187 print ""; # for breakpointing
188 unless ($response->is_success)
190 my $msgid = $self->{'msg'}{'messageid'};
191 my $msg = $self->{'msg'}{'message'};
192 my $number = $self->{'msg'}{'number'};
193 my $status = $response->code;
194 my $message = $response->message;
195 die "$0: error getting SMS message ID '$msgid' status: HTTP status $status message '$message'\n";
198 # Parse SMS service response (HTTP response content).
200 my @content = split(/\n/,$response->content);
202 foreach my $line (@content)
205 if ($line =~ /^(\S+):\s+(.*)\s*$/)
207 my ($key,$value) = ($1,$2);
212 warn "unrecognised result line: $line";
217 my $status = $results{'Status'} eq 'OK';
220 return ($status,%results);
225 #my $testmsg = Ucam::SMS::Send->new();#test => 'true');
226 #my $token = 'vjaa-aaqb-zlni-hwvo-rhee';
227 #my ($status,%results) = $testmsg->SendMessage(number => '07757080423',
229 # message => 'test message 1-2-3');
230 #($status,%results) = $testmsg->GetStatus(token => $token);
231 #print "SendMessage status: $status\n";
232 #foreach my $key (sort(keys(%results)))
234 # printf "%-11s %s\n",$key,$results{$key};
237 #($status,%results) = $testmsg->GetStatus(token => $token);
238 #print "GetStatus#1: $status\n";
239 #foreach my $key (sort(keys(%results)))
241 # printf "%-11s %s\n",$key,$results{$key};
244 #($status,%results) = $testmsg->GetStatus(token => $token);
245 #print "GetStatus#2: $status\n";
246 #foreach my $key (sort(keys(%results)))
248 # printf "%-11s %s\n",$key,$results{$key};
250 #($status,%results) = $testmsg->GetBalance(token => $token);
251 #print "Balance status:: $status\n";
252 #foreach my $key (sort(keys(%results)))
254 # printf "%-11s %s\n",$key,$results{$key};