[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: рассылать sms



Hello!

On Monday 09 November 2009 07:53:41 Олег Ключкин wrote:
> У меня статья по такой задаче есть:
> http://www.os-rostov.ru/stati/server-sms-soobsenij

Не проще ли AT-командами управлять модемом? Ниже в качестве 
примера приведен кусок перлового кода для работы по голосовому
каналу. Где-то и для рассылки смс скрипт валяется, делал чтобы
подруге на телефон гороскоп присылат, скачивая его с какого-то 
сайта :-) так там все еще проще.

Отправлять все же надежнее транслитом, ибо старые телефоны 
просто не поддерживают кириллицу ни в каком виде. Сталкивался
с этим лет 5 назад, не факт, что таких телефонов "на руках" вовсе 
не осталось.


#!/usr/bin/perl

use Device::Modem;
use DBI;

$dbuser="mapedit";
$dbpwd="";
$dbname="map_navigation";

my $number = $ARGV[0];
chomp $number;
$number =~ s/\+7/8/g;

my $pwd = $ARGV[1];
chomp $pwd;
$pwd = "incom: \r\n";

#my $unit_id = $ARGV[2];
my $unit_id = $number;

my $port ||= '/dev/ttyS0';
my $baud ||= 9600;
my $timeout = 10;

my $modem = new Device::Modem ( port => $port );

if( $modem->connect( baudrate => $config{'baud'} || 9600 ) ) {
	print "ok connected.\n";
} else {
	die "cannot connect to $port serial port!: $!";
}

print '- trying to dial [', $number, ']', "\n";

($ok, $answer) = $modem->dial($number,30);
if( $ok ) {
	print "Ok, number dialed\n";
} else {
	#print "No luck!\n";
	die "No connect: $answer\n";
}

# послать навигатору приглашение к обмену данными
$modem->atsend( $pwd );

my $close = 0;
my $file = '';
my $i=0;

while( !$close )
{
  $answer = $modem->answer(), "\n";
  if ($answer eq '+++' ||
      $answer eq 'NO CARRIER' ||
      $answer eq 'AT+CPAS' ||
      $answer eq 'ATH')
  {
    print "hungup '$answer'\n";
    $close = 1;
  }
  else
  {
    chomp $answer;
    $answer =~ s/\r//g;
    $answer =~ s/\n//g;
    print "[".$answer."]\n";
    $file .= $answer;
  }
  # limit execution circles
  if (++$i>$timeout)
  {
    print "timeout (circles): $timeout\n";
    $close = 1;
  }
}
# end data session
$modem->attention();          # send 'attention' sequence (+++)
$modem->hangup();             # returns modem answer
$modem->disconnect();


Best regards, Alexey Pechnikov.
http://pechnikov.tel/

Reply to: