VXML для ввода DTMF букв на основе их размещения на клавиатуре - PullRequest
2 голосов
/ 21 января 2011

Я новичок в VXML (и кодировании в целом), и, видимо, я пытаюсь сделать это ... не нормально, но, надеюсь, это можно сделать.

Я понимаю принципиальную концепциюDTMF ввода с VXML, где я использую:

<grammar mode="dtmf"><![CDATA[ (*|0|1|2|3|4|5|6|7|8|9)<2-31> ]]></grammar>
<prompt>something here</prompt>
<noinput-nomatch-filled>conditions</noinput-nomatch-filled>

Я пытаюсь сделать этовыполнить несколько действий, чтобы разрешить DTMF ввод букв в зависимости от их расположения на клавиатуре.Вы бы достигли этого, набрав сначала номер, на котором находится буква (2-9), и разместив эту букву (1-4).

Например: «E» будет 3 и 2на клавиатуре.

Я в полной растерянности относительно того, как это будет работать в VXML.Я хотел бы сделать следующее:

1) ЗАМЕЧАНИЕ: Пожалуйста, введите ваш ТРИ буквенный код.Пожалуйста, введите вашу первую букву.
2) Ожидается, что два DTMF-входа будут иметь первое число от 2 до 9, второе число от 1 до 4. Основываясь на этой логике (33 = F, 94 = Z)буква установлена.
3) ПОДСКАЗКА: буква, которую вы ввели - (ВХОД).Это правильно?Нажмите 1, если хотите, 2, чтобы повторить попытку.
4) Повторите попытку или перейдите к следующей букве.И так далее, и так далее.

Если у кого-то есть ресурсы, чтобы я сам наткнулся на ответ на этот вопрос, это было бы здорово!Если кому-то нужна награда ... это тоже вариант!Спасибо за чтение!

Ответы [ 3 ]

0 голосов
/ 26 декабря 2016

Существует несколько способов решения этой проблемы:

1) Вы можете просто принять все 2-значные числа в грамматике и выполнить все проверки / вычисления на стороне сервера.

и / или

2) Выполните некоторую проверку в разделе <filled> и буквенном декодировании от номера на стороне сервера (а затем вернитесь с результатом и уточните у пользователя, было ли это предполагаемое письмо).

Для двузначной грамматики вы можете параметризовать грамматику встроенных цифр следующим образом (обратите внимание, что схема URI зависит от платформы, поэтому вам может потребоваться обратиться к руководству пользователя вашего голосового браузера, чтобы убедиться, что точной схемы, которая будет использоваться)

<field type="digits?length=2">
   <prompt>Please enter the code of the first letter</prompt>
</field>

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

(На самом деле ФП, вероятно, не будет долго искать ответ на этот вопрос, но, надеюсь, это поможет другим, кто попал на эту страницу в поисках решения аналогичного вопроса)

0 голосов
/ 30 декабря 2016

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

  <grammar mode="dtmf" root="letter">
    <rule id="letter">
      <one-of>
        <item>32<tag>E</tag></item>
        ...
      </one-of>
    </rule>
  </grammar>

Другой способ - позволить пользователю ввести 2 буквы и обработать их с помощью функции EcmaScript, илииспользуйте тег.

Я собираюсь добавить такую ​​функцию в Voximal для VoiceXML-интерпретатора для Asterisk.Но уверены ли вы, что пользователи смогут понять и использовать этот метод для ввода букв?

0 голосов
/ 23 января 2011

Типичный подход к этой проблеме - просто принять удвоенное количество тонов, как вы ожидаете, или использовать ввод в фунтах. Затем используйте ECMAscript или код на стороне сервера, чтобы перевести строки тонов в нужные буквы.

...