Hi ddl,
You're right, the second confirmation wasn't working in your scene. This is because Vox has trouble with multiple confirm commands strung together. Although there's a technical workaround if it's absolutely necessary, there's no need to have multiple confirm commands in your particular scene.
Instead, you can use your scripted response to the previous command as the command phrase that triggers the next command (in this case, Acknowledgement One). Then the only command you're confirming is the last one -- Program One.
Apart from that, we just did some minor clean-up of actions and more importantly, divided your commands into two groups. Try them out, see what you think.
<?xml version="1.0" encoding="utf-16"?>
<commandGroup open="True" name="test" enabled="True" prefix="" priority="0" requiredProcess="" description="">
<command id="362" name="Greet computer" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>TTS.Speak</cmdType>
<cmdString>Hello, who am I speaking to?</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>VC.EnableGroup</cmdType>
<cmdString>Program one</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<payloadList optional="true">good morning, good afternoon, good evening</payloadList>
<phrase>Hello computer</phrase>
</command>
</commandGroup>
<?xml version="1.0" encoding="utf-16"?>
<commandGroup open="True" name="Program one" enabled="False" prefix="" priority="0" requiredProcess="" description="">
<command id="483" name="User choices" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>TTS.SpeakSync</cmdType>
<cmdString>Hey! {1}</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<if ifBlockDisabled="False" ifNot="False">
<ifType>(A)==(B)</ifType>
<ifParams>{1}&&Donald</ifParams>
<then>
<action>
<cmdType>TTS.SpeakSync</cmdType>
<cmdString>How are you today?</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>VC.TellVox</cmdType>
<cmdString>Acknowledgement 1</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
</then>
<else />
</if>
<if ifBlockDisabled="False" ifNot="False">
<ifType>(A)==(B)</ifType>
<ifParams>{1}&&Lisa</ifParams>
<then>
<action>
<cmdType>TTS.SpeakSync</cmdType>
<cmdString>Would you like to listen to your favourite music?</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>VC.TellVox</cmdType>
<cmdString>Play Lisa's music</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
</then>
<else />
</if>
<phrase>This is, I am, It is</phrase>
<payloadList>Donald, Lisa</payloadList>
<phrase optional="true">speaking, here</phrase>
</command>
<command id="462" name="Acknowledgement 1" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>TTS.SpeakSync</cmdType>
<cmdString>Alright! </cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.SpeakSync</cmdType>
<cmdString>I'm glad to hear that you are doing well!</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.SpeakSync</cmdType>
<cmdString>I'm doing fine myself.</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.SpeakSync</cmdType>
<cmdString>Would you like me to run program one?</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>VC.TellVox</cmdType>
<cmdString>program one</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>I am fine, Not bad, I'm okay</phrase>
<phrase optional="true">thanks, I'm afraid</phrase>
</command>
<command id="495" name="Program one" enabled="true" alwaysOn="False" confirm="True" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>TTS.SpeakSync</cmdType>
<cmdString>Ok! running program one now.</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.SpeakSync</cmdType>
<cmdString>The time is {ShortTime}</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>WUnder.Refresh</cmdType>
<cmdString>Bowie&&EN&&C</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>WUnder.GetCustom</cmdType>
<cmdString>{C.temp_f}</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.SpeakSync</cmdType>
<cmdString>The current temperature outside is {LastResult} degrees</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.SpeakSync</cmdType>
<cmdString>I will adjust the thermostat to 75 degrees</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.SpeakSync</cmdType>
<cmdString>I will also set the kitchen and tv room lights to 100%.</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Scrape</cmdType>
<cmdString>http://192.168.1.1/rest/programs/002C/runThen&&d</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Scrape</cmdType>
<cmdString>http://192.168.1.1/rest/nodes/C 7B 80 1/cmd/DON&&d</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Scrape</cmdType>
<cmdString>http://192.168.1.1/rest/nodes/D 2B A6 1/cmd/DON&&d</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Scrape</cmdType>
<cmdString>http://192.168.1.1/rest/programs/004D/runThen&&don</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>VC.DisableGroup</cmdType>
<cmdString>Program one</cmdString>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>program one</phrase>
</command>
</commandGroup>
As James has said before, VC was not initially conceived as a conversational AI bot, but really as a way to replace manual control with voice control. So while it's great for a single back and forth exchange, implementing entire conversational threads can definitely get tricksy.