Section IV – Misc. > Function Blocks Bottom of Page
| Genesys 8.0 SCXML Technical Reference
< External Interfaces

## Function Blocks

The following table documents the mapping from URS/IRD function block functionality to SCXML and Functional Modules functionality. This mapping will result in the creation of an SCXML snippet or a specific `<state>` element definition which represents the functionality of the function block. The following is `<state>` element template that will be used:

    <state id="function_block_name">
    	<datamodel>
    		<! — This defines the data needed for processing this function block -->
    	</datamodel>
    	<onentry>
    		<! — Do the necessary function block action set up and action execution -->
    		<xxxx:yyyy requestid="_data.reqid" .../>
    	</onentry>
    	<transition event="xxxx.yyyy.done" cond="..." target="...">
    		<! — transition based on results (equal to function block output port) -->
    	</transition>
    	<transition event="xxxx.zzzz" cond="..." target="...">
    		<! — additional actions if necessary and transitions based on it. (equal to function block output port ) -->
    	</transition>
    	<transition event="error.xxxx.yyyy">
    		<! — transition based on results – (equal to function block error port) -->
    	</transition>
    </state>

Function Block | SCXML and Functional Module equivalent
--- | ---
Acknowledgement | `<msgbased:createmessage>` for appropriate media
Add Record | `<session:fetch..." method = "'post'" srcexpr="'http://server.com...req=AddRecord'">`
ANI | `<script>` if done in orchestration, `<session:fetch>` with application server code, if done outside.
Assign | `<assign>` using ECMAScript object properties and functions
Attach Categories | Use _genesys.ixn.interactions[].udata with category information (Business Attribute CME objects) from configuration server
Autoresponse | `<msgbased:createmessage>` for appropriate media
Business | `<script>` if done in orchestration, `<session:fetch>` with application server code, if done outside.
Busy | `<dialog:playsound>`
Call Subroutine | `<include>` or `<invoke>`
Cancel Call | `<dialog:stop>`
Chat Transcript | `<msgbased:createmessage ... chattranscript="'xxx'">` for appropriate media
Classify | `<classification:classify>`
Classify (segmentation) | `<classification:classify>`, `<script>` if done in orchestration, `<session:fetch>` with application server code, if done outside.
Collect Digits | `<dialog:collect>`
Comment | `<log>`
Create Interaction | `<session:fetch srcexpr="http://server1.com/ cv/customers/${customer_id}/interactions" method="post" ...>`
Create Email Out | `<msgbased:createmessage>` for appropriate media
Create Notification | `<msgbased:createmessage>` for appropriate media
Create SMS | `<msgbased:createmessage>` for appropriate media
Database Wizard | `<session:fetch>`, specialized application server code
Date | `<script>` if done in orchestration (use ECMAScript standard date functions/objects or Session functional module ECMAScript date and time functions), `<session:fetch>` with application server code, if done outside.
Day of Week | `<script>` if done in orchestration (use ECMAScript standard date functions/objects or Session functional module ECMAScript date and time functions), `<session:fetch>` with application server code, if done outside.
Default | `<queue:default>`
Delete User Announcement | `<dialog:deleteann>`
DNIS | `<script>` if done in orchestration, `<session:fetch>` with application server code,
Do Not Call | `<session:fetch..." method = "'post'" srcexpr="'http://server.com...req=DoNotCall'" />`
Entry | `<initial>` or `<scxml initial attribute>`
Error Segmentation | `<script>` if done in orchestration, `<session:fetch>` with application server code, if done outside.
Exit | `<final>`
External Service | `<session:fetch>`, specialized application server code
Fast Busy | `<dialog:playsound>`
Force Routing | `<ixn:redirect>`
Forward E-Mail | `<msgbased:createmessage>` for appropriate media
Function | `<script>` any functional module interface action or ECMAScript function.
Generic | `<script>` if done in orchestration, `<session:fetch>` with application server code, if done outside.
Identify Contact | `<session:fetch srcexpr="http://server1.com/cv/profiles" method="get" ... >`
If | `<if>`
IVR | `<dialog:remote>`
Load Balancing | `<queue:submit>`
Macro | `<include>`
MultiAssign | `<assign using ECMAScript object properties and functions>`
MultiAttach | `<script>` or `<assign>` using _genesys.FMname.interactions[x].udata object properties
MultiScreen | `<classification:screen>`
Music | `< dialog:playsound>`
Pause | `<runttreatments>` and `<pause>`
Percentage | `<queue:submit>`
Play Announcement | `< dialog:play>` and `<prompts type="tts">`
Play Announcement and collect digits | `< dialog:playandcollect>`
Play Application | `< dialog:start>`
Processed | `<session:fetch..." method = "'post'" srcexpr="'http://server.com...req=RecordProcessed'" />`
Queue Interaction | `<ixn:redirect>`
RAN | `< dialog:playsound>`
Record User Announcement | `< dialog:recordann>`
Redirect E-Mail | `<msgbased:createmessage>` for appropriate media
Reply E-Mail From External Resource | `<msgbased:createmessage>` for appropriate media
Reschedule | `<session:fetch..." method = "'post'" srcexpr="'http://server.com...req=RecordReschedule'" />`
Ringback | `< dialog:playsound>`
Route Interaction | `<queue:submit>`
Screen | `<classification:screen>`
Screen (segmentation) | `<classification:screen>`, `<script>` if done in orchestration, `<session:fetch>` with application server code, if done outside.
Selection (target selection) | `<queue:submit>`, `<dialog:runtreatments>`
Send E-Mail | `<msgbased:sendmessage>`
Service level | `<queue:submit>`, `<dialog:runtreatments>`
Set Default Destination | `<dialog:setdialogdefaultdest>`
Silence | `< dialog:playsound>`
Statistics | `<queue:submit>`, `<dialog:runtreatments>`
Stop Interaction | `<ixn:terminate>`
Switch to Strategy | `<include>` or `<invoke>`
Text to Speech | `<dialog:play><prompts type="tts">`
Text to Speech and Collect Digits | `<dialog:playandcollect><prompts type="tts">`
Time | `<script>` if done in orchestration (use ECMAScript standard date functions/objects or Session functional module ECMAScript date and time functions), `<session:fetch>` with application server code, if done outside.
Update Contact | `<session:fetch srcexpr="http://server1.com/cv/profiles" method="put"... >`
Update Record | `<session:fetch..." method = "'post'" srcexpr="'http://server.com...req=UpdateCallCompletionStats'" />`
Verify Digits | `<dialog:playandverify>`
Web Service | `<session:fetch>` with application server code
Workbin | `<ixn:redirect>`
Workforce | `<queue:submit>`, `<dialog:runtreatments>`

Function Block Mapping

Section IV – Misc. > Function Blocks Top of Page
| Genesys 8.0 SCXML Technical Reference
< External Interfaces