Workflow

The Workflow object represents a workflow that can be assigned to a team. Workflows manage agent activity based on call events. Workflows have triggers and conditions, which are used to determine whether the associated actions are run. The Workflow object contains the following subobjects: TriggerSet, ConditionSet, and workflowActions. The Workflow object is structured as follows:
Code Snippet
Copy<Workflow>
   <uri>/finesse/api/Workflow/{id}</uri>
   <name></name>
   <description></description>
   <media></media>
   <TriggerSet>
      <type></type>
      <name></name>
      <allowOverlappingCallWorkflow></allowOverlappingCallWorkflow>
      <triggers>
         <Trigger>
            <Variable>
               <name></name>
               <node></node>
               <type></type>
            </Variable>
            <comparator></comparator>
            <value></value>
         </Trigger>
         <Trigger>
            <Variable>
               <name></name>
               <node></node>
               <type></type>
            </Variable>
            <comparator></comparator>
            <value></value>
         </Trigger>
      </triggers>  
   </TriggerSet>
   <ConditionSet> 
      <applyMethod></applyMethod>
      <conditions>
         <Condition>
            <Variable>
               <name></name>
               <type></type>
            </Variable>
            <comparator></comparator>
            <value></value>
         </Condition> 
         <Condition>
            <Variable>
               <name></name>
               <type></type>
            </Variable>
            <comparator></comparator>
            <value></value>
         </Condition> 
      </conditions>
   </ConditionSet>
   <workflowActions>
      <WorkflowAction>
         <name></name>
         <type></type>
         <uri>/finesse/api/WorkflowAction/{id}</uri>
      </WorkflowAction>
      <WorkflowAction>
         <name></name>
         <type></type>
         <uri>/finesse/api/WorkflowAction/{id}</uri>
      </WorkflowAction>
   </workflowActions>
</Workflow>      

The following SYSTEM TriggerSets are defined by the Finesse system. When you create a workflow, you need only specify the name and type of SYSTEM. The TriggerSets are automatically expanded when retrieved by the User—Get list of workflows API.

CALL_ARRIVES

Code Snippet
Copy<TriggerSet>
    <type>SYSTEM</type>
    <name>CALL_ARRIVES</name>
    <triggers>
        <Trigger>
            <Variable>
                <name>mediaType</name>
                <node>//Dialog/mediaType</node>
                <type>CUSTOM</type>
            </Variable>
            <comparator>IS_EQUAL</comparator>
            <value>Voice</value>
        </Trigger>
        <Trigger>
            <Variable>
                <name>callType</name>
                <node>//Dialog/mediaProperties/callType</node>
                <type>CUSTOM</type>
            </Variable>
            <comparator>IS_IN_LIST</comparator>
            <value>ACD_IN,PREROUTE_ACD_IN,PREROUTE_DIRECT_AGENT,TRANSFER,OVERFLOW_IN,
            OTHER_IN,AGENT_OUT,OUT,OUTBOUND,OUTBOUND_CALLBACK,OUTBOUND_PERSONAL_CALLBACK,
        AGENT_INSIDE,OFFERED,CONSULT,CONSULT_OFFERED,CONSULT_CONFERENCE,CONFERENCE,
        TASK_ROUTED_BY_ICM,TASK_ROUTED_BY_APPLICATION,VOICE_CALL_BACK,NON_ACD,
        SUPERVISOR_BARGE_IN,NULL</value>
        </Trigger>
        <Trigger>
            <Variable>
                <name>state</name>
                <node>//Dialog/participants/Participant/mediaAddress
                [.='${extension}']/../state</node>
                <type>CUSTOM</type>
            </Variable>
            <comparator>IS_IN_LIST</comparator>
            <value>ALERTING,ACTIVE,HELD</value>
        </Trigger>
        <Trigger>
            <Variable>
                <name>fromAddress</name>
                <node>//Dialog/fromAddress</node>
                <type>CUSTOM</type>
            </Variable>
            <comparator>IS_NOT_EQUAL</comparator>
            <value>${extension}</value>
        </Trigger>
    </triggers>
</TriggerSet>

CALL_ANSWERED

Code Snippet
Copy<TriggerSet>
    <type>SYSTEM</type>
    <name>CALL_ANSWERED</name>
    <triggers>
        <Trigger>
            <Variable>
                <name>mediaType</name>
                <node>//Dialog/mediaType</node>
                <type>CUSTOM</type>
            </Variable>
            <comparator>IS_EQUAL</comparator>
            <value>Voice</value>
        </Trigger>
        <Trigger>
            <Variable>
                <name>callType</name>
                <node>//Dialog/mediaProperties/callType</node>
                <type>CUSTOM</type>
            </Variable>
            <comparator>IS_IN_LIST</comparator>
            <value>ACD_IN,PREROUTE_ACD_IN,PREROUTE_DIRECT_AGENT,TRANSFER,OVERFLOW_IN,
            OTHER_IN,AGENT_OUT,OUT,OUTBOUND,OUTBOUND_CALLBACK,OUTBOUND_PERSONAL_CALLBACK,
            AGENT_INSIDE,OFFERED,CONSULT,CONSULT_OFFERED,CONSULT_CONFERENCE,CONFERENCE,
            TASK_ROUTED_BY_ICM,TASK_ROUTED_BY_APPLICATION,VOICE_CALL_BACK,NON_ACD,
            SUPERVISOR_BARGE_IN,NULL</value>
        </Trigger>
        <Trigger>
            <Variable>
                <name>state</name>
                <node>//Dialog/participants/Participant/mediaAddress
                [.='${extension}']/../state</node>
                <type>CUSTOM</type>
            </Variable>
            <comparator>IS_EQUAL</comparator>
            <value>ACTIVE</value>
        </Trigger>
    </triggers>
</TriggerSet>

CALL_ENDS

Code Snippet
Copy<TriggerSet>
    <type>SYSTEM</type>
    <name>CALL_ENDS</name>
    <triggers>
        <Trigger>
            <Variable>
                <name>mediaType</name>
                <node>//Dialog/mediaType</node>
                <type>CUSTOM</type>
            </Variable>
            <comparator>IS_EQUAL</comparator>
            <value>Voice</value>
        </Trigger>
        <Trigger>
            <Variable>
                <name>callType</name>
                <node>//Dialog/mediaProperties/callType</node>
                <type>CUSTOM</type>
            </Variable>
            <comparator>IS_IN_LIST</comparator>
            <value>ACD_IN,PREROUTE_ACD_IN,PREROUTE_DIRECT_AGENT,TRANSFER,OVERFLOW_IN,
        OTHER_IN,AGENT_OUT,OUT,OUTBOUND,OUTBOUND_CALLBACK,OUTBOUND_PERSONAL_CALLBACK,
        AGENT_INSIDE,OFFERED,CONSULT,CONSULT_OFFERED,CONSULT_CONFERENCE,CONFERENCE,
        TASK_ROUTED_BY_ICM,TASK_ROUTED_BY_APPLICATION,VOICE_CALL_BACK,NON_ACD,
        SUPERVISOR_BARGE_IN,NULL</value>
        </Trigger>
        <Trigger>
            <Variable>
                <name>state</name>
                <node>//Dialog/participants/Participant/mediaAddress
                [.='${extension}']/../state</node>
                <type>CUSTOM</type>
            </Variable>
            <comparator>IS_IN_LIST</comparator>
            <value>DROPPED,WRAP_UP</value>
        </Trigger>
    </triggers>
</TriggerSet>

CALL_IS_MADE

Code Snippet
Copy<TriggerSet>
    <type>SYSTEM</type>
    <name>CALL_IS_MADE</name>
    <triggers>
        <Trigger>
            <Variable>
                <name>mediaType</name>
                <node>//Dialog/mediaType</node>
                <type>CUSTOM</type>
            </Variable>
            <comparator>IS_EQUAL</comparator>
            <value>Voice</value>
        </Trigger>
        <Trigger>
            <Variable>
                <name>callType</name>
                <node>//Dialog/mediaProperties/callType</node>
                <type>CUSTOM</type>
            </Variable>
            <comparator>IS_IN_LIST</comparator>
            <value>ACD_IN,PREROUTE_ACD_IN,PREROUTE_DIRECT_AGENT,TRANSFER,OVERFLOW_IN,
        OTHER_IN,AGENT_OUT,OUT,OUTBOUND,OUTBOUND_CALLBACK,OUTBOUND_PERSONAL_CALLBACK,
        AGENT_INSIDE,OFFERED,CONSULT,CONSULT_OFFERED,CONSULT_CONFERENCE,CONFERENCE,
        TASK_ROUTED_BY_ICM,TASK_ROUTED_BY_APPLICATION,VOICE_CALL_BACK,NON_ACD,
        SUPERVISOR_BARGE_IN,NULL</value>
        </Trigger>
        <Trigger>
            <Variable>
                <name>state</name>
                <node>//Dialog/participants/Participant/mediaAddress
                [.='${extension}']/../state</node>
                <type>CUSTOM</type>
            </Variable>
            <comparator>IS_IN_LIST</comparator>
            <value>ALERTING,INITIATED,FAILED,ACTIVE,HELD</value>
        </Trigger>
        <Trigger>
            <Variable>
                <name>fromAddress</name>
                <node>//Dialog/fromAddress</node>
                <type>CUSTOM</type>
            </Variable>
            <comparator>IS_EQUAL</comparator>
            <value>${extension}</value>
        </Trigger>
    </triggers>
</TriggerSet>

CALL_IS_PREVIEWED

Code Snippet
Copy<TriggerSet>
    <type>SYSTEM</type>
    <name>CALL_IS_PREVIEWED</name>
    <triggers>
        <Trigger>
            <Variable>
                <name>mediaType</name>
                <node>//Dialog/mediaType</node>
                <type>CUSTOM</type>
            </Variable>
            <comparator>IS_EQUAL</comparator>
            <value>Voice</value>
        </Trigger>
        <Trigger>
            <Variable>
                <name>callType</name>
                <node>//Dialog/mediaProperties/callType</node>
                <type>CUSTOM</type>
            </Variable>
            <comparator>IS_IN_LIST</comparator>
            <value>OUTBOUND_PREVIEW,OUTBOUND_CALLBACK_PREVIEW,OUTBOUND_DIRECT_PREVIEW,
            OUTBOUND_PERSONAL_CALLBACK_PREVIEW</value>
        </Trigger>
    </triggers>
    <allowOverlappingCallWorkflow>true</allowOverlappingCallWorkflow>
</TriggerSet>