April CCXML: 3 errors in 10_5_7_A.txml

Hello www-voice,

Here are the errors:

1) <if cond="sessions.conferences[A854_confid1].bridges.length == 1

There is no sessions scope. That needs to be session with no s

2) Assertion #854 as written will never work (see above fragment). The 
bridges property of the
Conference object is defined in 10.3.1 as "an ECMAScript associative 
array". It is referenced
by conference ids which are by definition URIs. The ECMA .length of an 
associative array
is always zero.

When you account for breaks 1) and 2), the broken segment:
<if cond="sessions.conferences[A854_confid1].bridges.length == 1 
&amp;&amp; sessions.conferences[A854_confid2].bridges.length == 1">

thus becomes
<if cond="session.conferences[A854_confid1].bridges[A854_confid2] != 
undefined &amp;&amp; 
session.conferences[A854_confid2].bridges[A854_confid1] != undefined">

3) TC#855 tries to look at the dialog objects to make sure the switching 
is correct.
However, as written it doesn't account for all the switching. 
Specifically, the switching
picture by the time #855 rolls around is:

A855_dialogid1 <====> A855_dialogid2
A855_dialogid1 --> general_connid
A855_dialogid2 --> A855_connid1

yet the check is written like this:
<script><![CDATA[A855_passed = (session.dialogs[A855_dialogid1].input == 
A855_dialogid2 &&
                        session.dialogs[A855_dialogid2].input == 
A855_dialogid1 &&
                        session.dialogs[A855_dialogid1].outputs[0] == 
A855_dialogid2 &&
                        session.dialogs[A855_dialogid2].outputs[0] == 
A855_dialogid1);

    ]]></script>

To check everything, the test should be something like this:
  
        <script><![CDATA[
            function outputpresent( haystack, needle, numElements )
            {
                var rc = false;
                for(i=0; i< numElements; i++ )
                {
                    if( haystack[i] == needle )
                    {
                        rc = true;
                        break;
                    }
                }
                return rc;
            }

            A855_passed = false;
            if( session.dialogs[A855_dialogid1].outputs.length == 2 && 
session.dialogs[A855_dialogid2].outputs.length == 2)
            {
                if( session.dialogs[A855_dialogid1].input == 
A855_dialogid2 && session.dialogs[A855_dialogid2].input == A855_dialogid1 )
                {
                    if( true == outputpresent( 
session.dialogs[A855_dialogid1].outputs, general_connid, 2 ))
                    {
                        if( true == outputpresent( 
session.dialogs[A855_dialogid1].outputs, A855_dialogid2, 2 ))
                        {
                            if( true == outputpresent( 
session.dialogs[A855_dialogid2].outputs, A855_connid1, 2 ))
                            {
                                if(true == outputpresent( 
session.dialogs[A855_dialogid2].outputs, A855_dialogid1, 2 ))
                                {
                                    A855_passed = true;
                                }
                            }
                        }
                    }
                }
            }
        ]]></script>
//------------

Note that as written, the check currently leaves off some of the switch 
paths and assumes the secondary switch
paths are in index position 0. Our browser adds new paths to the END of 
the array. If other behavior is desired
we suggest it be placed in the Recommendation.

Regards,
Chris


-- 
Chris Davis
Interact Incorporated R&D
512-502-9969x117

Received on Tuesday, 18 May 2010 20:29:41 UTC