locked
How to get around Speech Event looping? RRS feed

  • Question

  • Hi

    I'm trying to write a Question Answer Activity prompt so that is speaks a main prompt, then for the cases of silence and no recognition it has a message. But then after continued silence or no recognition, it will revert back to the main prompt again.

    I used the no recognition and silence speech events, with maximums set to 1. But I can find no way to detect the event of two no recognitions or two silences in a row. Even if I add another speech event to detect two silences, it will then repeat that prompt for every consecutive silence without triggering an event.

    Are there any ways to change this behaviour at all?

    Thanks in advance

    Guy
    Tuesday, July 31, 2007 11:08 PM

Answers

  •  

    The TurnStarting event should be raised for each turn, and every prompt/reco operation is a separate turn. I.e., when you enter a QA, you'll get one Executing event and one or more TurnStarting events. So you should be able to do this in the TurnStarting event, although you'll need to figure out how to keep track of "is this the first silence" vs "is this the second silence".

     

    I don't think the StatusChanged event will help. That is a workflow event and it will (I think) only be raised when you enter or exit the QA. From the workflow's point of view, the QA starts and continues executing during the multiple turns.

     

    Dan

     

    Thursday, August 2, 2007 6:03 PM

All replies

  •  

    Guy,

     

    if all you want to do is vary the prompt of the QA based on silence/no-input, you should not be using a SpeechEvent. Instead, you just need to edit the various prompts of the QA, such as Main, Silence, and EscalatedSilence. It sounds like you just want to set the EscalatedSilence prompt to be the same as the Main prompt. SpeechEvents are meant to be used to run activities when you get a certain number of silences or no-inputs, not to vary the prompt on a QA.

     

    Dan

    Wednesday, August 1, 2007 6:41 AM
  • Hi Dan

    I set the prompts as you said but then my problem still occurs, i.e. that if it repeats the main prompt on an escalatedSilence, and there is silence again, then it will repeat the main prompt again, instead of the silence prompt as I would like.

    Guy
    Wednesday, August 1, 2007 5:53 PM
  • Ah, are you saying that if the user stays silent three times, you are getting this behavior?

     

    * Silence prompt

    * Escalated silence prompt (which happens to be the same as Main prompt)

    * Escalated silence prompt

     

    If so, then yes, this is by design. "Escalated" means "2 or more in a row". So this is what you should expect. If you need to customize the prompt further using the TurnStartingEvent (you can set e.PromptType to control what prompt gets played or you can set the QA's EscalatedSilencePrompt to either of the two values you want, but you need to handle the alternation yourself.)

     

    Dan

     

    Thursday, August 2, 2007 6:18 AM
  • Yeah that is exactly what I mean. I understand that Escalated Silence should be continuously called for each consecutive silence. What I don't understand is how to detect these consecutive silences to be able to implement the alternation. The TurnStarting event doesn't retrigger as it is still the same qaActivity, so that is why I was trying to use Speech Events but they also weren't triggering for these consecutive silences unless I manually added an event for each number of silences. Would the StatusChanged event of the qaActivity help here or is that something else?

    Sorry if it seems like I am nitpicking but I am trying to minimise repetitions of prompts in my program as I think it is something that can put users off. This is more applicable to the NoRecognition event where if a user answers incorrectly, they keep on getting the same NoRecognition prompt, which I think would be more helpful with some form of alternation. Also it won't be a simple alternation, as I have set up my program with a list of prompts for each qa, so that it randomly gives a different prompt each time. This way, it can explain in more detail what options the user has, without booting them out of the program if they don't say the right thing.

    Thanks
    Guy
    Thursday, August 2, 2007 5:41 PM
  •  

    The TurnStarting event should be raised for each turn, and every prompt/reco operation is a separate turn. I.e., when you enter a QA, you'll get one Executing event and one or more TurnStarting events. So you should be able to do this in the TurnStarting event, although you'll need to figure out how to keep track of "is this the first silence" vs "is this the second silence".

     

    I don't think the StatusChanged event will help. That is a workflow event and it will (I think) only be raised when you enter or exit the QA. From the workflow's point of view, the QA starts and continues executing during the multiple turns.

     

    Dan

     

    Thursday, August 2, 2007 6:03 PM
  • Thank you Dan! I was using the Speech Events which weren't retriggering, but when I changed to using the TurnStarting, it gave me the events each time. That is exactly what I need.
    Thanks
    Guy
    Thursday, August 2, 2007 6:31 PM