Отправка SMS на сотовые телефоны клиентов

Автор:григ
Дата:23.01.2002
Просмотров:2743
Скачиваний:1794
Оценка:, Оценок - 1
Сохранить в файле

Обсудить в форуме

Описание

Возможный способ отправки SMS на РСЛ

Текст примера

 /*******************************************/
/*Отправка SMS на сотовые телефоны клиентов*/
/*Через HTML-страницу. InternetExplorer.   */
/*Только для 3-х звенки!                   */
/*******************************************/
import lgxse;
   array urls,macs;
    
    urls(0)="http://www.nwgsm.com/sendsms.htm";
    urls(1)="http://www.vcc.kirov.ru/sms.html";
    urls(2)="http://www.mts.ru/sms/";
/*    
    urls(0)="k:\\grig\\nwgsm.htm";
    urls(1)="k:\\grig\\vcc.htm";
    urls(2)="k:\\grig\\mts.htm";
*/    
    macs(0)="f_NWGSM"; /*Северо-Западный GSM*/
    macs(1)="f_VCC";   /*Вятская сотовая сеть*/
    macs(2)="f_MTS";   /*МТС*/
    
            
 CountDoC=0;
 URL="";
 ERROR=false;
 TERROR="";
 ie=NULL;
 WorkComplete=false;
 Provider=0;
 NTel="+78332491986";
 TextMsg="1DTB SMSinfo";

 /*Пауза*/
 macro f_Pause(pause)
  while(pause>0)
   pause=pause-1;
   TestEvent(1);
  end;
 end;

 /*Заполняем форму и отправляем результат*/
 /*Северо-западный GSM*/
 macro f_NWGSM()
  ad=ie.Document;
  form=ad.Forms(0);
 
  elements=form.Elements;
  count=elements.length;
 
  /*создаем указатели на нужные элементы*/
  Phone=null; 
  Russian=null;
  Now=null;
  Msg=null;
  Send=null;

  i=0;
  while(i<count)
   element=elements.Item(i);
   name=StrLwr(element.Name);
   if(name=="tll")  Phone=element;   end;
   if(name=="co")   Russian=element; end;
   if(name=="so")   Now=element;     end;
   if(name=="txt")  Msg=element;     end;
   if(name=="send") Send=element;    end;
   element=null;
   i=i+1;
  end;                

  if(valtype(Phone)*valtype(Russian)*valtype(Now)*valtype(Msg)*valtype(Send)==0)
   ERROR=true;
   TERROR="Ошибка! Структура страница изменилась!";
   return;
  end;

  Phone.Value=NTel;
  Russian.Checked=false;
  Now.Checked=false;
  Msg.Value=TextMsg;
  Send.Click;
 end;

 /*Заполняем форму и отправляем результат*/
 /*Вятская сотовая*/
 macro f_vcc()
  ad=ie.Document;
  form=ad.Forms(0);
 
  elements=form.Elements;
  count=elements.length;
 
  /*создаем указатели на нужные элементы*/
  Phone=null; 
  Msg=null;
  Send=null;

  i=0;
  while(i<count)
   element=elements.Item(i);
   name=StrLwr(element.Name);
   if(name=="subj")  Phone=element;   end;
   if(name=="msg")   Msg=element;     end;
   if((name=="c") and (StrLwr(element.Value)=="отправить сообщение")) Send=element; end;
   element=null;
   i=i+1;
  end;                

  if(valtype(Phone)*valtype(Msg)*valtype(Send)==0)
   ERROR=true;
   TERROR="Ошибка! Структура страница изменилась!";
   return;
  end;

  Phone.Value=NTel;
  Msg.Value=TextMsg;
  Send.Click;
 end;       

 /*Заполняем форму и отправляем результат*/
 /*MTS*/
 macro f_MTS()
  ad=ie.Document;
  form=ad.Forms(1);
 
  elements=form.Elements;
  count=elements.length;
 
  /*создаем указатели на нужные элементы*/
  Phone=null; 
  Msg=null;
  Send=null;

  i=0;
  while(i<count)
   element=elements.Item(i);
   name=StrLwr(element.Name);
   if(name=="to")   Phone=element;   end;
   if(name=="msg")  Msg=element;     end;
   if((name=="c") and (StrLwr(element.Value)=="отправить")) Send=element; end;
   element=null;
   i=i+1;
  end;                

  if(valtype(Phone)*valtype(Msg)*valtype(Send)==0)
   ERROR=true;
   TERROR="Ошибка! Структура страница изменилась!";
   return;
  end;

  Phone.Value=NTel;
  Msg.Value=TextMsg;
  Send.Click;

 end;


 /*Открываем InternerExplorer*/
 macro CreateIE()
  /*создаем и визуализируем объект*/
  ie=TlgActiveX("InternetExplorer.Application",true);
  ie.Visible=true;
                            
  /*создаем объект-перехватчик интерфейса WebBrowser*/
  res=lgNewHandlerObject(ie,"WebBrowser");
  if(not res)
   TERROR="Не прошел перехват событий от InternetExplorer"; ERROR=true; return;
  end;                        
  /*задаем макрообработчик события*/
  res=lgSetHandlerEvent(ie,"DocumentComplete","DocumentComplete");
  if(not res) TERROR="Не прошел перехват события DocumentComplete"; ERROR=true; return; end;
 end;

 macro DocumentComplete(Sender,ObjUrl)
  CountDoC=CountDoc+1;                      
  /*заполнять форму нужно только для первого документа*/
  if((CountDoC==1) and (StrUpr(ObjUrl)==StrUpr(URL))) execmacro(macs(Provider));
  else
   /*отрабатываем ошибку загрузки URL и успешный результат*/
   if((valtype(ObjUrl)==V_STRING) and (index(StrUpr(ObjUrl),"ERROR")>0))
    TERROR=ObjUrl; ERROR=true; return;
   elif(StrUpr(ObjUrl)==StrUpr(URL)) /*игнорируем повторные события базовой страницы*/
    return;
   else /*успешно отработали*/
    WorkComplete=true; return;
   end;
  end;
 end;

 /*Навигация на нужную страницу*/
 macro f_Navigate()
  ie.Navigate(URL); /*переходим на базовую страничку*/
  /*пока нет ошибок и работа не выполнена - слушаем события*/
  key=0;
  while((key!=32) and (not ERROR) and (not WorkComplete))
   lgxCheckEvents();
   key=TestEvent(1);
  end;
  /*
  if(key==32)
   cont=false;
   GetTrue(cont,"Прервать работу?");
   if(cont)
    if(valtype(ie)==V_GENOBJ) ie.Quit; ie=null; end;
    exit(0);
   end;
  end;
  */
 end;

 /*Основная функция*/
 /*на входе - номер провайдера, в глобальной переменной NTel - номер телефона,
   в глобальной переменной TextMsg - текст сообщения*/
 macro SendSMS(prov)
  CountDoC=0;
  ERROR=false;
  TERROR="";
  WorkComplete=false;
  LocalCreate=false;

  /*создаем объект InternetExplorer*/
  if(valtype(ie)!=V_GENOBJ) CreateIE(); LocalCreate=true; end;
                   
  Provider=prov;
  URL=urls(Provider);
  ie.Visible=true;
        
  f_Navigate();
  if(ERROR)
   println("ОШИБКА!!!");
   println(URL);
   println(TERROR);
  end;
  /*ie.Visible=false;*/
  if(LocalCreate and (valtype(ie)==V_GENOBJ)) ie.Quit; ie=null; end;
  return TERROR;
 end;

                                         
/* SendSMS(0);*/

end;