請嘗試此代碼。
關鍵點是「bargeintype」屬性和語法規則。
VXML的形式
<form id="sample">
<field name="menu_result">
<property name="bargein" value="true" />
<property name="bargeintype" value="hotword" /><!-- Important! -->
<property name="inputmodes" value="dtmf" />
<property name="timeout" value="5s" />
<property name="interdigittimeout" value="0s" />
<property name="termchar" value="D" />
<prompt>
Please push either of 1, 2, 3, 9 or pound sign button.
Other button is ignored.
</prompt>
<grammar src="special_menu.grxml" />
<filled>
<assign name="result" expr="menu_result.slice(-1)"/><!-- Get last 1 digit -->
<goto next="#next_form"/>
</filled>
<noinput><prompt>No input error.</prompt></noinput>
<nomatch><prompt>No match error.</prompt></nomatch>
</field>
</form>
special_menu.grxml
<?xml version="1.0" encoding="UTF-8"?>
<grammar
version="1.0"
mode="dtmf"
root="main"
xmlns="http://www.w3.org/2001/06/grammar"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<rule id="main">
<item repeat="0-">
<one-of><item>4</item><item>5</item><item>6</item><item>7</item><item>8</item><item>*</item></one-of>
</item>
<one-of>
<item>1</item><item>2</item><item>3</item><item>9</item><item>#</item>
</one-of>
</rule>
</grammar>