Scripts (версия 3.xx)/Организация звукового меню

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

Для организации звукового меню внутри сценария вам понадобится объект Device, создаваемый в каждом стандартном сценарии командой:

  var Device = new CDevice ();

Итак, простейшее одноранговое меню:

// Считаем, что Device объявлено заранее

Device.StartDetectDTMF (1,              // Ожидается нажатие одной клавиши
                        '0123456789',   // Считаются значимыми клавиши от 0 до 9
                        '*#');          // Прерывают ожидание клавиши * и #

Device.Listen (10);                     // Ждём нажатия 10 секунд

Device.StopDetectDTMF ();               // Остановка распознавания нажатых клавиш

var DetectedSignal = Device.ReceivedSignals ();         // Значение нажатой клавиши в переменной DetectedSignal

switch (DetectedSignal) {

   case '0':
      // <здесь помещаем то, что выполняется при нажатии клавиши «0»>;
      break;

   case '1':
      // <здесь помещаем то, что выполняется при нажатии клавиши «1»>;
      break;

   case '2':
      // <здесь помещаем то, что выполняется при нажатии клавиши «2»>;
      break;

   case '3':
      // <здесь помещаем то, что выполняется при нажатии клавиши «3»>;
      break;

   case '4':
      // <здесь помещаем то, что выполняется при нажатии клавиши «4»>;
      break;

   case '5':
      // <здесь помещаем то, что выполняется при нажатии клавиши «5»>;
      break;

   case '6':
      // <здесь помещаем то, что выполняется при нажатии клавиши «6»>;
      break;

   case '7':
      // <здесь помещаем то, что выполняется при нажатии клавиши «7»>;
      break;

   case '8':
      // <здесь помещаем то, что выполняется при нажатии клавиши «8»>;
      break;

   case '9':
      // <здесь помещаем то, что выполняется при нажатии клавиши «9»>;
      break;

   default:
      // <здесь помещаем то, что выполняется, если нажаты клавиши для прерывания или не нажато ничего>;
      break;
}

Для создания многоуровневого меню можно добавлять этот код в любой из пунктов case. Например:

// Считаем, что Device объявлено заранее

Device.StartDetectDTMF (1,              // Ожидается нажатие одной клавиши
                        '0123');        // Считаются значимыми клавиши от 0 до 3

Device.Listen (10);                     // Ждём нажатия 10 секунд

Device.StopDetectDTMF ();               // Остановка распознавания нажатых клавиш

var DetectedSignal = Device.ReceivedSignals ();         // Значение нажатой клавиши в переменной DetectedSignal

switch (DetectedSignal) {

   case '1':                   // При нажатии клавиши «1» делаем дополнительное голосовое меню

      //<здесь размещаем код, воспроизводящий описание пунктов меню>

      Device.StartDetectDTMF (1,              // Ожидается нажатие одной клавиши
                              '12');          // Считаются значимыми клавиши 1 и 2

      Device.Listen (10);                     // Ждём нажатия 10 секунд

      Device.StopDetectDTMF ();               // Остановка распознавания нажатых клавиш

      DetectedSignal = Device.ReceivedSignals ();         // Значение нажатой клавиши в переменной DetectedSignal

      switch (DetectedSignal) {

         case '1':
            // <здесь помещаем то, что выполняется при нажатии клавиши «1» во втором уровне меню>;
            break;

         case '2':
            // <здесь помещаем то, что выполняется при нажатии клавиши «2» во втором уровне меню>;
            break;

         default:
            // <здесь помещаем то, что выполняется, если нажаты клавиши для прерывания или не нажато ничего во втором уровне меню>;
            break;
      }

      break;

   case '2':
      // <здесь помещаем то, что выполняется при нажатии клавиши «2»>;
      break;

   case '3':
      // <здесь помещаем то, что выполняется при нажатии клавиши «3»>;
      break;

   case '0':
    default:
      // <здесь помещаем то, что выполняется при нажатии клавиши «0», она считается нажатой по умолчанию>;
      break;
}