wait.dsl 1.8 KB
library

block doWait():doWaitMore {
    start node root {
        do {
            #log("block 'doWait'");
            wait*;
        }
        transitions {
            transition1: goto wait_for_abonent_speech on timeout 5000;
        }
    }
    node wait_for_abonent_speech {
        do {
            #sayText("Вы готовы продолжить?", repeatMode: "ignore");
            wait*;
        }
        transitions {
            yes: goto stopwaiting on #messageHasSentiment("positive") || #messageHasIntent("ready");
            maybe: goto root on true && !#messageHasSentiment("positive") && !#messageHasIntent("ready") && !#messageHasSentiment("negative");
            no: goto waiting on #messageHasSentiment("negative");
        }
    }

    node waiting {
        do {
            #sayText("Жду.", repeatMode: "ignore");
            goto root;
        }
        transitions{
            root: goto root;
        }
    }
    node stopwaiting {
        do {
            // return value from block
            return "yes";
        }
    }
}

digression wait_for_abonent
{
        conditions { on #messageHasAnyIntent(digression.wait_for_abonent.triggers); }
        var triggers = ["wait", "waitfor"];
        var responses: Phrases[] = ["imwaiting"];
        do
        {
            $cjm.push("wait_for_abonent");
                for (var item in digression.wait_for_abonent.responses)
                {
                        #say(item, repeatMode: "ignore");
                }
                var block_result = blockcall doWait();
                if (block_result == "yes")
                {
                #sayText("Давайте продолжим", repeatMode: "ignore");
                #repeat(accuracy:"short");
                return;
                }
        }
        transitions
        {
        }
}