Route to Agent Using Statistic
The following SCXML strategy routes an interaction to one of two agents based on a statistic. It requests the statistic value first, waits for this value to become available using a special state called delay, and then uses this value for routing.
<scxml version="1.0" xmlns="http://www.w3.org/2005/07/scxml"
xmlns:queue="www.genesyslab.com/modules/queue"
xmlns:dialog="www.genesyslab.com/modules/dialog"
xmlns:statistic="www.genesyslab.com/modules/statistic"
initial="initial">
<state id="initial">
<!--
<transition event="interaction.added" target="statistics"/>
-->
<transition event="interaction.added" target="subscribe"/>
</state>
<!--
<state id="routing">
<onentry>
<queue:submit orderstat="'StatTimeInReadyState'" ordertype="'max'" priority="5" clearontimeout="true" timeout="0">
<queue:targets type="agent">
<queue:target name="'az'"/>
<queue:target name="'bz'"/>
</queue:targets>
</queue:submit>
</onentry>
<transition event="queue.submit.done" target="error"/>
<transition event="error.queue.submit" target="delay"/>
</state>
-->
<!--
<state id="statistics">
<onentry>
<script>
var t1 = _genesys.statistic.sData('az@.A', 'StatTimeInReadyState');
var t2 = _genesys.statistic.sData('bz@.A', 'StatTimeInReadyState');
</script>
</onentry>
<transition target="delay"/>
</state>
<state id="delay">
<onentry>
<send event="'delay'" target="_sessionid" targettype="'scxml'" delay="'2s'"/>
</onentry>
<transition event="delay" target="routing"/>
</state>
-->
<state id="subscribe">
<onentry>
<statistic:subscribe object="'az@.A'" statistic="'StatTimeInReadyState'" interval="0"/>
<statistic:subscribe object="'bz@.A'" statistic="'StatTimeInReadyState'" interval="0"/>
</onentry>
<transition event="statistic.subscribe.done" target="delay"/>
<transition event="error.statistic.subscribe" target="error"/>
</state>
<state id="delay">
<onentry>
<send event="'delay'" target="_sessionid" targettype="'scxml'" delay="'2s'"/>
</onentry>
<transition event="delay" target="routing"/>
</state>
<state id="routing">
<onentry>
<queue:submit orderstat="'StatTimeInReadyState'" ordertype="'max'" priority="5" timeout="20">
<queue:targets type="agent">
<queue:target name="'az'"/>
<queue:target name="'bz'"/>
</queue:targets>
</queue:submit>
</onentry>
<transition event="queue.submit.done" target="exit">
<log expr="'DONE'"/>
<log expr="_genesys.ixn.interactions[0].voice.ani"/>
<log expr="'DONE'"/>
<log expr="_event.data.targetselected"/>
</transition>
<transition event="error.queue.submit" target="error"/>
</state>
<final id="exit"/>
<final id="error"/>
</scxml>
This page was last edited on September 22, 2017, at 13:06.
Comments or questions about this documentation? Contact us for support!
