Subject: RE: [mediactrl] initial comments on mscp

From: "Bjurstrom, Hans" <[email-masked]>
Date: Tue, 9 Aug 2005 08:50:21 +0100 (BST)

Hello Tim,

How lightweight the prompt and collect really becomes depends on the
implementation I guess. I tried to translate the examples from the MOML
spec into VoiceXML to get a grip of the sizes of the messages and they
are more or less the same (same number of elements, bytes). This is
using the possibility to pass VoiceXML inline and return results using
the <exit/> element from voicexml back to the caller via MSCP. Passing
Vxml via MSML is of course also a possibility.

Cheers Hans

Recording audio vxml
--------------------

<vxml xmlns="http://www.w3.org/2001/vxml" version="2.0">
<property name="termchar" value="#"/>
<property name="interdigittimeout" value="16s"/>
<property name="timeout" value="10s"/>
<property name="inputmodes" value="dtmf"/>
<form id="main">
      <record name="msg" beep="true" maxtime="10s" finalsilence="4000ms"
dtmfterm="true" type="audio/x-wav> 
       <prompt><audio src="file://prompt.wav"/><prompt>
     </record>
       <filled><exit namelist="msg$.duration"/></filled>
       <noinput><exit namelist="_event"/></noinput>
       <nomatch><exit namelist="_event"/></ nomatch >
</form>
</vxml>

Recording audio moml
--------------------

<?xml version="1.0" encoding="UTF-8"?> 
   <moml  version="1.0" id="12345"> 
      <group topology="parallel"> 
         <play> 
            <audio uri="file://prompt.wav"/> 
            <playexit> 
               <send target="vad" event="starttimer"/> 
            </playexit> 
         </play> 
         <dtmf> 
            <pattern digits="#"> 
               <send target="record" event="terminate.termkey"/> 
            </pattern> 
            <detect> 
               <send target="play" event="terminate"/> 
            </detect> 
         </dtmf> 
         <vad> 
            <voice len="10ms"> 
               <send target="play" event="terminate"/> 
               <send target="record" event="resume"/> 
            </voice> 
 
           <silence len="3s"> 
               <send target="record" event="nospeech"/> 
            </silence> 
            <tsilence len="5s"> 
               <send target="record" event="terminate.finalsilence"/> 
            </tsilence> 
         </vad> 
         <record initial="suspend" maxtime="60s"  
                 dest="file://record.wav" format="g729"> 
            <recordexit> 
               <send target="group" event="terminate"/> 
            </recordexit> 
         </record> 
         <groupexit> 
            <send target="source" event="done"  
                  namelist="record.len record.end"/> 
         </groupexit> 
      </group> 
   </moml> 

Announcement vxml
-----------------
<?xml version="1.0" encoding="UTF-8"?>
<vxml xmlns="http://www.w3.org/2001/vxml" version="2.0">
<form id="main">
<block>
         <audio src="file://clip1.wav"/> 
         <audio src="http://host1/clip2.wav"/> 
         <ssml .. >
</block>
</form>
</vxml>

Annoucement moml
---------------
<?xml version="1.0" encoding="UTF-8"?> 
   <moml version="1.0" id="12345"> 
      <play> 
         <audio uri="file://clip1.wav"/> 
         <audio uri="http://host1/clip2.wav"/> 
         <tts uri="http://host2/text.ssml"/> 
         <var type="date" subtype="mdy" value="20030601"/> 
      </play> 
      <send target="source" event="done" namelist="play.amt play.end"/> 
   </moml> 

Voicemail retreival vxml (here no vxml 2.0 standard constructs exist to
navigate the prompt queue .. It may be in 3.0)
------------------------

<vxml xmlns="http://www.w3.org/2001/vxml" version="2.0">
<link dtmf="5" event="toggle"/>
<link dtmf="6" event="forward"/>
<link dtmf="7" event="backward"/>
<link dtmf="8" event="restart"/>
<link dtmf="#" event="terminate"/>

<form id="main">
      <var offest="0"/>
      <field name="playvoicemail" offset="offset">
	<block><audio src="file://message.wav"/></block>
     </field>
     <catch event="terminate"><exit/></catch>
     <catch event=" forward"></catch>
     <catch event=" backward"></catch>
     <catch event=" restart"><assign offset="0"/></catch>
</form>
</vxml>

Voicemail retreival moml

<?xml version="1.0" encoding="UTF-8"?> 
   <moml version="1.0" id="12345"> 
      <group topology="parallel"> 
         <play> 
            <audio uri="file://message.wav"/> 
            <playexit> 
               <send target="group" event="terminate"/> 
            </playexit> 
         </play> 
         <dtmf iterate="forever"> 
            <pattern digits="5"> 
               <send target="play" event="toggle-state"/> 
            </pattern> 
            <pattern digits="6"> 
               <send target="play" event="forward"/> 
            </pattern> 
            <pattern digits="7"> 
               <send target="play" event="backward"/> 
            </pattern> 
            <pattern digits="8"> 
               <send target="play" event="restart"/> 
	</pattern> 
            <pattern digits="#"> 
               <send target="play" event="terminate"/> 
            </pattern> 
         </dtmf> 
      </group> 
   </moml> 

Prompt and collect vxml
------------------------
<vxml xmlns="http://www.w3.org/2001/vxml" version="2.0">
<property name="termchar" value="#"/>
<property name="interdigittimeout" value="16s"/>
<property name="timeout" value="10s"/>
<property name="inputmodes" value="dtmf"/>
<form id="main">
      <field name="res" type="digits?length=4">
       <prompt><audio src="file://prompt.wav"/><prompt>
        <filled>
          <exit namelist="res"/>
        </filled>
      </field>
      <noinput>
          <var name="collection.failed" expr="'noinput'"/>
         <exit namelist="collection.failed"/>
      </noinput>
      <nomatch>
          <var name="collection.failed" expr="'nomatch'"/>
         <exit namelist="collection.failed"/>
      </ nomatch >
  </form>
</vxml>

Prompt and collect moml
----------------------
<?xml version="1.0" encoding="UTF-8"?> 
   <moml version="1.0" id="12345"> 
      <group topology="parallel"> 
         <play> 
            <audio uri="file://prompt.wav"/> 
            <playexit> 
               <send target="dtmf" event="starttimer"/> 
            </playexit> 
         </play> 
         <dtmf fdt="10s" idt="16s"> 
            <pattern digits="xxxx#"> 
               <send target="group" event="terminate"/> 
            </pattern> 
            <detect> 
               <send target="play" event="terminate"/> 
            </detect> 
            <noinput> 
               <send target="group" event="terminate"/> 
            </noinput> 
            <nomatch> 
               <send target="group" event="terminate"/> 
            </nomatch> 
         </dtmf> 
         <groupexit> 
            <send target="source" event="done"  
                  namelist="dtmf.digits dtmf.end"/> 
         </groupexit> 
      </group> 
   </moml> 

-----Original Message-----
From: [email-masked]
[mailto:[email-masked]] On Behalf Of Tim
Melanchuk
Sent: den 4 augusti 2005 19:32
To: [email-masked]; McGlashan, Scott
Subject: [mediactrl] initial comments on mscp

hi scott,

below are my general thoughts and comments on the mscp draft.

in general, i like the proposal, partly because it is very similar to
msml, both being based to one extent or another on ccxml. ;-) but there
seems to be no recognition within the document that other proposals for
ms control exist. it would have been nice to see comparison in the
document identitifying specific differences, their rationale, and why
any requirements that this proposal meets could not met by other
proposals such as msml. 

i agree with some of eric's comments and nits and won't repeat them
here. i too like the use of namespaces ;-) i'm on the fence on transfer
- i see a need but i'm not sure of the best realization.
unlike eric, i am in favour of using a control channel(s) for
*application* control of media servers because i think decoupling
application control from session signalling provides more architectural
options. chris boulton and i have a draft out discussing this. 

i think that the use of "dialog" gets confusing. for example the use of
dialog[prepare | start | terminate] is refering to dialogs in the
voicexml sense. however the dialog[disconnet | transfer] appear to be
referring to the sip dialog. 

i like some of facilities that have been added to support voicexml.
how well will some of those work for other dialog languages? i think
there is a real need for "lightweight" simple prompt/collect/record
dialog operations (similar to those in mscml) from a
performance/capacity perspective. i'm not sure whether the modulariztion
of vxml v3 will meet this need (although it would be nice if it did).

also, i'm not sure that i understand how the characteristics/properties
of media streams and conference mixes can be dynamically changed.
for example it looks like <join> is used to both create a stream, set
its properties,  change the properties, and possibly to unjoin it. 
if so, i think  the explicit <join>, <modify>, <unjoin> model of msml
(with analagous mechanisms for conference mixes) is preferable.

cheers,
timm

--------------------------
Ubiquity Software does not control or endorse the content, messages or
information found in this mail list and it specifically disclaims any
liability with regard to these communications.
Ubiquity Software reserves the right the restrict access to any
communications in violation of the Terms and Conditions of Use for this
website or as otherwise deemed improper.

--------------------------
Ubiquity Software does not control or endorse the content, messages or information found in this mail list and it specifically disclaims any liability with regard to these communications.
Ubiquity Software reserves the right the restrict access to any communications in violation of the Terms and Conditions of Use for this website or as otherwise deemed improper.

---

From: Tim Melanchuk <[email-masked]>
Date: Wed, 10 Aug 2005 16:55:35 +0100 (BST)

hi hans,

i think lightweight does depend a little on implementation, but i also
believe that it depends on what is implemented. message size
of number of elements also plays a small role. but i think that all
of the lightweight dialog languages on the table (from alcatel,
convedia, and brooktrout) will likely always out perform  vxml
on the same platform simply because vxml is richer, requiring
greater initialization and hardware resources. vxml is great 
for user interfaces, but instantiatiing a full vxml browser to
play an announcement to a conference seems overkill. 

it would be interesting to get others opinions on this isssue.
since vxml is already a standard, if the consensus is that it is
sufficient, we've made progress ;-)

cheers,
timm