Dafür wird cmdconnect benötigt, ein Beispiel könnte sich aus den 3 folgenden Projekten zusammensetzen:
1) DTMF1projectVox
2) DTMF1projectRecord
3) DTMF1projectConnect
zu 1) nur als neues Startprojekt
LogFmsState("DTMF1projectvox.lua")
-- *************************************
-- ***** DTMF1projectvox
-- *************************************
if (CheckFmsState("DTMF1projectvox")) then
-- *************************************
-- ***** DTMF1projectvox -> INITIAL
-- *************************************
else
SetFmsState("DTMF1projectvox")
return EVENT_RESTARTSCRIPT
end
-- *************************************
-- ***** DTMF1projectvox
-- *************************************
if (CheckFmsState("DTMF1projectvox")) then
--set minimal pinlength, if not set, dynamic
--SetFmsProjectData("globalData","pinLength","6")
if (EvtGateway()) then
if (CmdCheckPin("0") == EVENT_IVROK) then
else
--SetFmsProjectData("globalData","pinLength","6")
if (EvtGateway()) then
SetFmsState("projectAbfrage: replay")
CmdGotoNode("\\\\projectAbfrage")
return EVENT_IVRGOTONODE
endCmdGotoNode("\\\\projectAbfrage")
return EVENT_IVRGOTONODE
if (CmdCheckPin("0") == EVENT_IVROK) then
SetFmsState("projectAbfrage")
CmdGotoNode("\\\\projectAbfrage")
return EVENT_IVRGOTONODE
CmdGotoNode("\\\\projectAbfrage")
return EVENT_IVRGOTONODE
else
SetFmsState("DTMF1projectRecord")
CmdGotoNode("\\\\DTMF1projectRecord")
return EVENT_IVRGOTONODE
endCmdGotoNode("\\\\DTMF1projectRecord")
return EVENT_IVRGOTONODE
-- *************************************
-- ***** DTMF1projectvox -> INITIAL
-- *************************************
else
SetFmsState("DTMF1projectvox")
return EVENT_RESTARTSCRIPT
end
zu 2) Hier erfolgt die Verzweigung
LogFmsState("DTMF1projectrecord.lua")
-- *************************************
-- ***** DTMF1projectrecord: init
-- *************************************
if (CheckFmsState("DTMF1projectrecord: init")) then
-- *************************************
-- ***** DTMF1projectrecord: EvtHandler
-- *************************************
elseif (CheckFmsState("DTMF1projectrecord: EvtHandler")) then
-- *************************************
-- ***** DTMF1projectrecord: EvtHandler DtmfAny
-- *************************************
elseif (CheckFmsState("DTMF1projectrecord: EvtHandler DtmfAny")) then
-- *************************************
-- ***** DTMF1projectrecord: record msg
-- *************************************
elseif (CheckFmsState("DTMF1projectrecord: record msg")) then
-- *************************************
-- ***** DTMF1projectrecord: record msg EvtHandler
-- *************************************
elseif (CheckFmsState("DTMF1projectrecord: record msg EvtHandler")) then
-- ***** DTMF1projectrecord: projectpin -> OK
-- *************************************
elseif (CheckFmsState("DTMF1projectrecord: projectPin ok")) then
-- *************************************
-- ***** DTMF1projectrecord: projectpin -> NOK
-- *************************************
elseif (CheckFmsState("DTMF1projectrecord: projectPin nok")) then
-- *************************************
-- ***** DTMF1projectrecord: -> INITIAL
-- *************************************
else
SetFmsState("DTMF1projectrecord: init")
return EVENT_RESTARTSCRIPTend
-- *************************************
-- ***** DTMF1projectrecord: init
-- *************************************
if (CheckFmsState("DTMF1projectrecord: init")) then
CmdPlayPrompt("[GREETINGFILE];beep.raw")
FmsEnableAutoStopAndDelete(false)
CmdActivatePlayList(1)
SetFmsState("DTMF1projectrecord: EvtHandler")
return EVENT_WAITFORNEXTEVENT
FmsEnableAutoStopAndDelete(false)
CmdActivatePlayList(1)
SetFmsState("DTMF1projectrecord: EvtHandler")
return EVENT_WAITFORNEXTEVENT
-- *************************************
-- ***** DTMF1projectrecord: EvtHandler
-- *************************************
elseif (CheckFmsState("DTMF1projectrecord: EvtHandler")) then
if (EvtDtmfStar()) then
elseif (EvtDtmf1()) then
elseif (EvtTimer() or EvtOnhook()) then
SetFmsState("DTMF1projectrecord: record msg")
return EVENT_RESTARTSCRIPT
FmsEnableAutoStopAndDelete(true)
CmdDeletePlayList()
CmdDeleteRecord()
SetFmsState("projectPin")
CmdGosubNode("\\\\projectPin")
return EVENT_IVRGOTONODE
CmdDeletePlayList()
CmdDeleteRecord()
SetFmsState("projectPin")
CmdGosubNode("\\\\projectPin")
return EVENT_IVRGOTONODE
elseif (EvtDtmf1()) then
FmsEnableAutoStopAndDelete(true)
CmdDeletePlayList()
CmdDeleteRecord()
SetFmsState("DTMF1projectConnect")
CmdGosubNode("\\\\DTMF1projectConnect")
return EVENT_IVRGOTONODE
CmdDeletePlayList()
CmdDeleteRecord()
SetFmsState("DTMF1projectConnect")
CmdGosubNode("\\\\DTMF1projectConnect")
return EVENT_IVRGOTONODE
elseif (EvtTimer() or EvtOnhook()) then
CmdSendMessageToGateway()
SetFmsState("projectHangup: hangup")
CmdGotoNode("\\\\projectHangup")
return EVENT_IVRGOTONODE
elseif (EvtGateway()) then SetFmsState("projectHangup: hangup")
CmdGotoNode("\\\\projectHangup")
return EVENT_IVRGOTONODE
SetFmsState("projectAbfrage")
CmdGotoNode("\\\\projectAbfrage")
return EVENT_IVRGOTONODE
endCmdGotoNode("\\\\projectAbfrage")
return EVENT_IVRGOTONODE
SetFmsState("DTMF1projectrecord: record msg")
return EVENT_RESTARTSCRIPT
-- *************************************
-- ***** DTMF1projectrecord: EvtHandler DtmfAny
-- *************************************
elseif (CheckFmsState("DTMF1projectrecord: EvtHandler DtmfAny")) then
SetFmsState("DTMF1projectrecord: EvtHandler")
return EVENT_WAITFORNEXTEVENT
return EVENT_WAITFORNEXTEVENT
-- *************************************
-- ***** DTMF1projectrecord: record msg
-- *************************************
elseif (CheckFmsState("DTMF1projectrecord: record msg")) then
if(EvtPromptPlayed()) then
CmdRecord()
CmdSetTimer("120")
SetFmsState("DTMF1projectrecord: record msg EvtHandler")
return EVENT_WAITFORNEXTEVENT
elseCmdSetTimer("120")
SetFmsState("DTMF1projectrecord: record msg EvtHandler")
return EVENT_WAITFORNEXTEVENT
LogUnknownEvent("DTMF1projectrecord.lua")
return EVENT_WAITFORNEXTEVENT
endreturn EVENT_WAITFORNEXTEVENT
-- *************************************
-- ***** DTMF1projectrecord: record msg EvtHandler
-- *************************************
elseif (CheckFmsState("DTMF1projectrecord: record msg EvtHandler")) then
if (EvtDtmfStar()) then
elseif (EvtDtmf1()) then
elseif (EvtTimer() or EvtOnhook()) then
LogUnknownEvent("DTMF1projectrecord.lua")
return EVENT_WAITFORNEXTEVENT end
-- *************************************CmdDeletePlayList()
CmdDeleteRecord()
SetFmsState("projectPin")
CmdGosubNode("\\\\projectPin")
return EVENT_IVRGOTONODE
CmdDeleteRecord()
SetFmsState("projectPin")
CmdGosubNode("\\\\projectPin")
return EVENT_IVRGOTONODE
elseif (EvtDtmf1()) then
FmsEnableAutoStopAndDelete(true)
CmdDeletePlayList()
CmdDeleteRecord()
SetFmsState("DTMF1projectConnect")
CmdGosubNode("\\\\DTMF1projectConnect")
return EVENT_IVRGOTONODE
CmdDeletePlayList()
CmdDeleteRecord()
SetFmsState("DTMF1projectConnect")
CmdGosubNode("\\\\DTMF1projectConnect")
return EVENT_IVRGOTONODE
elseif (EvtTimer() or EvtOnhook()) then
CmdSendMessageToGateway()
SetFmsState("projectHangup: hangup")
CmdGotoNode("\\\\projectHangup")
return EVENT_IVRGOTONODE
elseif (EvtRecordStart()) thenSetFmsState("projectHangup: hangup")
CmdGotoNode("\\\\projectHangup")
return EVENT_IVRGOTONODE
-- Event nicht mit LogUnknownEvent dumpen
return EVENT_WAITFORNEXTEVENT
elsereturn EVENT_WAITFORNEXTEVENT
LogUnknownEvent("DTMF1projectrecord.lua")
return EVENT_WAITFORNEXTEVENT
-- ***** DTMF1projectrecord: projectpin -> OK
-- *************************************
elseif (CheckFmsState("DTMF1projectrecord: projectPin ok")) then
SetFmsState("projectConfig")
CmdGotoNode("\\\\projectConfig")
return EVENT_IVRGOTONODE
CmdGotoNode("\\\\projectConfig")
return EVENT_IVRGOTONODE
-- *************************************
-- ***** DTMF1projectrecord: projectpin -> NOK
-- *************************************
elseif (CheckFmsState("DTMF1projectrecord: projectPin nok")) then
SetFmsState("projectHangup: hangup")
CmdGotoNode("\\\\projectHangup")
return EVENT_IVRGOTONODE
CmdGotoNode("\\\\projectHangup")
return EVENT_IVRGOTONODE
-- *************************************
-- ***** DTMF1projectrecord: -> INITIAL
-- *************************************
else
SetFmsState("DTMF1projectrecord: init")
return EVENT_RESTARTSCRIPT
Die Zielrufnummer müsste entsprechend angepasst werden und im audio/de muss die alerting.raw vorliegen.
LogFmsState("DTMF1projectConnect.lua")
-- *************************************
-- ***** DTMF1projectConnect: init
-- *************************************
if (CheckFmsState("DTMF1projectConnect: init")) then
-- *************************************
-- ***** DTMF1projectConnect: EvtHandler
-- *************************************
elseif (CheckFmsState("DTMF1projectConnect: EvtHandler")) then
CmdConnect(0,GetFmsProjectData("dtmf1","number"))
CmdPlayPrompt(GetFmsProjectData("dtmf1","audiofile "))
FmsEnableAutoStopAndDelete(false)
SetFmsState("DTMF1projectConnect: ringing")
return EVENT_WAITFORNEXTEVENT
-- *************************************
-- ***** DTMF1projectConnect: ringing
-- *************************************
elseif (CheckFmsState("DTMF1projectConnect: ringing")) then
-- *************************************
-- ***** DTMF1projectConnect -> INITIAL
-- *************************************
else
end
-- *************************************
-- ***** DTMF1projectConnect: init
-- *************************************
if (CheckFmsState("DTMF1projectConnect: init")) then
-- ** define ivr variables ** --
--NOTRUF--
SetFmsProjectData("dtmf1","number","0003328455")
SetFmsProjectData("dtmf1","audiofile","alerting.ra w")
CmdDumpVariables()
SetFmsState("DTMF1projectConnect: EvtHandler")
return EVENT_RESTARTSCRIPT
SetFmsProjectData("dtmf1","number","0003328455")
SetFmsProjectData("dtmf1","audiofile","alerting.ra w")
CmdDumpVariables()
SetFmsState("DTMF1projectConnect: EvtHandler")
return EVENT_RESTARTSCRIPT
-- *************************************
-- ***** DTMF1projectConnect: EvtHandler
-- *************************************
elseif (CheckFmsState("DTMF1projectConnect: EvtHandler")) then
CmdConnect(0,GetFmsProjectData("dtmf1","number"))
CmdPlayPrompt(GetFmsProjectData("dtmf1","audiofile "))
FmsEnableAutoStopAndDelete(false)
SetFmsState("DTMF1projectConnect: ringing")
return EVENT_WAITFORNEXTEVENT
-- *************************************
-- ***** DTMF1projectConnect: ringing
-- *************************************
elseif (CheckFmsState("DTMF1projectConnect: ringing")) then
if (EvtPromptPlayed()) then
elseif( EvtOnhook()) then
elseif (EvtDtmfStar()) then
CmdPlayPrompt(GetFmsProjectData("dtmf1","audiofile "))
return EVENT_WAITFORNEXTEVENT
return EVENT_WAITFORNEXTEVENT
elseif( EvtOnhook()) then
CmdOnHookOutgoing()
SetFmsState("projectHangup")
CmdGotoNode("\\\\projectHangup")
return EVENT_IVRGOTONODE
SetFmsState("projectHangup")
CmdGotoNode("\\\\projectHangup")
return EVENT_IVRGOTONODE
elseif (EvtDtmfStar()) then
CmdOnHookOutgoing()
FmsEnableAutoStopAndDelete(true)
CmdDeletePlayList()
SetFmsState("DTMF1projectRecord")
CmdGosubNode("\\\\DTMF1projectRecord")
return EVENT_IVRGOTONODE
elseFmsEnableAutoStopAndDelete(true)
CmdDeletePlayList()
SetFmsState("DTMF1projectRecord")
CmdGosubNode("\\\\DTMF1projectRecord")
return EVENT_IVRGOTONODE
return EVENT_WAITFORNEXTEVENT
end-- *************************************
-- ***** DTMF1projectConnect -> INITIAL
-- *************************************
else
SetFmsState("DTMF1projectConnect: init")
return EVENT_RESTARTSCRIPT
return EVENT_RESTARTSCRIPT
end
Einen Kommentar schreiben: