Scripts (версия 3.xx)/Организация звукового меню
Версия от 06:27, 8 апреля 2014; McBurns (обсуждение | вклад)
Для организации звукового меню внутри сценария вам понадобится объект 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;
}