voicexml的录音

这里录音有两种途径(其实只有一种,可看成是两种而已)。一种是通过标准的<record/>进行录音,另一种是利用<filed>。

第一种方式比较标准,需要发出beep的声音之后才开始录音
第二种方式是filed有name属性,且有option选项(也可以是gramer),因此最后的值是option的值(这目前是猜测,还没有进行完整的测试)

下面的例子来源于:http://www.optimsys.cz/support/examples/example13.php

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">

<meta name="description" content="record example"/>
<meta name="author" content="OptimSys, s.r.o., Czech Republic (http://www.optimsys.cz)"/>
<meta name="copyright" content="free for any purpose"/>

<form id="start">
  <catch event="error.unsupported.record">
    <prompt>Recording is not supported in the current configuration, no
      audio source specified.</prompt>
    <exit/>
  </catch>

  <record name="recording" maxtime="10s" finalsilence="1s" beep="true">
    <noinput> nothing was recoreded </noinput>
    Recording starts after beep
    <filled>You recorded: <audio expr="recording"/></filled>
  </record>

  <field name="answer">
    <noinput> Hey, don't sleep! </noinput>
    <nomatch> say 'yes' or 'no' </nomatch>

    <prompt> Do you want to present details about the recording? </prompt>

    <grammar root="main" tag-format="semantics/1.0-literals">
      <rule id="main" scope="public">
        <one-of>
          <item><ruleref uri="#yes"/><tag>yes</tag></item>
          <item><ruleref uri="#no"/><tag>no</tag></item>
        </one-of>
      </rule>
      <rule id="yes">
        <one-of>
          <item>yes</item>
          <item>yeah</item>
          <item>yep</item>
          <item>sure</item>
        </one-of>
      </rule>
      <rule id="no">
        <one-of>
          <item>no</item>
          <item>not</item>
          <item>nope</item>
        </one-of>
      </rule>
    </grammar>

    <filled>
      <if cond="answer!='yes'">
        OK, good bye.
        <exit/>
      </if>
    </filled>
  </field>

  <block>
    <prompt>Recording size is <value expr="recording$.size"/> bytes.</prompt>
    <prompt>Recording duration is <value expr="recording$.duration"/> milliseconds.</prompt>
    <if cond="recording$.termchar !== undefined">
      <prompt>Recording was interrupted by DTMF key <value expr="recording$.termchar"/>.</prompt>
    <elseif cond="recording$.maxtime"/>
      Recording was interrupted since it exceeded time limit.
    <else/>
      Recording was finished without any interruption.
    </if>
  </block>

</form>

</vxml>

猜你喜欢

转载自canofy.iteye.com/blog/785885