Версия 1.4.5.2 серверной части

Новости No Comments »

Версия 1.4.5.2 серверной части программы отправки смс ProfiSMS.

Добавлено:

1. на вкладке “Команды по СМС” добавлена возможность задания команды по ключевому слову. Работает аналогично командам типа *555* , за исключением того, что ключевое слово из текста смс не удаляется.

Изменено:

1. в основной лог-файл программы события теперь пишутся с указанием даты-времени (ранее писалось только время).
2. надпись “автопроверка…” в основном окне серверной части служит для того, чтобы пользователь не волновался, работает ли программа. Но если идет постоянная рассылка, то эта надпись “утомляет”. Поэтому если это не штатная автопроверка раз в указанный интервал, то эта надпись не будет появляться.

Новую версию программы отправки смс можно скачать со страницы Скачать.

СМС-команды и публикация СМС на сайтах

Технические 8 Comments »

Смс можно использовать по разному, и как частный пример - отдавать команды на запуск программ. А программы могут выполнять любые функции - например, запуск каких-то процедур, которые невозможно запланировать по cron-у (”задачнику”). А так - отправили на номер смс сервера секретную команду и программа смс-сервера запустила соответствующую программу.

И как еще один частный пример - передача смс сообщений на свой сайт для дальнейшей обработки. Это может быть какое-то голосование, опрос или просто “фишка” для посетителей сайта. Пример Вы можете наблюдать на сайте ProfiSMS.ru - посетитель сайта может отправить смс на номер смс-сервера, указав в начале текса смс код команды (например *555*). Делается это очень просто, объясню на примере именно сайта ProfiSMS.ru :
1) программа Сервер ProfiSMS получает такую “командную” смску, “разбирает ее”
2) и видя код *555* запускает программу, которая передает данные (текст смс, дату отправки, номер отправителя) в Интернет, а именно php-скрипту на сайте ProfiSMS.ru

Единственное надо понимать, что компьютер на котором работает программа Сервер ProfiSMS должен быть включен, чтобы программа работала. И этот компьютер должен иметь выход в Интернет, чтобы уже программа передачи данных в Интернет могла передать эти данные.

Т.о. можно легко расширить возможности программы Сервер ProfiSMS и автоматизировать некоторые процессы, которые до этого требовали непосредственного присутствия.

И чтобы Вам легче было сообразить как это все, разберем детально пример с публикацией смс на сайте. В программу установки ProfiSMS входит и упоминаемая выше программка передачи данных на сайт в интернет. Она называется put2site и находится в подкаталоге psmserver\ext\ . Там же расположен и файл настроек этой программки, в котором Вы можете задать адрес Вашего сайта и имя php-скрипта (программа на стороне сервера, которая обрабатывает принятые данные).

Запустите программу  Сервер ProfiSMS и перейдите на вкладку “Команды по СМС” :

смс на сайт

Здесь Вы видите, что мы задали условие - получив смс, в начале которого текст *555* будет запущена программа put2site.exe, которая находится в подкаталоге ext. Буковки “DS N TS” означают, что программа Сервер ProfiSMS передаст программе put2site параметры:
N - номер отправителя
DS - дата-время отправки смс (всегда передается в формате ДД.ММ.ГГГГ чч:мм:сс - 09.04.2009 04:50:07)
TS - текст смс (текст команды вырезается автоматически)
Неважно в каком порядке Вы укажете эти параметры - программе они передаются вначале Номер отправителя, потом Дата-Время отправки, и потом текст смс.

Смс-сервер далее спокойно продолжает свою работу, а запущенная им программа put2site - выполняет то, что положено выполнять ей. Т.е. put2site вызывает скрипт на сервере в Интернет и передает ему через GET три параметра - номер отправителя, дату-время отправки смс и текст смс.

Адрес сервера и имя скрипта настраивается через одноименный ini-файл (put2site.ini). Важно заметить, что Вы можете переименовать программу put2site как угодно, и она всегда будет искать одноименный ini-файл. Можно было и адрес сайта и имя скрипта передать через командную строчку, но в целях экономии места в командной строке я вынес это в ini-файл. Содержимое ini-файла выглядит так:

[Site]
; адрес Вашего сайта yoursire.ru
siteadr=yoursire.ru

; имя Вашего скрипта,относительно главного каталога сайта.
; рекомендуется размещать свой скрипт в отдельный каталог с секретным названием
adrscript=secrdir/yourscript.php

; т.е. полный адрес скрипта будет таким: http://yoursire.ru/secrdir/yourscript.php

Собственно с этим все должно быть понятно. Ну а сам скрипт выполняет у меня простое действие - вносит получаемые данные в таблицу БД. И как Вы заметили, сайт выполнен на движке WordPress и эта публикация смс легко вписалась в общий дизайн сайта.

И просто для иллюстрации, вот основной код php-скрипта:

$restext=’1′;
if((isset($_GET['a1']))&&(isset($_GET['a2']))&&(isset($_GET['a3'])))
{

@include_once(”sms2siteproc.php”);
$nomer=trim($_GET['a1']);
$dtsend=trim($_GET['a2']);
$txtmsg=trim($_GET['a3']);

// вызов функции отправки емайл-уведомления о новой смс
newSMS2Site($nomer,$dtsend,$txtmsg);

// это мы немного прячем номер отправителя
if (strlen($nomer)>6) {$nomer=substr_replace($nomer,’***’,strlen($nomer)-3); };

$restext=’2′;
if((strlen($nomer)>1)AND(strlen($dtsend)>18)AND(strlen($txtmsg)>0))
{
$restext=’0′;
if($dbh=db_open()){
$sql1=”INSERT INTO sms2site(nom,dtsend,txtmsg) VALUES (”;
$sql1=$sql1.”‘”.$nomer.”‘,STR_TO_DATE(’”.$dtsend.”‘,’%d.%m.%Y %H:%i:%s’), ‘”.mysql_escape_string($txtmsg).”‘)”;

if (!$sth=mysql_query($sql1)){
$restext=’3 ‘.$sql1;
};
};
};

}
echo $restext;

function newSMS2Site($nomer,$dtsend,$txtmsg){
$msgm=”Новая смс на сайте!\n\n”;
$msgm=$msgm.”Номер:               “.$nomer.”\n”;
$msgm=$msgm.”Дата-время отправки: “.$dtsend.”\n”;
$msgm=$msgm.”Текст сообщения:\n———————-\n”;
$msgm=$msgm.$txtmsg;
$msgm=$msgm.”\n———————-\n”;

MailmsgRU($msgm,”support@profisms.ru”,”support@rateam.biz”,”New sms to site!”);
}

А это основной код самой программы put2site :

procedure tophp(adrsite,adrscript,parstr:string);
var IdHTTP1: TIdHTTP;
StrResult:string;
begin
StrResult:=”;
IdHTTP1:=TIdHTTP.Create(nil);

IdHTTP1.ProxyParams.ProxyPort:=0;
IdHTTP1.ProxyParams.ProxyServer:=”;
IdHTTP1.ProxyParams.BasicAuthentication:=false;
IdHTTP1.ProxyParams.ProxyUsername:=”;
IdHTTP1.ProxyParams.ProxyPassword:=”;

IdHTTP1.HandleRedirects:=True;
IdHTTP1.Host:=adrsite;
IdHTTP1.Port:=80;
IdHTTP1.RecvBufferSize:=32768;
IdHTTP1.ReadTimeout:=5000;
IdHTTP1.Request.UserAgent:=’Mozilla/5.0 (compatible; ProfiSMS.ru)’;
IdHTTP1.ProtocolVersion:=pv1_0;
try
StrResult:=IdHTTP1.Get(adrsite+’/'+adrscript+’?'+parstr);
except
end;
IdHTTP1.Destroy;
writeln(StrResult);
end;

begin
adrsite:=”; parstr:=”; adrscript:=”;

if ParamCount >0 then
begin
NameINI:=Application.ExeName;
delete(NameINI,length(NameINI)-length(ExtractFileExt(NameINI))+1,100);
loadini(NameINI+’.ini’);

for i:=1 to ParamCount do
if pos(’N=’,UpperCase(ParamStr(i)))=1 then
begin  nomer:=copy(ParamStr(i),3,length(ParamStr(i))-2);
end else
if pos(’DS=’,UpperCase(ParamStr(i)))=1 then
begin  ds:=copy(ParamStr(i),4,length(ParamStr(i))-3);
end else
if pos(’TS=’,UpperCase(ParamStr(i)))=1 then
begin  msgtxt:=copy(ParamStr(i),4,length(ParamStr(i))-3);
end;
end;

if pos(’http://’,adrsite)=0 then adrsite:=’http://’+adrsite;
parstr:=parstr+’a1=’+UrlEncode(nomer)+’&a2=’+UrlEncode(ds)+’&a3=’+UrlEncode(msgtxt);
if (length(adrsite)*length(parstr)*length(adrscript)>0) then tophp(adrsite,adrscript,parstr);
end.

Этих кусков исходников достаточно, чтобы по-быстрому написать и свою программу передачи данных в Интернет и скрипт приема этих данных на сайт.

.
Подписка на новости по RSS Вход