| SMS-Send-TW-HiAir documentation | Contained in the SMS-Send-TW-HiAir distribution. |
SMS::Send::TW::HiAir - SMS::Send driver for hiair.hinet.net
use SMS::Send;
my $sender = SMS::Send->new('TW::HiAir',
_username => 'UserName',
_password => 'Password',
);
my $sent = $sender->send_sms(
text => 'My very urgent message',
to => '0912345678',
);
SMS::Send::TW::HiAir is a SMS::Send driver which allows you to send messages through http://hiair.hinet.net/.
The new method takes a few parameters. _username and _password are mandatory.
See WWW::Mechanize for details on these parameters.
Takes to as recipient phonenumber, and text as the text that's
supposed to be delivered.
Please report any bugs to http://rt.cpan.org/Ticket/Create.html?Queue=Send-SMS-TW-HiAir
Tsung-Han Yeh, <snowfly@yuntech.edu.tw>
Copyright (C) 2008 by Tsung-Han Yeh
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.
| SMS-Send-TW-HiAir documentation | Contained in the SMS-Send-TW-HiAir distribution. |
package SMS::Send::TW::HiAir; use strict; use base 'SMS::Send::Driver'; use WWW::Mechanize; use vars qw{$VERSION}; BEGIN { $VERSION = '0.02'; } sub new { my ($class, %params) = @_; foreach(qw/username password/) { Carp::croak("No $_ specified") unless(defined $params{"_$_"}); } my $self = bless { %params }, $class; return $self; } sub send_sms { my $self = shift; my %params = @_; my $baseurl = 'http://hiair.hinet.net/hweb/hiairpost_new.jsp'; my $posturl = 'http://hiair.hinet.net/jweb/send_check2.jsp'; my $number = 0; # Get the message and destination my $message = $self->_MESSAGE( $params{text} ); my $recipient = $self->_TO( delete $params{to} ); my $ua = WWW::Mechanize->new( agent => __PACKAGE__." v. $VERSION", ); $ua->agent_alias('Windows IE 6'); # Should be ok now, right? Let's send it! # Input SMS_Message, Recipients $ua->post($posturl, [ 'add_name' => "0", 'message' => $message, 'tel' => $recipient, 'tran_type' => 'now', 'can' => "0", 'can1' => "0"]); # Auth Login $ua->form_name("loginform"); $ua->submit(); $ua->form_name("AuthScreen"); $ua->field("aa-uid", $self->{"_username"}); $ua->field("aa-passwd", $self->{"_password"}); $ua->submit(); # Send SMS foreach (split(/\r|\n/, $ua->content())) { next unless (/window.location.replace\('/i); $_ =~ /window.location.replace\('(.+)'\)/i; my $newurl = $1; $ua->get($newurl); last; } return $ua->content(); } sub _MESSAGE { my $class = ref $_[0] ? ref shift : shift; my $message = shift; unless ( length($message) <= 160 ) { Carp::croak("Message length limit is 160 characters"); } return $message; } sub _TO { my $class = ref $_[0] ? ref shift : shift; my $to = shift; # International numbers need their + removed $to =~ y/0123456789//cd; return $to; } 1; __END__ # Below is stub documentation for your module. You'd better edit it!