Запуск: различия между версиями

Материал из Call Office Wiki
Перейти к навигации Перейти к поиску
Строка 172: Строка 172:


<syntaxhighlight lang=javascript>
<syntaxhighlight lang=javascript>
objEmail = WScript.CreateObject("CDO.Message");                                        //создаем объект CDO.Message
objEmail = WScript.CreateObject("CDO.Message");                                        // создаем объект CDO.Message


objEmail.From = "откого@mail.ru";                                                      //адрес отправителя
objEmail.From = "откого@mail.ru";                                                      // адрес отправителя
objEmail.To = "кому@mail.ru";                                                          //адрес получателя
objEmail.To = "кому@mail.ru";                                                          // адрес получателя
objEmail.Subject = "Call Office";                                                      //тема
objEmail.Subject = "Call Office";                                                      // тема
objEmail.Textbody = "Error";                                                          //тело письма
objEmail.Textbody = "Error";                                                          // тело письма




with (objEmail.Configuration.Fields) {
with (objEmail.Configuration.Fields) {
     Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2;              //посылать сообщения по сети, используя SMTP
     Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2;              // посылать сообщения по сети, используя SMTP
     Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mailserver";  //ip или DNS-имя smtp-сервера
     Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mailserver";  // ip или DNS-имя smtp-сервера
     Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25;        // порт smtp-сервера, на котором он принимает сообщения
     Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25;        // порт smtp-сервера, на котором он принимает сообщения
     Update();
     Update();

Версия 10:21, 22 марта 2021

Другие языки:
English • ‎русский

Запуск в режиме приложения

Call Office можно запускать как обычное приложение кликнув ярлык CallOffice на рабочем столе или из командной строки с параметрами.

Формат запуска:

CallOffice.hta <параметры>

Например:

CallOffice.hta "Обзвон абонентов.co"

или

CallOffice.exe <параметры>

Например:

CallOffice.exe "Обзвон абонентов.co"

Запуск в консольном режиме

Call Office можно запускать из командной строки в консольном режиме без графической оболочки (не все конфигурации поддерживают работу в этом режиме).

Формат запуска:

RunConfig.bat <параметры>

Например:

RunConfig.bat "Обзвон абонентов.co"

В консольном режиме комбинация клавиш Ctrl-C приостанавливает выполнение сценария, Ctrl+Break завершает работу сценария.

Запуск с помощью командного файла (bat, cmd)

СallOffice можно запускать из командного файла, это может быть полезно если необходимо программу запускать в определенное время (например через планировщик заданий). Обратите внимание, что при использовании русских символов в названии конфигурации кодировка файла должна быть стандартной Windows 866.

Пример запуска одного экземпляра программы, с автоматическим запуском сценария и завершением ее работы после выполнения,

start "" /D "C:\Program Files (x86)\Call Office" CallOffice.hta "Обзвон абонентов.co" /start /exit

Пример последовательного запуска нескольких экземпляров программы, с автоматическим запуском сценария и завершением ее работы после выполнения,

start "" /WAIT /D "C:\Program Files (x86)\Call Office" CallOffice.hta "Обзвон абонентов №1.co" /start /exit
start "" /WAIT /D "C:\Program Files (x86)\Call Office" CallOffice.hta "Обзвон абонентов №2.co" /start /exit

Пример параллельного запуска нескольких экземпляров программы, с автоматическим запуском сценария и завершением ее работы после выполнения,

start "" /D "C:\Program Files (x86)\Call Office" CallOffice.hta "Обзвон абонентов №1.co" /start /exit
start "" /D "C:\Program Files (x86)\Call Office" CallOffice.hta "Обзвон абонентов №2.co" /start /exit

Пример повторного запуска конфигурации, в случае остановки сценария

:CallOffice

start "" /WAIT /D "C:\Program Files (x86)\Call Office" CallOffice.hta "Обзвон абонентов.co" /start /exit
 
goto :CallOffice

Запуск в режиме сервиса Windows

С версии 3.18 СallOffice можно запускать виде сервиса Windows. Для этого необходимо перейти в раздел Конфигурация и установить конфигурацию как сервис. Каждая конфигурация может быть установлена как отдельный сервис со своим именем. Имена сервисов должны быть уникальными.

Важно! При работе программы как сервиса Windows графическая оболочка приложения недоступна - на экране не будет отображаться окно приложения. Следить за работоспособностью конфигурации можно в стандартном приложении Просмотр событий или по журналу работы сценария.

При создании сервиса через интерфейс программы, путь до файла конфигурации подставляется автоматически при создании сервиса, затем подставляются параметры, указанные в строке Параметры. Обратите внимание, что если не будет указан параметр /start указанная конфигурация будет загружена, но не запущена. То есть сервис запустится, но конфигурация не будет выполняться. Аналогично с параметром /exit, если конфигурация остановится, сервис будет по прежнему находиться в состоянии Выполняется. Поэтому, при работе программы в режиме сервиса желательно указание параметров /start и /exit. Помимо этих параметров, можно указать дополнительные параметры командной строки. Управление сервисами может осуществляться через командную строку, описание по ссылки

Параметры командной строки

Call Office можно запускать из командной строки с параметрами.

Формат запуска:

<имя конфигурации> [/start] [/exit] [переменные]
  <имя конфигурации> - имя конфигурации, которая будет загружена при запуске программы
  /start - запустить конфигурацию на выполнение
  /exit  - завершить работу программы после выполнения конфигурации.
  переменные - параметры в виде <название переменной>=<значение переменной>:
     <название переменной> - название переменной, которая будет добавлена в сценарий с подстановкой "Arg." перед названием.
     <значение переменной> - значение переменной, которое будет присвоено переменной.

Например:

CallOffice.exe "Обзвон абонентов.co" /start /exit Group=55

Означает, что при старте программы будет открыта конфигурация Обзвон абонентов.co, она будет запущена автоматически при старте программы (параметр /start), в области действия сценария будет доступна переменная с именем Arg.Group значение которой 55. При остановке сценария программа автоматически завершит работу (параметр /exit).

Коды возврата

При завершении приложения Call Office возвращает код возврата:

  • 0 - приложение завершилось успешно;
  • 1 - в процессе работы сценария произошла ошибка;
  • 2 - пользователь остановил работу сценария;

Помимо этого в сценарии можно указать пользовательский код возврата используя функцию Script.SetExitCode (<код возврата>), например:

Script.SetExitCode (8);

Указанные таким образом код завершения перекрывает стандартные коды завершения. В случае, если конфигурация запускает несколько сценариев, каждый из которых может установить код возврата, при завершении работы приложения будет возвращен код возврата, который был установлен последним.

Код возврата может быть проанализирован после завершения работы приложения. Например в bat файле это может выглядеть так:

CallOffice.exe "Обзвон абонентов.co" /start /exit

if errorlevel 2 goto UserBreak
if errorlevel 1 goto Error

echo "Приложение завершилось без ошибок"
goto Exit

:UserBreak
echo "Пользователь остановил работу сценария"
goto Exit 

:Error
echo "Приложение завершилось с ошибкой"
goto Exit 

:Exit

Пример перезапуска программы с проверкой кода возврата:

:CallOffice

  start "" /WAIT /D "C:\Program Files (x86)\Call Office\" CallOffice.exe "Обзвон абонентов.co" /start /exit

  if errorlevel 2 goto Exit
 
goto :CallOffice

:Exit

Если необходимо получить код возврата при вызове другого bat файла, следует использовать функцию call, например:

call RunConfig.bat "Обзвон абонентов.co"

echo %errorlevel%

Контроль работы программы

В некоторых случаях требуется более сложный алгоритм контроля работы программы, для этого можно использовать скрипты js, например следующий скрипт запустит два экземпляра программы и будет ожидать их завершения:

var WshShell = new ActiveXObject ('WScript.Shell');

var Exec1 = WshShell.Exec ('C:\Program Files (x86)\Call Office\CallOffice.exe "Обзвон абонентов.co" /start /exit');
var Exec2 = WshShell.Exec ('C:\Program Files (x86)\Call Office\CallOffice.exe "Прием звонков.co" /start /exit');

WScript.Sleep (1000)
WScript.Echo ("Waiting...");

while (Exec1.Status == 0 || Exec2.Status == 0) {         // Пока один из процессов запущен
   WScript.Sleep (1000);                                 // Немного ждем ...  
}

WScript.Echo ("End");

Данный js скрип отправляет на почту уведомление. Его можно использовать совместно с bat файлами из пункта Коды возврата. Например, в случае возникновения ошибки будет выполнена отправка на указанный email сообщения.

objEmail = WScript.CreateObject("CDO.Message");                                        // создаем объект CDO.Message

objEmail.From = "откого@mail.ru";                                                      // адрес отправителя
objEmail.To = "кому@mail.ru";                                                          // адрес получателя
objEmail.Subject = "Call Office";                                                      // тема
objEmail.Textbody = "Error";                                                           // тело письма


with (objEmail.Configuration.Fields) {
    Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2;              // посылать сообщения по сети, используя SMTP
    Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mailserver";  // ip или DNS-имя smtp-сервера
    Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25;        // порт smtp-сервера, на котором он принимает сообщения
    Update();
}
try {
    objEmail.Send();
}
catch(e) {
    WScript.Echo(e.number);
    WScript.Echo(e.message);
}