Koha/C4/SMS.pm
Joe Atzberger 381bc1845e SMS.pm - BEGIN block VERSION and vars related to export.
Signed-off-by: Chris Cormack <crc@liblime.com>
Signed-off-by: Joshua Ferraro <jmf@liblime.com>
2008-01-07 20:02:44 -06:00

149 lines
3.4 KiB
Perl
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package C4::SMS;
#Written by tgarip@neu.edu.tr for SMS message sending and other SMS related services
use strict;
use LWP::UserAgent;
use C4::Context;
use vars qw($VERSION @ISA @EXPORT);
my $user=C4::Context->config('smsuser');
my $pwd=C4::Context->config('smspass');
my $uri ="https://spgw.kktcell.com/smshttpproxy/SmsHttpProxyServlet";
BEGIN {
require Exporter;
@ISA = qw(Exporter);
$VERSION = 0.02;
@EXPORT = qw(
&get_sms_auth
&send_sms
&read_sms
&error_codes
&parse_phone
&parse_message
&write_sms
&mod_sms
&kill_sms
);
}
sub get_sms_auth {
my $ua = LWP::UserAgent->new;
my $commands;
my $res=$ua->post($uri,[cmd=>'REGISTER',pUser=>$user,pPwd=>$pwd]);
if ($res->is_success){
$commands=parse_content($res->content);
}
return($commands,$ua);
}
sub send_sms{
my $ua=shift;
my $phone=shift;
my $message=shift;
my $session=shift;
my $res=$ua->post($uri,[cmd=>'SENDSMS',pUser=>$user,pPwd=>$pwd,pSessionId=>$session,pService_Code=>4130,pMsisdn=>$phone,
pContent=>$message]);
return parse_content($res->content);
}
sub read_sms{
my $ua=shift;
my $session=shift;
my $res=$ua->post($uri,[cmd=>'GETSMS',pUser=>$user,pPwd=>$pwd,pSessionId=>$session,pService_Code=>4130]);
return parse_content($res->content);
}
sub parse_content{
my $content=shift;
my %commands;
my @attributes=split /&/,$content;
foreach my $params(@attributes){
my (@param)=split /=/,$params;
$commands{$param[0]}=$param[1];
}
return(\%commands);
}
sub error_codes{
my $error=shift;
if ($error==-1){
return "Closed session - Retry ";
}elsif($error==-2){
return "Invalid session - Retry ";
}elsif($error==-3){
return "Invalid password" ;
}elsif($error==-103){
return "Invalid user";
}elsif($error==-422){
return "Invalid Parameter";
}elsif($error==-426){
return "User doesnt have permission to send message";
}elsif($error==-700){
return "No permission";
}elsif($error==-801){
return " Msdisn count differs-warn administartor";
}elsif($error==-803){
return "Content count differs from XSER count";
}elsif($error==-1101){
return " Insufficient Credit Do not retry" ;
}elsif($error==-1104){
return "Invalid Phone number";
}elsif($error==-10001){
return " Internal system error- Tell Turkcell/Telsim";
}elsif($error==-9005){
return " No messages to read";
}elsif ($error){
return "Unknow error no $error occured - tell Turkcell/Telsim";
}
}
sub parse_phone{
## checks acceptable phone numbers
## Fix to accept Telsim when available (542 numbers)
my $phone=shift;
$phone=~s/^0//g;
$phone=~s/ //g;
my $length=length($phone);
if ($length==10 || $length==12){
my $code=substr($phone,0,3) if $length==10;
$code=substr($phone,0,5) if $length==12;
if ($code=~/533/){
return $phone;
}else{
return 0;
}
}else{
return 0;
}
}
sub parse_message{
my $message=shift;
$message=~s/ / /g;
my @parsed=split / /,$message;
return (@parsed);
}
sub write_sms{
my ($userid,$message,$phone)=@_;
my $dbh=C4::Context->dbh;
my $sth=$dbh->prepare("INSERT into sms_messages(userid,message,user_phone,date_received) values(?,?,?,now())");
$sth->execute($userid,$message,$phone);
$sth->finish;
return $dbh->{'mysql_insertid'};
}
sub mod_sms{
my ($smsid,$message)=@_;
my $dbh=C4::Context->dbh;
my $sth=$dbh->prepare("UPDATE sms_messages set reply=? ,date_replied=now() where smsid=?");
$sth->execute($message,$smsid);
$sth->finish;
}
sub kill_sms{
#end a session
my $ua=shift;
my $session=shift;
my $res=$ua->post($uri,[cmd=>'KILLSESSION',pSessionId=>$session]);
}
1;
__END__