Warning: session_start(): open(/var/lib/php/sessions/sess_3ulbgfgd4qij7l1224nbm1l5m6, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
sclass Handover {
sclass Form_DoYouWantAHuman > FormInFlight {
*() {
steps.add(nu FormStep(
key := "answer",
displayText := "Would you like to be connected to a sales representative?",
buttons := ll("Yes", "No")
));
}
S complete() {
if (isYes(getValue("answer")))
ret conversation.setForm(new ConnectToWorkerForm).initialMessage();
else
ret getCannedAnswer("#dontConnectMe", conversation);
}
}
sS handleHashtag(Conversation conversation, S tag) null {
if (eqic(tag, "#ConnectMeToAHuman"))
ret tryToConnect(conversation);
if (eqic(tag, "#DoYouWantAHuman")) {
conversation.setForm(new Form_DoYouWantAHuman);
ret ""; // Text comes from Q&A admin
}
}
sS tryToConnect(Conversation conversation) {
print("Handover tryToConnect");
if (workerChat.anyWorkersAvailable())
ret conversation.setForm(new ConnectToWorkerForm).initialMessage();
else
ret getCannedAnswer("#away", conversation);
}
sclass ConnectToWorkerForm > FormInFlight {
runnable class TimeoutAction { onTimeout(); }
S initialMessage() {
addTimeout(20.0, new TimeoutAction);
ret getCannedAnswer("#connecting", conversation);
}
void onWorkerAccepts(Worker worker) {
// turn off bot done elsewhere
// mark conversation as connected to worker done elsewhere
conversation.cancelForm(); // cancel this form
conversation.add(new Msg(getCannedAnswer("#connected", conversation), false));
}
void onTimeout() {
print("Handover timeout");
conversation.cancelForm(); // cancel this form
conversation.add(new Msg(getCannedAnswer("#away", conversation), false));
}
}
}