repeatAndPing.dsl 2.71 KB
library

preprocessor digression repeat_preprocessor
{
    conditions { on true priority 50000; }
    var retriesLimit=2;
    var counter=0;
    do
    {
         if (digression.repeat.resetOnRecognized)
        {
            set digression.repeat.counter = 0;
            #log(digression.repeat.counter);
        }
        set digression.repeat.resetOnRecognized = true;
        #log(digression.repeat.resetOnRecognized);
        return;
    }
    transitions
    {
    }
}

digression repeat_hangup_params
{
    conditions { on false; }
    var responses: Phrases[] = ["dont_understand_hangup"];
    var status = "RepeatHangup";
    var serviceStatus = "Done";
    do
    {
    }
    transitions
    {
    }
}

digression repeat
{
    conditions { on #messageHasAnyIntent(digression.repeat.triggers); }
    var retriesLimit = 2;
    var counter = 0;
    var resetOnRecognized=false;
    var triggers = ["repeat", "dont_understand", "what"];
    var responses: Phrases[] = ["i_said"];
    do
    {
        $cjm.push("repeat_dig");
        if (digression.repeat.counter == digression.repeat.retriesLimit)
        {
            goto hangup;
        }
        set digression.repeat.counter = digression.repeat.counter + 1;
        #log(digression.repeat.counter);
        set digression.repeat.resetOnRecognized = false;
        for (var item in digression.repeat.responses)
        {
            #say(item, repeatMode: "ignore");
        }
        #repeat(accuracy: "short");
        return;
    }
    transitions
    {
        hangup: goto repeat_or_ping_hangup;
    }
}

digression ping
{
    conditions { on #messageHasAnyIntent(digression.ping.triggers) and !#messageHasIntent("greeting") priority -100; }
    var retriesLimit = 2;
    var counter = 0;
    var resetOnRecognized=false;
    var triggers = ["ping"];
    do
    {
        $cjm.push("ping_dig");
        if (digression.repeat.counter == digression.repeat.retriesLimit)
        {
            goto hangup;
        }
        set digression.repeat.counter = digression.repeat.counter + 1;
        #log(digression.repeat.counter);
        set digression.repeat.resetOnRecognized = false;
        #repeat(accuracy: "short");
        return;
    }
    transitions
    {
        hangup: goto repeat_or_ping_hangup;
    }
}

node repeat_or_ping_hangup
{
    do
    {
        $cjm.push("repeat_or_ping_hangup");
        
        for (var item in digression.repeat_hangup_params.responses)
        {
            #say(item, repeatMode: "ignore");
        }
        set $status=digression.repeat_hangup_params.status;
        set $serviceStatus=digression.repeat_hangup_params.serviceStatus;
        #disconnect();
        goto do_before_exit;
    }
    transitions
    {
        do_before_exit: goto do_before_exit;
    }
}