2 #Written by tgarip@neu.edu.tr for SMS message sending and other SMS related services
10 use vars qw($VERSION @ISA @EXPORT);
29 our $user = C4::Context->config('smsuser');
30 our $pwd = C4::Context->config('smspass');
31 our $uri = "https://spgw.kktcell.com/smshttpproxy/SmsHttpProxyServlet";
35 my $ua = LWP::UserAgent->new;
37 my $res=$ua->post($uri,[cmd=>'REGISTER',pUser=>$user,pPwd=>$pwd]);
38 if ($res->is_success){
39 $commands=parse_content($res->content);
41 return($commands,$ua);
45 my $ua = shift or return undef;
49 my $res=$ua->post($uri,[cmd=>'SENDSMS',pUser=>$user,pPwd=>$pwd,pSessionId=>$session,pService_Code=>4130,pMsisdn=>$phone,
51 return parse_content($res->content);
55 my $ua = shift or return undef;
57 my $res=$ua->post($uri,[cmd=>'GETSMS',pUser=>$user,pPwd=>$pwd,pSessionId=>$session,pService_Code=>4130]);
58 return parse_content($res->content);
64 my @attributes = split /&/,$content;
65 foreach my $params(@attributes){
66 my (@param) = split /=/,$params;
67 $commands{$param[0]}=$param[1];
74 ($error== -1) and return "Closed session - Retry";
75 ($error== -2) and return "Invalid session - Retry";
76 ($error== -3) and return "Invalid password";
77 ($error== -103) and return "Invalid user";
78 ($error== -422) and return "Invalid Parameter";
79 ($error== -426) and return "User does not have permission to send message";
80 ($error== -700) and return "No permission";
81 ($error== -801) and return "Msdisn count differs - warn administartor";
82 ($error== -803) and return "Content count differs from XSER count";
83 ($error== -1101) and return "Insufficient Credit - Do not retry";
84 ($error== -1104) and return "Invalid Phone number";
85 ($error==-10001) and return "Internal system error - Notify provider";
86 ($error== -9005) and return "No messages to read";
88 warn "Unknown SMS error '$error' occured";
89 return "Unknown SMS error '$error' occured";
94 ## checks acceptable phone numbers
95 ## FIXME: accept Telsim when available (542 numbers)
99 my $length=length($phone);
100 if ($length==10 || $length==12){
101 my $code=substr($phone,0,3) if $length==10;
102 $code=substr($phone,0,5) if $length==12;
113 my @parsed = split / /, $message;
118 my ($userid,$message,$phone)=@_;
119 my $dbh=C4::Context->dbh;
120 my $sth=$dbh->prepare("INSERT into sms_messages(userid,message,user_phone,date_received) values(?,?,?,now())");
121 $sth->execute($userid,$message,$phone);
123 return $dbh->{'mysql_insertid'}; # FIXME: mysql specific
127 my ($smsid,$message)=@_;
128 my $dbh=C4::Context->dbh;
129 my $sth=$dbh->prepare("UPDATE sms_messages set reply=?, date_replied=now() where smsid=?");
130 $sth->execute($message,$smsid);
135 my $ua = shift or return undef;
137 my $res = $ua->post($uri,[cmd=>'KILLSESSION',pSessionId=>$session]);