VXML для DTMF ввода букв на основе их размещения на клавиатуре
Я новичок в 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 ответа
Типичный подход к этой проблеме - просто принять удвоенное количество тонов, как вы ожидаете, или использовать ввод в фунтах. Затем используйте ECMAscript или код на стороне сервера, чтобы перевести строки тонов в нужные буквы.
Есть несколько способов решения этой проблемы:
1) Вы можете просто принять все 2-значные числа в грамматике и выполнить все проверки / вычисления на стороне сервера.
и / или
2) Сделайте некоторую проверку в <filled>
section и letter-decoding-from-number на стороне сервера (а затем вернитесь с результатом и уточните у пользователя, было ли это предполагаемое письмо).
Для двузначной грамматики вы можете параметризовать встроенную грамматику цифр следующим образом (обратите внимание, что схема URI зависит от платформы, поэтому вам может понадобиться обратиться к руководству пользователя вашего голосового браузера, чтобы быть уверенным в точной схема будет использоваться)
<field type="digits?length=2">
<prompt>Please enter the code of the first letter</prompt>
</field>
Есть и другие способы, например, вы можете также выполнить декодирование писем на стороне клиента, используя скрипт на той же странице, но, надеюсь, вышеизложенное дает некоторые идеи о том, что выбрать в зависимости от ваших требований.
(На самом деле, ФП, вероятно, не будет искать ответ на этот вопрос после столь длительного времени, но, надеюсь, это поможет другим, кто попал на эту страницу в поисках решения аналогичного вопроса)
Лучший способ - определить грамматику, связывающую каждое значение с буквой результата:
<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. Но уверены ли вы, что пользователи смогут понять и использовать этот метод для ввода букв?