a possible solution for my usecase would also be if voxcommando could load an entire xml commandtree as default thats online and not the local one in the vc folder? is there any way you could think of for doing just that?
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Show posts MenuQuoteI took the liberty of filling out your web form a few times, and I think James did as well.
QuoteWe did find an error in the construct_page command. The last action is trying to launch the local php file instead of the web page. We changed the command to:
Quote2. I notice that you're using PY.ExecString > result = 'string' to set your {LastResult} variable. Is there a reason you're not using the Results.SetLastResult action?
Quote3. On my server I ran into some 500 errors when setting the file permissions. For our users who're comfortable setting public permissions on their website in order to make this work, just a note that you might still need to debug a bit to find which permissions settings will work on your server.
QuoteI think this is a really cool idea for people who have a website. I personally am not that comfortable with the security aspect. That is always up to each person to decide what works for them, of course.
QuoteJames and I were brainstorming about other possible implementations, possibly using Dropbox. We'll let you know if/when we come up with something. Sometimes it's interesting to compare how different people solve the same challenge.
) you will meet "Dominique" soon enough in whatever form. if you liked this you will love that 


is there somewhere the codesnippets responsible for creating the commandhelp.html? it basically needs the same functionality from what i am trying to achieve....
<?xml version="1.0" encoding="utf-8"?>
<VoiceCommands version="2.2.3.7" space="preserve" date="8/30/2017 12:00:00 AM">
<commandGroup open="True" name="Vox Commands" enabled="True" prefix="" priority="1" requiredProcess="" description="">
<command id="8" name="Don't Listen" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>VC.Standby</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>ignore me,don't listen,stand by</phrase>
</command>
<command id="31" name="Listen" enabled="true" alwaysOn="True" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>VC.On</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>computer, start listening, pay attention</phrase>
<event>Amulet.On</event>
</command>
<command id="32" name="Option" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>VC.Option</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Option,Select Option</phrase>
<payloadRange>1,10</payloadRange>
</command>
<command id="43" name="Vox Off" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>VC.Off</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>vox off, vox commando off,disable vox commando</phrase>
<event>Amulet.Off</event>
</command>
</commandGroup>
<commandGroup open="True" name="Show Help" enabled="True" prefix="" priority="0" requiredProcess="" description="">
<command id="266" name="Show help" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>Help.ShowAll</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.Speak</cmdType>
<params>
<param>These are all of the voice commands for this configuration.</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Show help, What can I say</phrase>
</command>
<command id="264" name="Show active commands" enabled="False" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>Help.ShowEnabled</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.Speak</cmdType>
<params>
<param>These are voice commands in groups that are enabled.</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Show</phrase>
<phrase optional="true">me, us</phrase>
<phrase optional="true">the</phrase>
<phrase>active, enabled</phrase>
<phrase optional="true">voice</phrase>
<phrase>commands</phrase>
</command>
<command id="305" name="Send help" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>File.Read</cmdType>
<params>
<param>Resources\help.css</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>File.Write</cmdType>
<params>
<param>plugins\TCP\html\commandhelp2.html</param>
<param><html><head><meta charset="UTF-8"><title>aaaaa</title><style>{LastResult}asdfasdf</style></head></param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExSingle</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Help.ShowEnabled</cmdType>
<params />
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.Speak</cmdType>
<params>
<param>Refreshing command list on your local web server.</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>File.Read</cmdType>
<params>
<param>commandhelp2.html</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExSingle</cmdType>
<params>
<param></head>(.*?)$</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>File.Append</cmdType>
<params>
<param>plugins\TCP\html\commandhelp2.html</param>
<param>{Match.1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>Send help</phrase>
</command>
</commandGroup>
<commandGroup open="True" name="reuters" enabled="True" prefix="" priority="0" requiredProcess="" description="">
<command id="1173" name="Reuters news" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="{Match.{i}.1} is the headline (where {i} is 1st, 2nd, 3rd ... headlines)
{Match.{i}.2} is the URL linking to each full story.

There will be more matches stored in the payload xml file than the 4 announced in the command.">
<action>
<cmdType>Scrape</cmdType>
<params>
<param>http://feeds.reuters.com/reuters/worldNews</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExSingle</cmdType>
<params>
<param><item>.*?<title>(.*?)<.*?description.*?<link>(.*?)<</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>PayloadXML.Clear</cmdType>
<params>
<param>reuters.xml</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>PayloadXML.AddPair</cmdType>
<params>
<param>reuters.xml</param>
<param>{Match.{i}.2}</param>
<param>{i}</param>
</params>
<cmdRepeat>{#M}</cmdRepeat>
</action>
<action>
<cmdType>OSD.ShowText</cmdType>
<params>
<param>Today's Reuter's headlines ({#M} total):</param>
<param>10000</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>OSD.AddText</cmdType>
<params>
<param>{i}. {Match.{i}.1}.</param>
</params>
<cmdRepeat>4</cmdRepeat>
</action>
<action>
<cmdType>TTS.SpeakSync</cmdType>
<params>
<param>Here are the top 4 of {#M} Reuter's headlines</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.Speak</cmdType>
<params>
<param>{i}. {Match.{i}.1}.</param>
</params>
<cmdRepeat>4</cmdRepeat>
</action>
<phrase>What's the news from Reuters</phrase>
</command>
<command id="1179" name="More from Reuters" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="Shows the first line of the story. Reads out the whole story.

If you want it to only read the first few sentences, you can change {#M} to a specific number. So, if you use 2 instead of {#M} then it will read the first 3 lines, because the first sentence is read in the separate, TTS.Speak - {Match.1} action. (Or, you can create a separate "shut up" command with a TTS.Stop action to stop the TTS in mid-read. This would allow you to hear as much or as little as you wanted.)">
<action>
<cmdType>Launch.OpenURL</cmdType>
<params>
<param>{1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Scrape</cmdType>
<params>
<param>{1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExSingle</cmdType>
<params>
<param>="description"\scontent="(.*?)"</param>
<param><![CDATA[ ]]></param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.Speak</cmdType>
<params>
<param>{Match.1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>OSD.ShowText</cmdType>
<params>
<param>{Match.1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExSingle</cmdType>
<params>
<param><.*?midArticle_\d"></span><p>(.*?)<</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.Speak</cmdType>
<params>
<param>{Match.{i}}</param>
</params>
<cmdRepeat>{#M}</cmdRepeat>
</action>
<phrase>Tell me more about headline number</phrase>
<payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">reuters.xml</payloadFromXML>
</command>
</commandGroup>
</VoiceCommands><command\s[^<>]*name="(.*?)"

...
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.2.3.5-->
<command id="443" name="What Can I Say" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="Builds a list of enabled commands topics (based on CommandsGroups)">
<action>
<cmdType>PayloadXML.Clear</cmdType>
<params>
<param>\payloads\VC_Commands_Topics.xml</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>OSD.ShowText</cmdType>
<params>
<param>Choose a Topic</param>
<param>10000</param>
</params>
<cmdRepeat>{#M}</cmdRepeat>
</action>
<action>
<cmdType>TTS.Speak</cmdType>
<params>
<param>Choose a Topic</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Scrape</cmdType>
<params>
<param>\voicecommands.xml</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExReplace</cmdType>
<params>
<param>\&amp\;</param>
<param>And</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegEx</cmdType>
<params>
<param><commandGroup.*name="([^---].*)".*enabled="True"</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>OSD.AddText</cmdType>
<params>
<param>{Match.{i}}</param>
</params>
<cmdRepeat>{#M}</cmdRepeat>
</action>
<action>
<cmdType>TTS.Speak</cmdType>
<params>
<param><silence msec="100"/>{Match.{i}}.</param>
</params>
<cmdRepeat>{#M}</cmdRepeat>
</action>
<action>
<cmdType>PayloadXML.AddPair</cmdType>
<params>
<param>\payloads\VC_Commands_Topics.xml</param>
<param>{Match.{i}}</param>
<param>{Match.{i}}</param>
<param>False</param>
</params>
<cmdRepeat>{#M}</cmdRepeat>
</action>
<action>
<cmdType>Group.Rebuild</cmdType>
<params>
<param>Help</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<phrase>What Can I Say?</phrase>
</command>
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.2.3.5-->
<command id="339" name="Commands in a Topic" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>OSD.ShowText</cmdType>
<params>
<param>Commands in {1}</param>
<param>10000</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.SpeakSync</cmdType>
<params>
<param>Commands in {1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.SetLastResult</cmdType>
<params>
<param>{1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.Replace</cmdType>
<params>
<param><![CDATA[ ]]></param>
<param>\s</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.SetVar</cmdType>
<params>
<param>CommandGroup</param>
<param>{LastResult}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Scrape</cmdType>
<params>
<param>C:\Users\me\Google Drive\Dominique\Programme\Voxcommando\commandhelp.html</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExSingle</cmdType>
<params>
<param>id="heading"\> {Var.CommandGroup}</div>(.*?)id="clear"</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.SetLastResult</cmdType>
<params>
<param>{Match.1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExReplace</cmdType>
<params>
<param><TD>(.*?)</TD></param>
<param> $1</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExReplace</cmdType>
<params>
<param><TD\sclass="optional">(.*?)</TD></param>
<param> ($1) </param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExReplace</cmdType>
<params>
<param>(\d+),(\d+)</param>
<param>$1 to $2 </param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExReplace</cmdType>
<params>
<param>{(.*?)}</param>
<param>$1 </param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExReplace</cmdType>
<params>
<param>,</param>
<param> or</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExReplace</cmdType>
<params>
<param><BR\s/></param>
<param> or</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExReplace</cmdType>
<params>
<param> \|</param>
<param>,</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExReplace</cmdType>
<params>
<param><div\sid="command"><table><tr></tr></table></div></param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExReplace</cmdType>
<params>
<param><tr>(.*?)</tr></param>
<param>$1.</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegEx</cmdType>
<params>
<param><table>([^---].*)</table></param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>OSD.addText</cmdType>
<params>
<param>{i}. {Match.{i}}</param>
</params>
<cmdRepeat>{#M}</cmdRepeat>
</action>
<action>
<cmdType>VC.Pause</cmdType>
<params>
<param>400</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>TTS.Speak</cmdType>
<params>
<param>{Match.{i}}</param>
</params>
<cmdRepeat>{#M}</cmdRepeat>
</action>
<phrase optional="true">List</phrase>
<phrase>Commands</phrase>
<phrase optional="true">of, in, about, for</phrase>
<payloadFromXML phraseOnly="True" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">payloads\VC_Commands_Topics.xml</payloadFromXML>
</command>