Scripts (версия 3.xx)/Отправка SMS: различия между версиями
Перейти к навигации
Перейти к поиску
McBurns (обсуждение | вклад) (Новая страница: « Category:Помощь (версия 3.xx)») |
McBurns (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
<syntaxhighlight lang="javascript"> | |||
eval (GetFileContent ('Common\\Classes\\Script.js')); | |||
var Script = new Script (); | |||
eval (Script.GetFileContent ('Common\\Classes\\Database.js')); | |||
eval (Script.GetFileContent ('Common\\Classes\\Time.js')); | |||
eval (Script.GetFileContent ('Common\\Classes\\Device.js')); | |||
eval (Script.GetFileContent ('Common\\Classes\\SMS.js')); | |||
eval (Script.GetFileContent ('Common\\Classes\\DataRead.js')); | |||
eval (Script.GetFileContent ('Solutions\\Basic\\SendSMS\\Info.js')); | |||
eval (Script.GetFileContent ('Solutions\\Basic\\SendSMS\\CDataWriteSMS.js')); | |||
eval (Script.GetFileContent ('Solutions\\Basic\\SendSMS\\COptions.js')); | |||
Script.InLogInfo ('Старт'); | |||
try { | |||
var Device = new CDevice (); | |||
if (Device.Open ()) { | |||
Script.InLogDebug ('Устройство открыто успешно'); | |||
var Options = new COptions (); | |||
var CycleCount = 1; | |||
var DataRead = new CDataRead (); | |||
while (DataRead.CheckCycle (CycleCount)) { // Проверка количества попыток обзвона в сеансе | |||
Script.InLogInfo ('Цикл рассылки <b>%s</b>', CycleCount); | |||
var Database = new CDatabase (); | |||
if (Database.Open ()) { | |||
var Info = new CInfo (); | |||
if (Info.Count (Database, DataRead)) { | |||
var Record = Database.Query (DataRead.Query ()); // Выбор записей в базе данных | |||
if (Record) { | |||
var DataWriteSMS = new CDataWriteSMS (); | |||
if (DataRead.CheckFields (Record) && | |||
DataWriteSMS.CheckFields (Record)) { | |||
while (Record.Fetch ()) { | |||
Script.WaitPause (); // Ожидание, если нажали на Паузу | |||
Info.DataShow (Record); | |||
var Time = new CTime (); | |||
if (Time.CheckTime ()) { // Проверка расписания | |||
var Status = ''; | |||
var Phone = DataRead.GetPhone (Record); | |||
if (!empty (Phone)) { // Если номер телефона не пуст | |||
if (!DataRead.CheckIsOK (Record)) { // Если статус - не прозвонен | |||
// и не достигнут предел количества попыток | |||
try { | |||
for (var i in Phone) { | |||
if (DataRead.WaitBeforeCall ()) { // Ожидание перед звонком | |||
var SMS = new CSMS (); | |||
var TextSMS = SMS.GetText (Record); | |||
if (!empty (TextSMS)) { | |||
var PhoneStatus = 'OK'; | |||
switch (Device.SendSMS (Phone[i], TextSMS, SMS.GetSender ())) { | |||
case 0: Script.InLogInfo ('Сообщение по номеру %s отправлено успешно', Phone[i]); break; | |||
case 4: PhoneStatus = 'Отправка сообщения прервана пользователем'; break; | |||
case 5: PhoneStatus = 'Истекло время ожидания отправки сообщения абоненту ' + Phone[i]; break; | |||
default: PhoneStatus = 'Ошибка отправки сообщения'; break; | |||
} | |||
if (Status != 'OK') Status = PhoneStatus; // Статус записи | |||
if (DataRead.IsRemaining (PhoneStatus)) break; // Если удачный дозвон | |||
// и не включен параметр звонить | |||
// по оставшимся номерам в ячейке | |||
if (Script.IsStop ()) break; | |||
} else Script.StopError ('Отсутствует текст сообщения. Выполнение сценария прервано.'); | |||
if (!Record.SetStatus (Status)) break; | |||
} | |||
if (Script.IsStop ()) break; | |||
} | |||
if (Script.IsStop ()) break; | |||
} | |||
catch (Err) { | |||
Status = Err.description; | |||
Script.StopError ('Ошибка в процессе отправки сообщений. ' + Err.description); | |||
} | |||
DataWriteSMS.SetStatus (Record, DataRead.GetPhone (Record, true), Status); // Запись результата звонка | |||
Info.Update (Status); | |||
} | |||
} else Script.StopError ('Номер телефона пуст.'); | |||
} else Device.Wait (1000); | |||
if (Script.IsStop ()) break; | |||
Record.Next (); | |||
} | |||
if (Script.IsStop ()) break; | |||
} // Отсутствуют необходимые поля базы данных | |||
Record.Close (); | |||
if (Script.IsStop ()) break; | |||
} else Script.InLogError ('Ошибка получения данных для отправки сообщения'); | |||
} else Script.InLogInfo ('Отсутствуют кандидаты на отправку SMS'); | |||
Database.Close (); | |||
} | |||
CycleCount++; | |||
if (Script.IsStop ()) break; | |||
} | |||
Device.Close (); | |||
} | |||
} | |||
catch (Err) { | |||
Script.InLogError ('Ошибка при работe сценария. %s. Код ошибки: %s', Err.description, Err.number); | |||
if (Database) Database.Close (); | |||
if (Device ) Device.Close (); | |||
} | |||
Script.InLogInfo ('Стоп'); | |||
</syntaxhighlight> | |||
[[Category:Помощь (версия 3.xx)]] | [[Category:Помощь (версия 3.xx)]] |
Версия 09:27, 18 октября 2013
eval (GetFileContent ('Common\\Classes\\Script.js'));
var Script = new Script ();
eval (Script.GetFileContent ('Common\\Classes\\Database.js'));
eval (Script.GetFileContent ('Common\\Classes\\Time.js'));
eval (Script.GetFileContent ('Common\\Classes\\Device.js'));
eval (Script.GetFileContent ('Common\\Classes\\SMS.js'));
eval (Script.GetFileContent ('Common\\Classes\\DataRead.js'));
eval (Script.GetFileContent ('Solutions\\Basic\\SendSMS\\Info.js'));
eval (Script.GetFileContent ('Solutions\\Basic\\SendSMS\\CDataWriteSMS.js'));
eval (Script.GetFileContent ('Solutions\\Basic\\SendSMS\\COptions.js'));
Script.InLogInfo ('Старт');
try {
var Device = new CDevice ();
if (Device.Open ()) {
Script.InLogDebug ('Устройство открыто успешно');
var Options = new COptions ();
var CycleCount = 1;
var DataRead = new CDataRead ();
while (DataRead.CheckCycle (CycleCount)) { // Проверка количества попыток обзвона в сеансе
Script.InLogInfo ('Цикл рассылки <b>%s</b>', CycleCount);
var Database = new CDatabase ();
if (Database.Open ()) {
var Info = new CInfo ();
if (Info.Count (Database, DataRead)) {
var Record = Database.Query (DataRead.Query ()); // Выбор записей в базе данных
if (Record) {
var DataWriteSMS = new CDataWriteSMS ();
if (DataRead.CheckFields (Record) &&
DataWriteSMS.CheckFields (Record)) {
while (Record.Fetch ()) {
Script.WaitPause (); // Ожидание, если нажали на Паузу
Info.DataShow (Record);
var Time = new CTime ();
if (Time.CheckTime ()) { // Проверка расписания
var Status = '';
var Phone = DataRead.GetPhone (Record);
if (!empty (Phone)) { // Если номер телефона не пуст
if (!DataRead.CheckIsOK (Record)) { // Если статус - не прозвонен
// и не достигнут предел количества попыток
try {
for (var i in Phone) {
if (DataRead.WaitBeforeCall ()) { // Ожидание перед звонком
var SMS = new CSMS ();
var TextSMS = SMS.GetText (Record);
if (!empty (TextSMS)) {
var PhoneStatus = 'OK';
switch (Device.SendSMS (Phone[i], TextSMS, SMS.GetSender ())) {
case 0: Script.InLogInfo ('Сообщение по номеру %s отправлено успешно', Phone[i]); break;
case 4: PhoneStatus = 'Отправка сообщения прервана пользователем'; break;
case 5: PhoneStatus = 'Истекло время ожидания отправки сообщения абоненту ' + Phone[i]; break;
default: PhoneStatus = 'Ошибка отправки сообщения'; break;
}
if (Status != 'OK') Status = PhoneStatus; // Статус записи
if (DataRead.IsRemaining (PhoneStatus)) break; // Если удачный дозвон
// и не включен параметр звонить
// по оставшимся номерам в ячейке
if (Script.IsStop ()) break;
} else Script.StopError ('Отсутствует текст сообщения. Выполнение сценария прервано.');
if (!Record.SetStatus (Status)) break;
}
if (Script.IsStop ()) break;
}
if (Script.IsStop ()) break;
}
catch (Err) {
Status = Err.description;
Script.StopError ('Ошибка в процессе отправки сообщений. ' + Err.description);
}
DataWriteSMS.SetStatus (Record, DataRead.GetPhone (Record, true), Status); // Запись результата звонка
Info.Update (Status);
}
} else Script.StopError ('Номер телефона пуст.');
} else Device.Wait (1000);
if (Script.IsStop ()) break;
Record.Next ();
}
if (Script.IsStop ()) break;
} // Отсутствуют необходимые поля базы данных
Record.Close ();
if (Script.IsStop ()) break;
} else Script.InLogError ('Ошибка получения данных для отправки сообщения');
} else Script.InLogInfo ('Отсутствуют кандидаты на отправку SMS');
Database.Close ();
}
CycleCount++;
if (Script.IsStop ()) break;
}
Device.Close ();
}
}
catch (Err) {
Script.InLogError ('Ошибка при работe сценария. %s. Код ошибки: %s', Err.description, Err.number);
if (Database) Database.Close ();
if (Device ) Device.Close ();
}
Script.InLogInfo ('Стоп');