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) Повторите попытку или перейдите к следующему письму. Так далее и тому подобное.

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


person AYC    schedule 20.01.2011    source источник


Ответы (3)


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

person Jim Rush    schedule 23.01.2011

Есть несколько подходов к решению этой проблемы:

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

и/или

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

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

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

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

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

person Anupam    schedule 26.12.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. Но уверены ли вы, что пользователи смогут понять и использовать этот метод для ввода букв?

person Borja from ulex.fr    schedule 30.12.2016