Дополнения: различия между версиями

Материал из Call Office Wiki
Перейти к навигации Перейти к поиску
Строка 6: Строка 6:
   var Device = new CDevice ();
   var Device = new CDevice ();


'''Внимание!''' В коде нет обработки ошибок. Если она необходима, вам надо будет сделать её самим.
 


<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
   var FindDevice = new ActiveXObject("CallOffice.Device");     // Создаём экземпляр объекта Device
   var FindDevice = new ActiveXObject("CallOffice.Device");       // Создаём экземпляр объекта Device
 
  DeviceList = FindDevice.DeviceList (1).toArray ();              // Получаем список устройств и передаём его в массив


   DeviceList = FindDevice.DeviceList (1).toArray ();          // Получаем список устройств и передаём его в массив
   for (var i in DeviceList) {                                    // Перебираем полученные устройства


  for (var i in DeviceList) {                                  // Перебираем полученные устройства
      var Dev = DeviceList[i].toArray ();                          // Получаем атрибуты устройства из списка


       var Dev = DeviceList[i].toArray ();                      // Получаем атрибуты устройства из списка
       if (Dev[1] == 7 && !Dev[5]) {                                // Если это модем Huawei и нет ошибки при обращении к нему


      if (Dev[1] == 7 && !Dev[5]) {                             // Если это модем Huawei и нет ошибки при обращении к нему
        try {


        FindDevice.Open (Dev[3]);                              // Открываем текущее устройство
            FindDevice.Open (Dev[3]);                              // Открываем текущее устройство


        var Response = FindDevice.SendCommand ('ATI1<cr>');    // Получаем ответ на посланную в устройство команду ATI1<cr>
            var Response = FindDevice.SendCommand ('ATI1<cr>');    // Получаем ответ на посланную в устройство команду ATI1<cr>


        var SplitATIResult = /IMEI:\s([0-9]{15})/.exec (Response);            // Извлекаем из ответа IMEI устройства
            var SplitATIResult = /IMEI:\s([0-9]{15})/.exec (Response);            // Извлекаем из ответа IMEI устройства


        if (SplitATIResult) {                                  // Если IMEI получен
            if (SplitATIResult) {                                  // Если IMEI получен


            var IMEI = SplitATIResult[1];                      // Передаём его в переменную IMEI
              var IMEI = SplitATIResult[1];                      // Передаём его в переменную IMEI


            if (IMEI == 'IMEI нужного вам модема') {            // Проверяем на совпадение с нужным IMEI из 15 знаков
              if (IMEI == 'IMEI нужного вам модема') {            // Проверяем на совпадение с нужным IMEI из 15 знаков


              var DevConfig = Script.SelectConfig (undefined, 'Device');      // Получаем данные устройства из конфигурации
                  var DevConfig = Script.SelectConfig (undefined, 'Device');      // Получаем данные устройства из конфигурации
              DevConfig.OpenString = Dev[3];                  // Переопределяем  
                  DevConfig.OpenString = Dev[3];                  // Переопределяем  
              DevConfig.Name      = Dev[4];                  // параметры найденными
                  DevConfig.Name      = Dev[4];                  // параметры найденными
              DevConfig.Id        = Dev[3];                  // по IMEI
                  DevConfig.Id        = Dev[3];                  // по IMEI


              FindDevice.Close ();                            // Закрываем устройство
                  FindDevice.Close ();                            // Закрываем устройство


              break;                                          // Выходим из цикла поиска нужного модема
                  break;                                          // Выходим из цикла поиска нужного модема
              }
             }
             }
         }
         }
          
         catch (Err) {                                            // Выводим сообщение об ошибке открытия модема
         FindDevice.Close ();                                   // Закрываем устройство, если оно не оказалось нужным
 
            Script.InLogInfo ('Ошибка проверки модема ' + Dev[4] + '. ' + Err.description);
        }
     
         FindDevice.Close ();                                     // Закрываем устройство, если оно не оказалось нужным
       }
       }
   }
   }


   FindDevice = null;                                           // Уничтожаем экземпляр объекта Device
   FindDevice = null;                                             // Уничтожаем экземпляр объекта Device
</syntaxhighlight>
</syntaxhighlight>

Версия 09:24, 30 сентября 2015

На этой странице вы можете найти дополнения, которые можно вставить в текст сценария, чтобы изменить его работу.

Автоматическое определение порта модема Huawei при переподключении

Это дополнение автоматически находит модем по уникальному IMEI в списке подключенных к компьютеру устройств и заменяет его параметрами данные из конфигурации. Приведённый ниже код надо вставить в начале текста сценария после строки:

  var Device = new CDevice ();


   var FindDevice = new ActiveXObject("CallOffice.Device");        // Создаём экземпляр объекта Device

   DeviceList = FindDevice.DeviceList (1).toArray ();              // Получаем список устройств и передаём его в массив

   for (var i in DeviceList) {                                     // Перебираем полученные устройства

      var Dev = DeviceList[i].toArray ();                          // Получаем атрибуты устройства из списка

      if (Dev[1] == 7 && !Dev[5]) {                                // Если это модем Huawei и нет ошибки при обращении к нему

         try {

            FindDevice.Open (Dev[3]);                              // Открываем текущее устройство

            var Response = FindDevice.SendCommand ('ATI1<cr>');    // Получаем ответ на посланную в устройство команду ATI1<cr>

            var SplitATIResult = /IMEI:\s([0-9]{15})/.exec (Response);             // Извлекаем из ответа IMEI устройства

            if (SplitATIResult) {                                  // Если IMEI получен

               var IMEI = SplitATIResult[1];                       // Передаём его в переменную IMEI

               if (IMEI == 'IMEI нужного вам модема') {            // Проверяем на совпадение с нужным IMEI из 15 знаков

                  var DevConfig = Script.SelectConfig (undefined, 'Device');       // Получаем данные устройства из конфигурации
                  DevConfig.OpenString = Dev[3];                   // Переопределяем 
                  DevConfig.Name       = Dev[4];                   // параметры найденными
                  DevConfig.Id         = Dev[3];                   // по IMEI

                  FindDevice.Close ();                             // Закрываем устройство

                  break;                                           // Выходим из цикла поиска нужного модема
               }
            }
         }
         catch (Err) {                                             // Выводим сообщение об ошибке открытия модема

            Script.InLogInfo ('Ошибка проверки модема ' + Dev[4] + '. ' + Err.description);
         }
      
         FindDevice.Close ();                                      // Закрываем устройство, если оно не оказалось нужным
      }
   }

   FindDevice = null;                                              // Уничтожаем экземпляр объекта Device