mirror of https://github.com/sipwise/sems.git
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.
66 lines
1.7 KiB
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; |