[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: SMS Send failed (error=19)
From: |
Pin~1.com.my |
Subject: |
Re: SMS Send failed (error=19) |
Date: |
Fri, 19 Jul 2002 11:32:29 +0800 |
I am using gnokii-0.3.4, can someone guide me why this happen? BY the way,
what will happen when the RF signal drop to 0 during the process of sending
sms? Is the sms can be sent out, or I will get any error message?
Thanks
Earnpin
----- Original Message -----
From: "Pin~1.com.my" <address@hidden>
To: <address@hidden>
Sent: Thursday, July 18, 2002 3:04 AM
Subject: SMS Send failed (error=19)
> Dear All,
>
> I send SMS in bulk using a queqe system (perl script). Sometimes, in the
> middle of the process, the error 19 appeared, and once it happend, the
less
> of email in queqe will not be able to send anymore. The less attempt will
> come out with error 23.
>
> Do I have any way to prevent this?
>
> Please advise, Thank you
>
> Cheers,
> Earnpin Lee
>
>
> Queqe Script :
> ------------------------------
> #!/usr/bin/perl -w
>
> $gnokii = "/usr/bin/gnokii";
> @db_connect = ("DBI:mysql:sms", "", "");
> $delay_hour = 5;
>
> $sms_outbox = 'sms_outbox';
> $sms_state = 'sms_state';
> $sms_sent = 'sms_sent';
> $sms_retry = 'sms_retry';
> $sms_inbox = 'sms_inbox';
> $sms_fail = 'sms_fail';
>
> use lib "/usr/local/lib/perl5/site_perl/5.6.1/i686-linux";
> use vars qw/%in $DBH/;
> eval {
> require 5.002;
> require DBI;
> };
> $DBH = DBI->connect (@db_connect);
>
> &sendsms;
> &retry;
> &receivesms;
>
> END { $DBH and ($DBH->disconnect()); }
> exit;
>
>
> sub sendsms {
> # ------------------------------------------
> # send SMS from outbox
>
> my ($port_status, $outbox_status);
> my ($query, $sth, @rc, $rc, $reply);
> my ($id, $no, $msg, $userid, $goupid, $datetime, $error);
> my ($query1, $query2, $query3, $query4);
>
>
> $port_status = &check_port;
> $outbox_status = &check_outbox;
>
> if ($port_status eq "ok" and $outbox_status eq "ok") {
> `killall -9 gnokii`;
> &lock_port;
>
> $query = qq!
> SELECT * FROM $sms_outbox
> !;
> $sth = $DBH->prepare ($query);
> $sth->execute;
>
> while (@rc = $sth->fetchrow_array)
>
> $rc[2] =~ s/\'//g;
> $rc[2] =~ s/\s+/ /g;
> $id = $DBH->quote($rc[0]);
> $no = $DBH->quote($rc[1]);
> $msg = $DBH->quote($rc[2]);
> $userid = $DBH->quote($rc[3]);
> $groupid = $DBH->quote($rc[4]);
> $datetime = $DBH->quote(&get_datetime);
>
> $reply = `echo $msg |$gnokii --sendsms $rc[1]`;
> sleep(14);
> chomp($reply);
> $error = $DBH->quote($reply);
>
> if($reply eq "Send succeeded!") {
> $query1 = qq!
> DELETE FROM $sms_outbox
> WHERE (id = $id)
> !;
> $DBH->do($query1);
>
> $query2 = qq!
> INSERT INTO $sms_sent (no, msg, datetime, userid, groupid)
> VALUES ($no, $msg, $datetime, $userid, $groupid)
> !;
> $DBH->do($query2);
> }
> else {
> $query3 = qq!
> DELETE FROM $sms_outbox
> WHERE (id = $id)
> !;
> $DBH->do($query3);
>
> $query4 = qq!
> INSERT INTO $sms_retry (no, msg, datetime, userid, groupid, error,
> state)
> VALUES ($no, $msg, $datetime, $userid, $groupid, $error, '1')
> !;
> $DBH->do($query4);
> }
>
> sleep(1);
> `killall -9 gnokii`;
> }
> $sth->finish;
> &free_port;
> }
> }
>
>
> sub retry {
> # ------------------------------------------
> # send SMS from retry
>
> my ($port_status, $retry_status);
> my ($query, $sth, @rc, $rc);
> my ($datetime_n, $date_n, $hour_n, $min_n, $sec_n, $time_n);
> my ($datetime_r, $date_r, $hour_r, $min_r, $sec_r, $time_r);
> my ($can_retry, $total_sec, $retry_time);
> my ($id, $no, $msg, $userid, $goupid, $datetime, $reply, $error);
> my ($query1, $query2, $query3, $query4);
>
> $port_status = &check_port;
> $retry_status = &check_retry;
>
> if ($port_status eq "ok" and $retry_status eq "ok") {
> `killall -9 gnokii`;
> &lock_port;
>
> $query = qq!
> SELECT * FROM $sms_retry
> WHERE state = 1
> !;
> $sth = $DBH->prepare ($query);
> $sth->execute;
>
> while (@rc = $sth->fetchrow_array) {
>
> $datetime_n = &get_datetime;
> chomp ($datetime_n);
> ($date_n, $hour_n, $min_n, $sec_n) = $datetime_n =~ /(.*)
> (.*):(.*):(.*)/;
> $time_n = ($hour_n * 3600) + ($min_n * 60) + $sec_n;
> $date_n =~ s/-//g;
>
> $datetime_r = $rc[3];
> chown ($datetime_r);
> ($date_r, $hour_r, $min_r, $sec_r) = $datetime_r =~ /(.*)
> (.*):(.*):(.*)/;
> $time_r = ($hour_r * 3600) + ($min_r * 60) + $sec_r;
> $date_r =~ s/-//g;
>
> $can_retry = 0;
> $total_sec = $delay_hour * 3600;
>
> # If it is one day before, we check if retry_time >= $total_sec
> if ($date_n > $date_r) {
> if ($date_n - $date_r == 1) {
> $retry_time = (86400 - $time_r) + $time_n;
> if ($retry_time >= $total_sec) {
> $can_retry = 1;
> }
> }
> else {
> $can_retry =1;
> }
> }
>
> # If is the same day, we can simply minus the time
> if ($date_n == $date_r) {
> $retry_time = $time_n - $time_r;
> if ($retry_time >= $total_sec) {
> $can_retry = 1;
> }
> }
>
> if ($can_retry == 1) {
> $id = $DBH->quote($rc[0]);
> $no = $DBH->quote($rc[1]);
> $msg = $DBH->quote($rc[2]);
> $userid = $DBH->quote($rc[4]);
> $groupid = $DBH->quote($rc[5]);
> $datetime = $DBH->quote(&get_datetime);
> $reply = `echo $msg |$gnokii --sendsms $rc[1]`;
> sleep(1);
> chomp($reply);
> $error = $DBH->quote($reply);
>
> if($reply eq "Send succeeded!") {
> $query1 = qq!
> UPDATE $sms_retry SET state = '0'
> WHERE (id = $id)
> !;
> $DBH->do($query1);
>
> $query2 = qq!
> INSERT INTO $sms_sent (no, msg, datetime, userid, groupid)
> VALUES ($no, $msg, $datetime, $userid, $groupid)
> !;
> $DBH->do($query2);
> }
> else {
> $query3 = qq!
> UPDATE $sms_retry SET state = '0'
> WHERE (id = $id)
> !;
> $DBH->do($query3);
>
> $query4 = qq!
> INSERT INTO $sms_fail (no, msg, datetime, userid, groupid, error)
> VALUES ($no, $msg, $datetime, $userid, $groupid, $error)
> !;
> $DBH->do($query4);
> }
>
> sleep(2);
> `killall -9 gnokii`;
> }
> }
> $sth->finish;
> &free_port;
> }
> }
>
>
> sub receivesms {
> # ------------------------------------------
> # retriving sms message
>
> my ($port_status);
> my ($reply, $place, $sender, $tmp, @tmp);
> my (@lines, $line, $msg, $datetime);
>
> $port_status = &check_port;
>
> if ($port_status eq "ok") {
> `killall -9 gnokii`;
> &lock_port;
>
> for ($place=1; $place<11; $place++) {
> $reply = `$gnokii --getsms ME $place`;
> `killall -9 gnokii`;
> chomp($reply);
> if ($reply ne "SMS location ME $place empty." && $reply ne "" && $reply
> !~ /GetSMS ME $place failed!/) {
> @lines = split "\n",$reply;
> $sender="";
> $tmp="";
> foreach (@lines) {
> if (/Sender:/) {
> s/.*Sender:/Sender:/;
> ($tmp,$sender,@tmp) = split (" ",$_);
> chomp($sender);
> $sender =~ s/\+//g;
> }
> if (/^Date/) {
> ($datetime) = $_;
> chomp($datetime);
> $datetime =~ s/Date\/time: file://g;
> $datetime =~ /(.*)\/(.*)\/(.*) (.*):(.*):(.*) .*/;
> $datetime = "$3-$2-$1 $4:$5:$6";
> }
> }
> foreach $line (@lines) {
> next if ($line =~ /^Date/ || $line =~ /Sender:/);
> $msg .= $line . "\n";
> }
> $sender = $DBH->quote($sender);
> $msg = $DBH->quote($msg);
> $datetime = $DBH->quote($datetime);
> $query = qq!
> INSERT INTO $sms_inbox (no, msg, datetime, state)
> VALUES ($sender, $msg, $datetime, '1')
> !;
> $DBH->do($query);
> $msg = "";
> $reply = `$gnokii --deletesms ME $place $place`;
> `killall -9 gnokii`;
> }
> else {
> if ($place == 1) {
> $place = 11;
> }
> }
> }
> &free_port;
> }
> }
>
>
> sub lock_port {
> # ------------------------------------------
> # insert 1 to lock port
>
> my ($query);
> $query = qq!
> INSERT INTO $sms_state
> VALUES ('1')
> !;
> $DBH->do($query);
> }
>
>
> sub free_port {
> # ------------------------------------------
> # empty sms_state to free port
>
> my ($query);
> $query = qq!
> DELETE FROM $sms_state
> !;
> $DBH->do($query);
> }
>
>
> sub check_port {
> # ------------------------------------------
> # return ok if port is free
>
> my ($query, $sth, $rc, $status);
> $query = qq!
> SELECT * FROM $sms_state
> !;
> $sth = $DBH->prepare ($query);
> $sth->execute;
> $rc = $sth->rows();
> $status = "";
> if (!$rc) {
> $status = "ok";
> }
> $sth->finish;
> return ($status);
> }
>
>
> sub check_outbox {
> # ------------------------------------------
> # return ok if outbox is not empty
>
> my ($query, $sth, $rc, $status);
> $query = qq!
> SELECT * FROM $sms_outbox
> !;
> $sth = $DBH->prepare ($query);
> $sth->execute;
> $rc = $sth->rows();
> $status = "";
> if ($rc) {
> $status = "ok";
> }
> $sth->finish;
> return ($status);
> }
>
>
> sub check_retry {
> # ------------------------------------------
> # return ok if retry is not empty
>
> my ($query, $sth, $rc, $status);
> $query = qq!
> SELECT * FROM $sms_retry
> WHERE state = 1
> !;
> $sth = $DBH->prepare ($query);
> $sth->execute;
> $rc = $sth->rows();
> $status = "";
> if ($rc) {
> $status = "ok";
> }
> $sth->finish;
> return ($status);
> }
>
>
> sub get_datetime {
> my ($time);
> $_[0] ? ($time = $_[0]) : ($time = time());
>
> my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) =
> localtime ($time);
> $year = $year + 1900;
> ($mday < 10) and ($mday = "0$mday");
>
> if ($hour < 10) { $hour = "0" . $hour; }
> if ($min < 10) { $min = "0" . $min; }
> if ($sec < 10) { $sec = "0" . $sec; }
>
> my @months = qw!Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec!;
> $mon = $mon + 1;
> if ($mon < 10) { $mon = "0" . $mon; }
> if ($mday < 10) { $mday = "0" . $mday; }
> return "$year-$mon-$mday $hour:$min:$sec";
>
> }
>
>
>
>
>
>
> _______________________________________________
> gnokii-users mailing list
> address@hidden
> http://mail.freesoftware.fsf.org/mailman/listinfo/gnokii-users
>
- sms timeouts, Pavel Machek, 2002/07/12
- Re: sms timeouts, Leos Tovarek, Ph.D., 2002/07/12
- Re: sms timeouts, Pawel Kot, 2002/07/12
- Re: sms timeouts, Leos Tovarek, Ph.D., 2002/07/13
- Re: sms timeouts, Pawel Kot, 2002/07/13
- Re: sms timeouts, Leos Tovarek, Ph.D., 2002/07/13
- SMS Send failed (error=19), Pin~1.com.my, 2002/07/17
- Re: SMS Send failed (error=19), BORBELY Zoltan, 2002/07/17
- Re: SMS Send failed (error=19),
Pin~1.com.my <=
- Hide Phone Number, Pin~1.com.my, 2002/07/18
- Re: Hide Phone Number, Pawel Kot, 2002/07/19
- Re: sms timeouts, Pawel Kot, 2002/07/13