You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sems/doc/dsm/tutorials/quizconnect/quizconnect_callee.dsm

66 lines
1.7 KiB

import(mod_dlg);
import(mod_conference);
initial state START;
transition "got INVITE in callee leg" START - invite -> RUN_INVITE;
transition "session starts in callee leg" START - sessionStart / {
sets($prompt_name=$(config.prompt_path)/welcome_callee.wav)
playFile($prompt_name);
} -> ENTER_PIN;
state RUN_INVITE
enter {
logAll(3);
};
state ENTER_PIN;
transition "got cancel from A leg" (START, RUN_INVITE, ENTER_PIN) - event(#a_status==CANCEL) / stop(true) -> END;
transition "pressed a number" ENTER_PIN - key(#key<10) / {
closePlaylist(false);
append($entered_pin, #key);
} -> TEST_PIN;
transition "pressed hash or start" ENTER_PIN - key / closePlaylist(false) -> TEST_PIN_FINAL;
state TEST_PIN
enter {
repost();
};
transition "pin matches" TEST_PIN - test($pin==$entered_pin) -> MATCHING_PIN;
transition "pin doesn't match" TEST_PIN - test($pin!=$entered_pin) -> ENTER_PIN;
state TEST_PIN_FINAL
enter {
repost();
};
transition "pin matches" TEST_PIN_FINAL - test($pin==$entered_pin) -> MATCHING_PIN;
transition "pin doesn't match" TEST_PIN_FINAL - test($pin!=$entered_pin) / {
clear($entered_pin);
sets($prompt_name=$(config.prompt_path)/sorry_pin_wrong.wav)
playFile($prompt_name);
} -> ENTER_PIN;
state MATCHING_PIN
enter {
set($b_status=MATCHED);
set($b_ltag=@local_tag);
postEvent($a_ltag, b_status;b_ltag);
conference.join($a_ltag);
repost();
};
transition "ok, connected" MATCHING_PIN --> CONNECTED;
state CONNECTED;
transition "BYE received" CONNECTED - hangup / {
set($b_status=BYE);
postEvent($a_ltag, b_status);
stop(false);
} -> END;
transition "BYE in other leg" CONNECTED - event(#a_status==BYE) / {
stop(true);
} -> END;
state END;