* dsm_lang:
DSM: support variables in range, e.g. range($myvar)
DSM: size($arrayname, $dst) action
added [] to chars not allowed in var names
DSM: fix for ($bar in array) for structs
DSM: parsing of "else", if conditions without []
DSM: implement for ($x in range(2, 5))
DSM: "for (x in array)" and "for (k,v in struct)"
dsm: execution reordered (small optimization)
reindent
reindent
implementation of functions in DSM
initial support for if blocks (no else)
Development of this module was sponsored by TelTech Systems Inc.
The groups module implements a group event broadcast system. DSM calls can
join and leave groups, and post events to groups. Events are passed to all
members of the group that the event is posted to. Events can, just like the
`postEvent` function of DSM, contain either some variables, or all variables.
If a call ends, it is automatically removed from all groups it belongs to.
Actions:
groups.join(groupname) - Join a group
groups.leave(groupname) - Leave a group
groups.leaveAll() - Leave all groups
groups.postEvent(groupname, var1;var2) - post event to groupname with var1 and var2
groups.postEvent(groupname, var) - post event to groupname with all variables
This DSM tutorial implements step by step an application,
which is best described by the original question:
"I am trying to accomplish a script that parallel forks to
many callers and then the one who enters the right DTMF
code gets the call."
The tutorial shows how a full application can be implemented
with DSM state machine scripting alone. Specifically, it shows
how to
- play ringback tone (183 early media)
- read from mysql database
- place outgoing calls
- interact between calls
- use conference module to connect the audio of calls