| CCXML 1.0-W3C Development Guide | Home | Frameset Home |
|
<join> two call legs
<?xml version="1.0" encoding="UTF-8"?>
<ccxml version="1.0" xmlns:voxeo="http://community.voxeo.com/xmlns/ccxml">
<var name="state0" expr="'init'"/>
<var name="callid_in"/>
<var name="callid_out"/>
<var name="pin"/>
<var name="holdMusicDlg"/>
</ccxml>
<dialogterminate> element
<?xml version="1.0" encoding="UTF-8"?>
<ccxml version="1.0" xmlns:voxeo="http://community.voxeo.com/xmlns/ccxml">
<var name="state0" expr="'init'"/>
<var name="callid_in"/>
<var name="callid_out"/>
<var name="pin"/>
<var name="holdMusicDlg"/>
<eventprocessor statevariable="state0">
<transition state="init" event="connection.alerting">
<accept/>
</transition>
<transition state="init" event="connection.connected">
<assign name="callid_in" expr="event$.connectionid"/>
</transition>
<transition event="error.*">
<log expr="'an error has occured (' + event$.error + ')'"/>
<voxeo:sendemail to="'yourEmail@there.com'"
from="'myApp@here.com'"
type="'debug'"
body=" 'generic error detected ! ' "/>
<exit/>
</transition>
<transition state="init" event="connection.connected">
<assign name="callid_in" expr="event$.connectionid"/>
<assign name="state0" expr="'enterpin'"/>
<dialogstart src="'null://?termdigits=#&text=enter your conference pin code followed by the pound key'"
type="'application/x-fetchdigits'"/>
</transition>
<transition state="enterpin" event="dialog.exit">
<log expr="'*** PIN = [' + event$.values.digits + ']'"/>
</transition>
<transition state="enterpin" event="dialog.exit">
<log expr="'PIN = [' + event$.values.digits + ']'"/>
<if cond="'1234' != event$.values.digits">
<exit/>
<else/>
<assign name="pin" expr="event$.values.digits"/>
</if>
<assign name="state0" expr="'calling'"/>
<dialogstart src="'holdingPattern.vxml'" type="'application/xml+vxml'" dialogid="holdMusicDlg"/>
<createcall dest="'4072223333'" connectionid="callid_out"/>
</transition>
<transition state="calling" event="connection.failed">
<assign name="state0" expr="'callfailed'"/>
<dialogterminate dialogid="holdMusicDlg"/>
</transition>
<transition state="callfailed" event="dialog.exit">
<assign name="state0" expr="'playingCallFailed'"/>
<dialogstart src="'callFailure.vxml'" type="'application/xml+vxml'"/>
</transition>
<transition state="playingCallFailed" event="dialog.exit">
<disconnect/>
</transition>
<disconnect> event. Now that we have taken care of the worst case scenario, let's now wax optimistic, and add some logic to handle events in the event that our efforts actually succeed, and the call is answered.
<transition state="calling" event="connection.connected">
<var name="callid_out" expr="event$.callid"/>
<assign name="state0" expr="'callAccepted'"/>
<dialogstart src="'myNewCall.vxml'" namelist="pin" type="'application/xml+vxml'"/>
</transition>
<transition state="callAccepted" event="dialog.exit">
<if cond="event$.connectionid == callid_in">
<exit/>
<else/>
<assign name="state0" expr="'beforeBridging'"/>
<dialogterminate dialogid="holdMusicDlg"/>
</if>
</transition>
<transition state="beforeBridging" event="dialog.exit">
<assign name="state0" expr="'bridged'"/>
<join id1="callid_in" id2="callid_out"/>
</transition>
<var name="pinCode" expr="session.connection.ccxml.values.pin"/>
<join>, we link our two saved Call IDs together, and the beauty of human-to-human communication is achieved.
<?xml version="1.0" encoding="UTF-8"?>
<ccxml version="1.0" xmlns:voxeo="http://community.voxeo.com/xmlns/ccxml">
<var name="state0" expr="'init'"/>
<var name="callid_in"/>
<var name="callid_out"/>
<var name="pin"/>
<var name="holdMusicDlg"/>
<eventprocessor statevariable="state0">
<transition state="init" event="connection.alerting">
<accept/>
</transition>
<transition state="init" event="connection.connected">
<assign name="callid_in" expr="event$.connectionid"/>
<assign name="state0" expr="'enterpin'"/>
<dialogstart src="'null://?termdigits=#&text=enter your conference pin code now'"
type="'application/x-fetchdigits'"/>
</transition>
<transition state="enterpin" event="dialog.exit">
<log expr="'PIN = [' + event$.values.digits + ']'"/>
<if cond="'1234' != event$.values.digits">
<exit/>
<else/>
<assign name="pin" expr="event$.values.digits"/>
</if>
<assign name="state0" expr="'calling'"/>
<dialogstart src="'holdingPattern.vxml'" type="'application/xml+vxml'" namelist="pin" dialogid="holdMusicDlg"/>
<createcall dest="'4072223333'" connectionid="callid_out"/>
</transition>
<transition state="calling" event="connection.failed">
<assign name="state0" expr="'callfailed'"/>
<dialogterminate dialogid="holdMusicDlg"/>
</transition>
<transition state="callfailed" event="dialog.exit">
<assign name="state0" expr="'playingCallFailed'"/>
<dialogstart src="'callFailure.vxml'" type="'application/xml+vxml'"/>
</transition>
<transition state="playingCallFailed" event="dialog.exit">
<disconnect/>
</transition>
<transition state="calling" event="connection.connected">
<var name="callid_out" expr="event$.callid"/>
<assign name="state0" expr="'callAccepted'"/>
<dialogstart src="'myNewCall.vxml'" namelist="pin" type="'application/xml+vxml'"/>
</transition>
<transition state="callAccepted" event="dialog.exit">
<if cond="event$.connectionid == callid_in">
<exit/>
<else/>
<assign name="state0" expr="'beforeBridging'"/>
<dialogterminate dialogid="holdMusicDlg"/>
</if>
</transition>
<transition state="beforeBridging" event="dialog.exit">
<assign name="state0" expr="'bridged'"/>
<join id1="callid_in" id2="callid_out"/>
</transition>
<transition event="error.conference.join">
<log expr="'*** ERROR DURING JOIN ***'"/>
<exit/>
</transition>
<transition event="error.*">
<log expr="'an error has occured (' + event$.reason + ')'"/>
<voxeo:sendemail to="'yourEmail@there.com'"
from="'myApp@here.com'"
type="'debug'"
body=" 'generic error detected ! ' "/>
<exit/>
</transition>
</eventprocessor>
</ccxml>
| ANNOTATIONS: EXISTING POSTS |
| login |
|