While I am working on integrating iOS Reminder with VC, I wrote the following command that converts group of folders into a payload xml (each reminders list from various accounts is represented by a folder on my pc).
then another command will flush the cache (or parts of it) restart VC. VC will rebuild the grammar. Now what VC can understand is adapted to the new conditions ...
Since then I have been thinking that this can be expanded into modifying voicecommands.xml itself ... so VC can add commands to itself based on new conditions ... I am not saying it is gonna be easy but I think it is totally doable ... imagine finding a way to:
You say "VC wake me up at 8:00 am"
VC answer "I do not know what you mean By: VC wake me up at 8:00 am, do I have a similar command"
You answer "yes: Set an alarm"
VC "OK, new alternative to set an alarm has been added"
with time VC will evolve by learning the various ways we say the same thing which renders it even more natural ...
just a thought ... anyway here is the code that converts a list of folders into payload xml
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 1.9.3.3-->
<command id="432" name="Lists XML" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>Launch.Capture</cmdType>
<params>
<param>C:\Windows\System32\cmd.exe</param>
<param>/C dir "C:\Users\iHome\Dropbox\IFTTT\iOS Reminders"</param>
<param>true</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExReplace</cmdType>
<params>
<param>Volume.*</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExReplace</cmdType>
<params>
<param>Directory.*\n</param>
<param><?xml version="1.0" encoding="utf-8"?>{CR}<!--A VoxCommando Payload file-->{CR}<PayloadsRoot></param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExReplace</cmdType>
<params>
<param>.*<DIR>.*\.+\r\n</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExReplace</cmdType>
<params>
<param>.*<DIR>\s+(.*)\r</param>
<param> <payload>{CR} <value>$1</value>{CR} <phrase>$1</phrase>{CR} </payload>{CR}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExReplace</cmdType>
<params>
<param>.*bytes free\r\n</param>
<param></PayloadsRoot></param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExReplace</cmdType>
<params>
<param>.*bytes\r\n</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExReplace</cmdType>
<params>
<param>\s\n\s\n\r\n\s</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType />
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>File.Write</cmdType>
<params>
<param>C:\Extensions\Vox Commando\payloads\iOS Reminders.xml</param>
<param>{LastResult}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>VC.Pause</cmdType>
<params>
<param>1000</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>VC.RestartFull</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<event>iOS Reminders List</event>
<phrase>Remind me</phrase>
<payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">payloads\iOS Reminders.xml</payloadFromXML>
</command>
/code]