40 付録: DTMF文法

この付録が標準を定義する.

ここでは、DTMFトークンにおける文法構成の標準的な表現を定義する。DTMF文法は、DTMF検知機によって適切なDTMFイベント及び不適切なDTMFイベントを決定するために使用される。モード"drmf"に対応しているすべての文法はこの付録の内容を満たさなければならない。しかしすべての文法がDTMF入力に対応する必要はない。

DTMF(Dual Tone Multiple Frequency)は、電話シグナルにおけるITU標準である。ITU勧告Q23では、DTMFの生成を定義している。ITU勧告Q24では、DTMFの受理を定義している。文法のモードがそのとき"dtmf"として宣言される場合、文法によって含まれていたトークンは、DTMFトーンとして(むしろ、音声認識トークンのデフォルトとして)扱われる。

DTMFトーンは16種類ある。そのうち12個は、一般の電話機で良くみられるような"0"〜"9"の数字と"*"(スター)、"#"(ポンド)などである。そして典型的に電話上で存在しない4つのDTMFトーンは"A"、"B"、"C"、"D"である。それぞれのDTMFシンボルはDTMF文法の中で合法的なDTMFトークンである。スペースで分離されたDTMFシンボルは、DTMFエントリの一時的なシーケンスを表わている。ABNF形式では"*"シンボルは保存されるので、ABNF DTMF文法を定義する場合"*"を区切るためにクオートを常に使用しなければならない。"#"の場合もクオートを使用することが推奨される。代案として、"star"トークンおよび"pound"トークンは受理可能な同意語である。

現在の場合、ABNF文法内の言語宣言や、XML文法内のxml:lang属性や、lang-list属性は無視される。その他のすべての点で、DTMF文法は構文上意味的な結果処理を含む音声認識文法と同じである。下記はポンド("#")・ターミネータが後続する4桁PINを受理する単純なDTMF文法でである。さらに、それは"*9"を許す(例:ヘルプメッセージを受け取るために"*9"を許す)。

ABNF形式

	#ABNF 1.0 ISO-8859-1;
	
	mode dtmf;
	
	$digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
	public $pin = $digit <4> "#" | "*" 9;

XML形式

	<?xml version="1.0"?>
	
	<grammar mode="dtmf" version="1.0" \
    xmlns="http://www.w3.org/2001/06/grammar">
	
	<rule id="digit">
	 <one-of>
	   <item> 0 </item>
	   <item> 1 </item>
	   <item> 2 </item>
	   <item> 3 </item>
	   <item> 4 </item>
	   <item> 5 </item>
	   <item> 6 </item>
	   <item> 7 </item>
	   <item> 8 </item>
	   <item> 9 </item>
	 </one-of>
	</rule>
	
	<rule id="pin" scope="public">
	 <one-of>
	   <item>
	     <item repeat="4"><ruleref uri="#digit"/></item>
	     #
	   </item>
	   <item>
	     * 9
	   </item>
	 </one-of>
	</rule>
	
	</grammar>