Show Posts

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.


Topics - marcusvdt

Pages: [1] 2
1
Hi!

I'm creating a command group for Chrome (in fact I used the one that is posted in gems as a base).
I want to have a more consistent treatment as to launching the browser and making sure it is in focus before I start sending commands to it. So I've modified the launch command as below.
Instead of launching the default browser, which creates dependencies of external manual actions (ie I would need to manually set Chrome as my default browser), I wanted to launch the Chrome executable. But then I wanted to confirm it is opened before I go ahead sending the commands for it to browse to a web site.
I supposed the loop block would fit perfectly for my needs since I could keep looping until Chrome is in focus and then follow the remaining actions (check the commands attached for more details).
As per the wiki, loops blocks can't have logic blocks inside, so I thought I could have an event that would trigger a command that would set j variable to a value greater than the one set in the loop, hence breaking the loop block.

On my tests I can't get the above to work, probably because more than one characteristics of how the logic blocks have been designed. I'm not questioning this, or asking to change anything, but perhaps some of you guys can suggest a way of doing the consistency I'm trying to do.

So could you please take a look on that and eventually suggest something else that would achieve the same result?

Thanks in advance.

Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.2.0.7-->
<command id="678" name="open url with payload" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
  <if ifBlockDisabled="False" ifNot="True">
    <ifType>ProcessRunning</ifType>
    <ifParams>chrome&amp;&amp;</ifParams>
    <then>
      <action>
        <cmdType>Launch.RawParam</cmdType>
        <params>
          <param>{Path.PFx86}\Google\Chrome\Application\chrome.exe</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
      <action>
        <cmdType>TTS.SpeakSync</cmdType>
        <params>
          <param>Opening Chrome</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
    </then>
    <else />
  </if>
  <loop>
    <loopParams>
      <from>1</from>
      <to>30</to>
    </loopParams>
    <loopActions>
      <action>
        <cmdType>OSD.ShowText</cmdType>
        <params>
          <param>Waiting for Chrome: {j}/30 seconds</param>
          <param>1000</param>
          <param>1</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
      <action>
        <cmdType>VC.Pause</cmdType>
        <params>
          <param>500</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
      <action>
        <cmdType>Window.Focus</cmdType>
        <params>
          <param>chrome</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
      <action>
        <cmdType>VC.Pause</cmdType>
        <params>
          <param>500</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
    </loopActions>
  </loop>
  <if ifBlockDisabled="False" ifNot="False">
    <ifType>ProcessRunning</ifType>
    <ifParams>chrome&amp;&amp;</ifParams>
    <then>
      <action>
        <cmdType>Window.Focus</cmdType>
        <params>
          <param>chrome</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
      <action>
        <cmdType>VC.Pause</cmdType>
        <params>
          <param>5</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
      <action>
        <cmdType>SendKeys</cmdType>
        <params>
          <param>^l</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
      <action>
        <cmdType>VC.Pause</cmdType>
        <params>
          <param>5</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
      <action>
        <cmdType>DxInput.Type</cmdType>
        <params>
          <param>{1}{RETURN}</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
      <action>
        <cmdType>OSD.ShowText</cmdType>
        <params>
          <param>{1}</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
      <action>
        <cmdType>TTS.Speak</cmdType>
        <params>
          <param>Browsing to {PF.1}</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
    </then>
    <else>
      <action>
        <cmdType>TTS.Speak</cmdType>
        <params>
          <param>I couldn't open Chrome</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
      <action>
        <cmdType>OSD.ShowText</cmdType>
        <params>
          <param>I couldn't open Chrome</param>
          <param>2000</param>
          <param>1</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
    </else>
  </if>
  <phrase>open site</phrase>
  <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">payloads\url.xml</payloadFromXML>
</command>


2
Feature Requests / System.Restart force:<true|false>
« on: August 19, 2015, 12:29:41 PM »
If I am requesting tasks to the computer from my bed and I notice something is wrong with Windows, I could want to perform a system restart before I either stand up and do the actual tasks manually or get to the computer to check what is wrong with it.
The suggestion for the parameter "force" is to allow the user to choose from a forced restart where all the programs will be killed, etc or a normal restart, where windows will ask about programs still running, etc.
For my own need, I would only use the forced restart, but for people who are actually in front of the computer and use VC to facilitate their work, then the non forced restart should be an option. They could have for example a restart macro with a sequence oc actions where they perform the window.close in some programs and after that perform the normal restart. If windows still asks for running programs, then a manual check could be required before restarting.

Hope it is possible and makes sense.
Thanks.

3
I found the Backup Current Configuration today and liked it. However I think the PY folder should be backed up together with all the other things that are already backed up.

Thanks.


4
I know there is the input.sendkeys and the sendkeys and probably other ways, but I'm interested in which one actually works on Windows 8.1 and hopefully on Windows 10.

I tried some combinations with minimal success, so I suppose I'm either doing something wrong or Windows 8.1 does not like keyboard emulation from VC. I'm able to successfully emulate from AutoIT, so I know Windows 8.1 does support emulation somehow (I don't actually know the code behind AutoIT anyway).

This is what I've tried:

Works and sends text to Notepad
Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.2.0.7-->
<command id="669" name="letra, numero {1}" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
  <action>
    <cmdType>InputKeys.Send</cmdType>
    <params>
      <param>{1}</param>
    </params>
    <cmdRepeat>0</cmdRepeat>
  </action>
  <action>
    <cmdType>SendKeys</cmdType>
    <params>
      <param>{1}</param>
    </params>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <phrase>letra,número</phrase>
  <payloadList>a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9</payloadList>
</command>


Does not work and no text appears in Notepad
Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.2.0.7-->
<command id="669" name="letra, numero {1}" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
  <action>
    <cmdType>InputKeys.Send</cmdType>
    <params>
      <param>{1}</param>
    </params>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <action>
    <cmdType>SendKeys</cmdType>
    <params>
      <param>{1}</param>
    </params>
    <cmdRepeat>0</cmdRepeat>
  </action>
  <phrase>letra,número</phrase>
  <payloadList>a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9</payloadList>
</command>

output of the above:
Code: [Select]
18/08/2015 16:56:32 918 guessed text:digitar ?? (Teclado)
18/08/2015 16:56:33 340 guessed text:digitar número ?? (Teclado)
18/08/2015 16:56:33 589 guessed text:digitar letra ?? (Teclado)
18/08/2015 16:56:33 835 guessed text:digitar letra j ?? (Teclado)
18/08/2015 16:56:34 525 Something was recognized
18/08/2015 16:56:34 525 Rulename:  # Semantics: 3
18/08/2015 16:56:34 525 Group: Teclado Speech: digitar letra j
18/08/2015 16:56:34 527 semanticID: 669
18/08/2015 16:56:34 527 kvp: prefix | digitar
18/08/2015 16:56:34 527 kvp: command | 669
18/08/2015 16:56:34 527 kvp: p669d1 | j
18/08/2015 16:56:34 527 used payload key to get command ID = 669 and payload # 1
18/08/2015 16:56:34 535 semanticID: 669
18/08/2015 16:56:34 535 kvp: prefix | digitar
18/08/2015 16:56:34 535 kvp: command | 669
18/08/2015 16:56:34 535 kvp: p669d1 | j
18/08/2015 16:56:34 535 used payload key to get command ID = 669 and payload # 1
18/08/2015 16:56:34 535 alternate:digitar letra j
18/08/2015 16:56:34 549 A prefix is required to execute this command.
18/08/2015 16:56:34 582 [vcevent] VC.Prefix.End

18/08/2015 16:56:34 605 [info] event in group: Low Confidence

18/08/2015 16:56:34 614 doCommand:Prefix Active
18/08/2015 16:56:34 614 [logic] doing IF: (A)==(B)

18/08/2015 16:56:34 628 action repeat set to: 1
18/08/2015 16:56:34 629 Action:  Results.SetVar - prefixactive&&0
18/08/2015 16:56:34 629 [action] Results.SetVar:prefixactive&&0

18/08/2015 16:56:34 644 Action INFO: Successfully Set: prefixactive = 0
18/08/2015 16:56:34 646 [plugin] Sending json request:
18/08/2015 16:56:34 646 [plugin] {"jsonrpc": "2.0", "method": "GUI.ShowNotification", "params":{"title":"digitar letra j (76,3)","message":"(1 letra, numero {j}) "},"id": "0"}
18/08/2015 16:56:34 647 doCommand:letra, numero {1}
18/08/2015 16:56:34 656 action repeat set to: 1
18/08/2015 16:56:34 656 Action:  InputKeys.Send - j
18/08/2015 16:56:34 656 [action] InputKeys.Send:j
_______________________________________________________





Also, for the ALT+TAB combo or their alternates, neither InputKeys.Send or SendKeys work. A weird thing I can notice from the logs is that the TAB key disappears leading me to believe VC macro is not forwarding it correctly.
Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.2.0.7-->
<command id="681" name="alt tab test" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
  <if ifBlockDisabled="False" ifNot="False">
    <ifType>(A)==(B)</ifType>
    <ifParams>{1}&amp;&amp;1</ifParams>
    <then>
      <action>
        <cmdType>InputKeys.Send</cmdType>
        <params>
          <param>{ALT}({TAB})</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
    </then>
    <else />
  </if>
  <if ifBlockDisabled="False" ifNot="False">
    <ifType>(A)==(B)</ifType>
    <ifParams>{1}&amp;&amp;2</ifParams>
    <then>
      <action>
        <cmdType>InputKeys.Send</cmdType>
        <params>
          <param>{CTRL+ALT}({TAB})</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
    </then>
    <else />
  </if>
  <if ifBlockDisabled="False" ifNot="False">
    <ifType>(A)==(B)</ifType>
    <ifParams>{1}&amp;&amp;3</ifParams>
    <then>
      <action>
        <cmdType>InputKeys.Send</cmdType>
        <params>
          <param>{CTRL+ALT+TAB}</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
    </then>
    <else />
  </if>
  <if ifBlockDisabled="False" ifNot="False">
    <ifType>(A)==(B)</ifType>
    <ifParams>{1}&amp;&amp;4</ifParams>
    <then>
      <action>
        <cmdType>SendKeys</cmdType>
        <params>
          <param>^%({TAB})</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
    </then>
    <else />
  </if>
  <if ifBlockDisabled="False" ifNot="False">
    <ifType>(A)==(B)</ifType>
    <ifParams>{1}&amp;&amp;5</ifParams>
    <then>
      <action>
        <cmdType>SendKeys</cmdType>
        <params>
          <param>%{TAB}</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
    </then>
    <else />
  </if>
  <if ifBlockDisabled="False" ifNot="False">
    <ifType>(A)==(B)</ifType>
    <ifParams>{1}&amp;&amp;6</ifParams>
    <then>
      <action>
        <cmdType>InputKeys.Send</cmdType>
        <params>
          <param>{CONTROL+ALT}({TAB}{TAB})</param>
        </params>
        <cmdRepeat>1</cmdRepeat>
      </action>
    </then>
    <else />
  </if>
  <phrase>switch,next</phrase>
  <phrase>window</phrase>
  <phrase>method</phrase>
  <payloadList>1,2,3,4,5,6</payloadList>
</command>


Results of the above, in sequence:

Quote

18/08/2015 17:10:22   142   [info] switch window method 1

18/08/2015 17:10:22   161   emulating recognition on string:switch window method 1
18/08/2015 17:10:22   331   Something was recognized
18/08/2015 17:10:22   331   Rulename:     # Semantics: 2
18/08/2015 17:10:22   331   Group: Programas e Janelas    Speech: switch window method 1
18/08/2015 17:10:22   332   semanticID: 681
18/08/2015 17:10:22   332   kvp: command | 681
18/08/2015 17:10:22   332   kvp: p681d1 | 1
18/08/2015 17:10:22   332   used payload key to get command ID = 681 and payload # 1
18/08/2015 17:10:22   335   semanticID: 681
18/08/2015 17:10:22   335   kvp: command | 681
18/08/2015 17:10:22   335   kvp: p681d1 | 1
18/08/2015 17:10:22   335   used payload key to get command ID = 681 and payload # 1
18/08/2015 17:10:22   335   alternate:switch window method 1
18/08/2015 17:10:22   394   [plugin] Sending json request:
18/08/2015 17:10:22   395   [plugin] {"jsonrpc": "2.0", "method": "GUI.ShowNotification", "params":{"title":"switch window method 1 (100,0)","message":"(1 alt tab test [1]) "},"id": "0"}
18/08/2015 17:10:22   395   doCommand:alt tab test
18/08/2015 17:10:22   395   [logic] doing IF: (A)==(B)

18/08/2015 17:10:22   412   action repeat set to: 1
18/08/2015 17:10:22   413   no match for replacing variables: {ALT}
18/08/2015 17:10:22   413   no match for replacing variables: {ALT}
18/08/2015 17:10:22   413   Action:  InputKeys.Send - {ALT}(   )
18/08/2015 17:10:22   413   [action] InputKeys.Send:{ALT}(   )

18/08/2015 17:10:22   451   Action INFO: keydown: ALT
pressing in sequence:    
textentry[   ]
releasing keys: MENU,

___________________________________________________
18/08/2015 17:12:13   224   received udp command:vc.tellvox&&switch window method 2
18/08/2015 17:12:13   225   action repeat set to: 1
18/08/2015 17:12:13   225   Action:  vc.tellvox - switch window method 2
18/08/2015 17:12:13   225   [action] vc.tellvox:switch window method 2

18/08/2015 17:12:13   240   [info] switch window method 2

18/08/2015 17:12:13   253   emulating recognition on string:switch window method 2
18/08/2015 17:12:13   417   Something was recognized
18/08/2015 17:12:13   417   Rulename:     # Semantics: 2
18/08/2015 17:12:13   417   Group: Programas e Janelas    Speech: switch window method 2
18/08/2015 17:12:13   419   semanticID: 681
18/08/2015 17:12:13   419   kvp: command | 681
18/08/2015 17:12:13   419   kvp: p681d1 | 2
18/08/2015 17:12:13   419   used payload key to get command ID = 681 and payload # 1
18/08/2015 17:12:13   426   semanticID: 681
18/08/2015 17:12:13   427   kvp: command | 681
18/08/2015 17:12:13   427   kvp: p681d1 | 2
18/08/2015 17:12:13   427   used payload key to get command ID = 681 and payload # 1
18/08/2015 17:12:13   427   alternate:switch window method 2
18/08/2015 17:12:13   473   [plugin] Sending json request:
18/08/2015 17:12:13   473   [plugin] {"jsonrpc": "2.0", "method": "GUI.ShowNotification", "params":{"title":"switch window method 2 (100,0)","message":"(1 alt tab test [2]) "},"id": "0"}
18/08/2015 17:12:13   474   doCommand:alt tab test
18/08/2015 17:12:13   474   [logic] doing IF: (A)==(B)

18/08/2015 17:12:13   504   [logic] doing IF: (A)==(B)

18/08/2015 17:12:13   528   action repeat set to: 1
18/08/2015 17:12:13   529   Action:  InputKeys.Send - {CTRL+ALT}(   )
18/08/2015 17:12:13   529   [action] InputKeys.Send:{CTRL+ALT}(   )

18/08/2015 17:12:13   554   Action INFO: keydown: CTRL+ALT
pressing in sequence:    
textentry[   ]
releasing keys: MENU,
18/08/2015 17:12:13   555   [logic] doing IF: (A)==(B)

18/08/2015 17:12:13   568   [logic] doing IF: (A)==(B)

18/08/2015 17:12:13   578   [logic] doing IF: (A)==(B)

___________________________________________________
18/08/2015 17:14:07   629   [info] switch window method 3

18/08/2015 17:14:07   649   emulating recognition on string:switch window method 3
18/08/2015 17:14:07   795   Something was recognized
18/08/2015 17:14:07   795   Rulename:     # Semantics: 2
18/08/2015 17:14:07   795   Group: Programas e Janelas    Speech: switch window method 3
18/08/2015 17:14:07   797   semanticID: 681
18/08/2015 17:14:07   797   kvp: command | 681
18/08/2015 17:14:07   797   kvp: p681d1 | 3
18/08/2015 17:14:07   797   used payload key to get command ID = 681 and payload # 1
18/08/2015 17:14:07   802   semanticID: 681
18/08/2015 17:14:07   802   kvp: command | 681
18/08/2015 17:14:07   802   kvp: p681d1 | 3
18/08/2015 17:14:07   802   used payload key to get command ID = 681 and payload # 1
18/08/2015 17:14:07   802   alternate:switch window method 3
18/08/2015 17:14:07   852   [plugin] Sending json request:
18/08/2015 17:14:07   853   [plugin] {"jsonrpc": "2.0", "method": "GUI.ShowNotification", "params":{"title":"switch window method 3 (100,0)","message":"(1 alt tab test [3]) "},"id": "0"}
18/08/2015 17:14:07   854   doCommand:alt tab test
18/08/2015 17:14:07   855   [logic] doing IF: (A)==(B)

18/08/2015 17:14:07   872   [logic] doing IF: (A)==(B)

18/08/2015 17:14:07   887   [logic] doing IF: (A)==(B)

18/08/2015 17:14:07   909   action repeat set to: 1
18/08/2015 17:14:07   910   Action:  InputKeys.Send - {CTRL+ALT+TAB}
18/08/2015 17:14:07   910   [action] InputKeys.Send:{CTRL+ALT+TAB}

18/08/2015 17:14:07   928   Action INFO: keydown: CTRL+ALT+TAB
pressing in sequence:

releasing keys: TAB,MENU,
_____________________________________________________
18/08/2015 17:16:00   603   [info] switch window method 4

18/08/2015 17:16:00   616   emulating recognition on string:switch window method 4
18/08/2015 17:16:00   742   Something was recognized
18/08/2015 17:16:00   742   Rulename:     # Semantics: 2
18/08/2015 17:16:00   742   Group: Programas e Janelas    Speech: switch window method 4
18/08/2015 17:16:00   745   semanticID: 681
18/08/2015 17:16:00   745   kvp: command | 681
18/08/2015 17:16:00   745   kvp: p681d1 | 4
18/08/2015 17:16:00   745   used payload key to get command ID = 681 and payload # 1
18/08/2015 17:16:00   749   semanticID: 681
18/08/2015 17:16:00   749   kvp: command | 681
18/08/2015 17:16:00   749   kvp: p681d1 | 4
18/08/2015 17:16:00   749   used payload key to get command ID = 681 and payload # 1
18/08/2015 17:16:00   749   alternate:switch window method 4
18/08/2015 17:16:00   806   [plugin] Sending json request:
18/08/2015 17:16:00   806   [plugin] {"jsonrpc": "2.0", "method": "GUI.ShowNotification", "params":{"title":"switch window method 4 (100,0)","message":"(1 alt tab test [4]) "},"id": "0"}
18/08/2015 17:16:00   808   doCommand:alt tab test
18/08/2015 17:16:00   808   [logic] doing IF: (A)==(B)

18/08/2015 17:16:00   825   [logic] doing IF: (A)==(B)

18/08/2015 17:16:00   838   [logic] doing IF: (A)==(B)

18/08/2015 17:16:00   850   [logic] doing IF: (A)==(B)

18/08/2015 17:16:00   864   action repeat set to: 1
18/08/2015 17:16:00   865   Action:  SendKeys - ^%(   )
18/08/2015 17:16:00   865   [action] SendKeys:^%(   )

18/08/2015 17:16:00   960   Action INFO:
18/08/2015 17:16:00   960   [logic] doing IF: (A)==(B)
__________________________________________________________
18/08/2015 17:19:35   45   [info] switch window method 5

18/08/2015 17:19:35   57   emulating recognition on string:switch window method 5
18/08/2015 17:19:35   192   Something was recognized
18/08/2015 17:19:35   192   Rulename:     # Semantics: 2
18/08/2015 17:19:35   192   Group: Programas e Janelas    Speech: switch window method 5
18/08/2015 17:19:35   194   semanticID: 681
18/08/2015 17:19:35   194   kvp: command | 681
18/08/2015 17:19:35   194   kvp: p681d1 | 5
18/08/2015 17:19:35   194   used payload key to get command ID = 681 and payload # 1
18/08/2015 17:19:35   197   semanticID: 681
18/08/2015 17:19:35   197   kvp: command | 681
18/08/2015 17:19:35   197   kvp: p681d1 | 5
18/08/2015 17:19:35   197   used payload key to get command ID = 681 and payload # 1
18/08/2015 17:19:35   197   alternate:switch window method 5
18/08/2015 17:19:35   248   doCommand:alt tab test
18/08/2015 17:19:35   248   [logic] doing IF: (A)==(B)

18/08/2015 17:19:35   249   [plugin] Sending json request:
18/08/2015 17:19:35   249   [plugin] {"jsonrpc": "2.0", "method": "GUI.ShowNotification", "params":{"title":"switch window method 5 (100,0)","message":"(1 alt tab test [5]) "},"id": "0"}
18/08/2015 17:19:35   274   [logic] doing IF: (A)==(B)

18/08/2015 17:19:35   295   [logic] doing IF: (A)==(B)

18/08/2015 17:19:35   310   [logic] doing IF: (A)==(B)

18/08/2015 17:19:35   324   [logic] doing IF: (A)==(B)

18/08/2015 17:19:35   334   action repeat set to: 1
18/08/2015 17:19:35   335   Action:  SendKeys - %   
18/08/2015 17:19:35   335   [action] SendKeys:%   

18/08/2015 17:19:35   427   Action INFO:

________________________________________________________

18/08/2015 17:25:21   532   [info] switch window method 6

18/08/2015 17:25:21   551   emulating recognition on string:switch window method 6
18/08/2015 17:25:21   712   Something was recognized
18/08/2015 17:25:21   712   Rulename:     # Semantics: 2
18/08/2015 17:25:21   712   Group: Programas e Janelas    Speech: switch window method 6
18/08/2015 17:25:21   714   semanticID: 681
18/08/2015 17:25:21   714   kvp: command | 681
18/08/2015 17:25:21   714   kvp: p681d1 | 6
18/08/2015 17:25:21   714   used payload key to get command ID = 681 and payload # 1
18/08/2015 17:25:21   720   semanticID: 681
18/08/2015 17:25:21   720   kvp: command | 681
18/08/2015 17:25:21   720   kvp: p681d1 | 6
18/08/2015 17:25:21   721   used payload key to get command ID = 681 and payload # 1
18/08/2015 17:25:21   721   alternate:switch window method 6
18/08/2015 17:25:21   776   [plugin] Sending json request:
18/08/2015 17:25:21   776   [plugin] {"jsonrpc": "2.0", "method": "GUI.ShowNotification", "params":{"title":"switch window method 6 (100,0)","message":"(1 alt tab test [6]) "},"id": "0"}
18/08/2015 17:25:21   777   doCommand:alt tab test
18/08/2015 17:25:21   777   [logic] doing IF: (A)==(B)

18/08/2015 17:25:21   807   [logic] doing IF: (A)==(B)

18/08/2015 17:25:21   825   [logic] doing IF: (A)==(B)

18/08/2015 17:25:21   839   [logic] doing IF: (A)==(B)

18/08/2015 17:25:21   853   [logic] doing IF: (A)==(B)

18/08/2015 17:25:21   872   [logic] doing IF: (A)==(B)

18/08/2015 17:25:21   890   action repeat set to: 1
18/08/2015 17:25:21   891   Action:  InputKeys.Send - {CONTROL+ALT}(      )
18/08/2015 17:25:21   891   [action] InputKeys.Send:{CONTROL+ALT}(      )

18/08/2015 17:25:21   921   Action INFO: keydown: CONTROL+ALT
pressing in sequence:       
textentry[   ]textentry[   ]
releasing keys: MENU,CONTROL,


5
either via PC mic or via Voxwav? I mostly use Voxwav anyway and I'm probably going to prefer using it.

In the Advanced Options, there is the options for sox pre-processing, but as per what I understand, it applies only to the directory of watched wav files.
My house is always noisy with kids and televisions, so VC works great when the house is quiet, but does not work fine when the house is in its most common state of big mess  :biglaugh

I know I can't magically teach the computer to ignore the background noise and hear only my voice, but perhaps some pre-processing of the audio could help. I'm thinking about some frequency filtering, some noise removal, and perhaps some other processing that helps the voice to be distinguished from the other noise by reducing it and hence making the voice more easily recognizable.

For example, my kid can't be recognized, no matter how he talks. I think it's because his voice is a little bit too acute, not sure.. So I would like to experiment with different effects applied to wav files.
Yes, I know it will add a delay for the processing, but I think it's more important to have the computer hearing me correctly 99% of the time than having a quick non recognized command.

The TCPmic has an option to save wav files, but then I wonder I can't use this option in conjunction with the Watched folder setting from the Advanced Options. I guess it would fire two concurrent interpretations of the commands sent via Voxwav, resulting in a big mess.


Thanks.

6
I've some python scripts running on my VC that are called from startup events and stay there and these scripts generate some output using the print function, which normally prints text to Python's console and in this case it prints te text to somewhere else (a variable perhaps?) which is then displayed in the log field of the Python plugin (txtConsole).
Well, since my py script is currently generating lots of output, it seems this log area is becoming weighty for VC and the overall VC performance is significantly decreased after some time of operation.

I let it running yesterday before I went to bed, and this morning I had to clear that log area (by using the clear log button) at least 5 times sequentially. I pressed the button once, then the log area immediately became full again, and then I pressed the clear log button again. Did that 5 times until the log area finally became empty and then the VC returned to normal performance.

So it would be great if the oldest log data could be dynamically discarded before it affects the performance. Of course, in the future I'll also disable many of these prints in the code because they are there for debugging purposes only. But anyway, I guess this slow down in performance could be avoided if I can manage to clear that log either by code or automatically.

Is it possible?

Btw, I love that log area! It is a must have for debugging python scripts.




Thanks

7
I'm finally looking for an Android watch and for my surprise, many of the available watches use a proprietary OS instead of standard android or android ware, and they allow for integration with android phones via bluetooth only, meaning they can get audio transmitted from/to the phone via bluetooth just like a bluetooth headset would, but they can't actually have android apps installed on them, neither have wifi, etc.

Then I've found this watch below which seems preety good for the cost, and it comes with android 4.4, has wifi, etc.



Three questions:

1-Does anybody has ever used this kind on watch?
2-Will Voxwav pro work on this (at least with minimal functionality)?
3-If you have a smart watch (the ones that are not android), how do you use it with VoxCommando?

Thanks!

8
What's the weather for tomorrow in Orlando?
What's the weather in Las Vegas on Thursday?
What's the weather?
What's the weather for tomorrow?
What's the weather in Orlando?
What's the weather for today in Santos?

The phrases and payloads were originally written in portuguese. But I have quickly translated them to post here. And in this newer and significantly better version I'm not going to translate the displaying text since you can easily find the strings to be translated in the python script and then use Google translator to translate them.
The advantage of this xml against the other posted xmls (that I could find at least), is that this one can have both the location and the day as optional payload xml's.
So I can say any of the above phrases with a single command and it will work perfectly.

You must add your locations to the file weather_locations.xml so you can use it. This file contains a the actual weather station respective to the place you are asking the weather for. Please pay attention to weather stations that you will have to use a format like pws:ISANTOS10 or others that don't have the pws: like this KORL. Look in the respective payload xml (weather_locations.xml) for examples.
Visit this URL for getting your respective weather station:
http://www.wunderground.com

In the latest version I've transferred all the logic to python because it is easier to me and probably more flexible that being limited only to VC native macros.

The latest version will not change your default location (as set in the script, variable defaultlocation on line 24) if you don't request it. Once you change a location, all the further requests for the forecast will be made for this same location, unless you change the location again by saying another specific location in your phrase. The other condition for the code to execute a change action is if there is no data available from the plugin, hence a new download of information would be required anyway.

When you don't say a location at all, the script will get the location name from the plugin variables using the variable C.observation_location. So you never miss what location is actually being displayed.
The script will always tell the actual weather station where the weather data came from so you can always make sure the weather being displayed is the one that you really wanted to know.

The day is also now show in both weekday and day of the month so you never misunderstand what day is actually being displayed.

Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.1.5.2-->
<commandGroup open="True" name="Previsão do tempo-EN" enabled="True" prefix="" priority="0" requiredProcess="" description="">
  <command id="753" name="Qual a previsão do tempo para &lt;dia&gt; em &lt;local&gt; (python)" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>TTS.Speak</cmdType>
      <params>
        <param>I'm getting the weather for ya.|Ok, let me get it|I'll get it quickly for you.</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>PY.ExecString</cmdType>
      <params>
        <param>weather_forecast("{1}","{PF.1}","{2}","{PF.2}")</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <phrase>what's the weather,how is the weather</phrase>
    <phrase optional="true">in,on,for,at</phrase>
    <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="True">payloads\weather_locations.xml</payloadFromXML>
    <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="True">payloads\weather_day.xml</payloadFromXML>
    <phrase optional="true">in,on,for,at</phrase>
    <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="True">payloads\weather_day.xml</payloadFromXML>
    <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="True">payloads\weather_locations.xml</payloadFromXML>
  </command>
  <command id="352" name="Query current Wunder Settings" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>WUnder.GetCustom</cmdType>
      <params>
        <param>{C.observation_location.full}</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>OSD.ShowText</cmdType>
      <params>
        <param>{LastResult}</param>
        <param>10000</param>
        <param>1</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>RegExTool.Open</cmdType>
      <params>
        <param>True</param>
      </params>
      <cmdRepeat>0</cmdRepeat>
    </action>
    <action>
      <cmdType>Results.RegEx</cmdType>
      <params>
        <param>"full":\s"(.*?)",</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>OSD.AddText</cmdType>
      <params>
        <param>{Match.1}</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>WUnder.GetCustom</cmdType>
      <params>
        <param>{C.station_id}</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>OSD.AddText</cmdType>
      <params>
        <param>{LastResult}</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <phrase>Query current weather settings</phrase>
  </command>
  <command id="301" name="load python script" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>PY.ExecFile</cmdType>
      <params>
        <param>PY\weather_forecast_Marcus.py</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <event>VC.Loaded</event>
  </command>
</commandGroup>

This is the final version of the script. Please report any bugs so I can fix them.

9
This is not really a xml, but it is a cool application I've made for the integration with my desktop theme. Obviously you can use it as you like it.

The program has 2 purposes:
1-Show the same text as shown in main VC window in real time as a floating transparent text over your desktop.
2-Automatically hide the TTS Talking Head and the text that I mentioned above every time there is any maximized window in the foreground of your screen. Once there is no maximized window anymore, the overlays are displayed again.

The center greenish circle is a modified TTS Talking Head as explained and show in this other thread.
I can't make a video right now, The video is the 3rd post, and below are the screenshots.

I've attached the program itself. It runs as a tray icon and can be started at VC startup if you want.
The program includes the font needed for it to run and will try to install those fonts at startup. So, you will probably need to run the program as an administrator so the fonts are installed. Otherwise it will run with a default font.
To exit the program, or to change the hide/show behavior, just use the tray icon.

Unzip the program to your VC installation folder and then use the following xml for calling the program automatically on startup. Actually it will wait 10 seconds before calling the program. And differently from the video, it will not call the program again if it is already running.
Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.1.5.2-->
<commandGroup open="True" name="ShowSpoken" enabled="True" prefix="" priority="0" requiredProcess="" description="">
  <command id="657" name="Restart program on VC startup" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>VC.SetEventTimer</cmdType>
      <params>
        <param>10</param>
        <param>StartShowSpoken</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <event>VC.Loaded</event>
  </command>
  <command id="631" name="Start ShowSpoken" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <if ifBlockDisabled="False" ifNot="True">
      <ifType>ProcessRunning</ifType>
      <ifParams>VC_show_spoken&amp;&amp;</ifParams>
      <then>
        <action>
          <cmdType>Launch.RawParam</cmdType>
          <params>
            <param>{Path.VC}\VC_show_spoken.exe</param>
            <param>/blendcolor 0F0F0F /textcolor 3daabe</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
      </then>
      <else />
    </if>
    <event>StartShowSpoken</event>
  </command>
</commandGroup>


The program runs completely offline. There are no viruses, spyware, ads, etc.
Completely free with absolutely no cost, but you can pay me a beer if you want.

Next version will allow for changing the text color and position through command line parameters. For now these are fixed values.
v 0.2 does have a help and the optional color parameters. More details in the help.
Version 0.3 will allow allows for choosing the position and size of the text.

Please report any bugs so I can improve the program.

10
This is for having VC to execute commands when you can't get it to understand a command phrase. Kind of creates a second level of confidence, but with confirmation required.
Pre-reqs:
1-Python plugin enabled
2-Put this function inside an existing python script that you may be already using. If you still don't have any python script being loaded on the startup of VC, then you will need to create a new python script and set it to start with VC. This is beyond the scope of this thread.
3-Enable prefix mode. This is actually not 100% needed, but since I'm using prefix mode, my command has been designed to work on prefix mode. If you don't want to use prefix mode, please edit the IF logic on the command "Low confidence - 1st step".

More about your need for this (or not):
There are many times I say a command and it is not executed because the confidence was too low. This usually happens because of background noise, like people talking, kids playing or high volume in the TV.
So I built this command so I can make VC to execute commands even if the confidence is lower than the one that you set in Options.
If you say the same command phrase two times (you can adjust how many times) and the confidence in these two times are lower than the confidence you set in VC options, the script will tell you that it is guessing you are requesting such command and then ask for a confirmation.
Both the minimum confidence and the number of repeated times can be set in the script (variables confidence_threshold and repeated_times). These variables must be adjusted as to avoid false positives.
If you confirm the almost understood command shall be executed, then it is executed.

Not sure this is the best way to do it, but it's the way I found to be better.


python script (place in a python script that you will call at VC startup or create a new one that will be called at startup)
Code: [Select]
#below is part of main program (not a function), but has been put here to make it easier to understand what it refers to.
#it is run only at startup.
global phrase_previous_almost
phrase_previous_almost=""
global repeated_times
repeated_times=0

def almost_understood(phrase_almost_fnct="", confidence_pct_fnct=0):
    global repeated_times
    global repeated_threshold
    global phrase_almost
    global phrase_previous_almost
    phrase_almost=phrase_almost_fnct
    global confidence_pct
    confidence_threshold=30 #minimum confidence required so the spoken phrase is not ignored
    repeated_threshold=1    #minimum times the same phrase should be repeated and almost understood so VC asks if the command should be executed.
    confidence_pct=num(confidence_pct_fnct)
    print "repeated_times"
    print repeated_times
    print "phrase_almost"
    print phrase_almost
    print "phrase_previous_almost"
    print phrase_previous_almost
    if confidence_pct>=confidence_threshold:
        print "confidence_pct>=confidence_threshold"
        if phrase_previous_almost==phrase_almost:
            repeated_times=repeated_times+1
            print "phrase_previous_almost==phrase_almost"
            print "repeated_times"
            print repeated_times
            if repeated_times>=repeated_threshold:
                print "repeated_times>=repeated_threshold will return 1"
                #here it means we said have repeated the same phrase 2 times with a confidence lower than required confidence,
                #but higher than our minimum tolerance threshold.
                #Then we will return a good value.
                repeated_times=0
                phrase_previous_almost=""
                return 1
        else:
            print "phrase_previous_almost!=phrase_almost will reset counter and return 0"
            repeated_times=0
            phrase_previous_almost=phrase_almost
    else:
        print "confidence_pct<confidence_threshold will reset the counter and return 0"
        repeated_times=0
        phrase_previous_almost=""
    print "repeated_times"
    print repeated_times
    print "phrase_almost"
    print phrase_almost
    print "phrase_previous_almost"
    print phrase_previous_almost
    return 0
   



def num(s):
    try:
        return int(s)
    except ValueError:
        try:
            return float(s)
        except ValueError:
            return float(s.replace(",","."))


These are the required command groups in VC.
Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.1.5.2-->
<commandGroup open="True" name="Low Confidence" enabled="True" prefix="" priority="0" requiredProcess="" description="">
  <command id="661" name="Prefix Active" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <if ifBlockDisabled="False" ifNot="False">
      <ifType>(A)==(B)</ifType>
      <ifParams>{LastEvent}&amp;&amp;VC.Prefix.End</ifParams>
      <then>
        <action>
          <cmdType>Results.SetVar</cmdType>
          <params>
            <param>prefixactive</param>
            <param>0</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
      </then>
      <else>
        <action>
          <cmdType>Results.SetVar</cmdType>
          <params>
            <param>prefixactive</param>
            <param>1</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
      </else>
    </if>
    <event>VC.Prefix.End</event>
    <event>VC.Prefix.Start</event>
  </command>
  <command id="769" name="Low confidence - 1st step" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <if ifBlockDisabled="False" ifNot="False">
      <ifType>(A)==(B)</ifType>
      <ifParams>{Var.prefixactive}&amp;&amp;1</ifParams>
      <then>
        <action>
          <cmdType>PY.ExecString</cmdType>
          <params>
            <param>result=almost_understood("{1}","{2}")</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
      </then>
      <else />
    </if>
    <if ifBlockDisabled="False" ifNot="False">
      <ifType>(A)==(B)</ifType>
      <ifParams>{LastResult}&amp;&amp;1</ifParams>
      <then>
        <action>
          <cmdType>VC.TriggerEvent</cmdType>
          <params>
            <param>2nd.step.VC.Reco.TooLow</param>
            <param>{1}</param>
            <param>{2}</param>
          </params>
          <cmdRepeat>1</cmdRepeat>
        </action>
      </then>
      <else />
    </if>
    <event>VC.Reco.TooLow</event>
  </command>
  <command id="752" name="Low confidence - 2nd step" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>TTS.SpeakSync</cmdType>
      <params>
        <param>I think I heard you asking this: {1}. Can I go ahead? You can say: yes please</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>Results.SetVar</cmdType>
      <params>
        <param>lowconfidencecmd</param>
        <param>{1}</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>Group.Disable</cmdType>
      <params>
        <param>Low Confidence</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>Group.Enable</cmdType>
      <params>
        <param>Confirmar low confidence</param>
        <param>30</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>VC.TriggerEvent</cmdType>
      <params>
        <param>EnableCustomConfirmation</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>VC.TellVox</cmdType>
      <params>
        <param>Confirma o comando</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <event>2nd.step.VC.Reco.TooLow</event>
  </command>
</commandGroup>

Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.1.5.2-->
<commandGroup open="True" name="Confirmar low confidence" enabled="False" prefix="" priority="0" requiredProcess="" description="">
  <command id="685" name="Confirma o comando?" enabled="true" alwaysOn="False" confirm="True" requiredConfidence="60" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>VC.TellVox</cmdType>
      <params>
        <param>{Var.lowconfidencecmd}</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>Group.Disable</cmdType>
      <params>
        <param>Confirmar low confidence</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>Group.Enable</cmdType>
      <params>
        <param>Low Confidence</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <phrase>Confirma o comando</phrase>
  </command>
  <command id="612" name="Reenable Low Confidence" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>Group.Enable</cmdType>
      <params>
        <param>Low Confidence</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>Group.Disable</cmdType>
      <params>
        <param>Confirmar low confidence</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <event>*.Confirma o comando?</event>
  </command>
</commandGroup>

Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.1.5.2-->
<commandGroup open="True" name="Custom confirmation" enabled="False" prefix="" priority="0" requiredProcess="" description="">
  <command id="712" name="comando de confirmação" enabled="true" alwaysOn="True" confirm="False" requiredConfidence="80" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>VC.ConfirmYes</cmdType>
      <params />
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>OSD.AddText</cmdType>
      <params>
        <param>&gt;Confirmado!</param>
      </params>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <phrase>yes please</phrase>
  </command>
</commandGroup>


Last edit to attach the final version as per conversation below. It's working now as of today July/9/2015.

11
I have one command that is triggered by the event xxx. This command tell the use the command was almost understood as bla bla, and then triggers a custom event "Confirm.low.confidence".


Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.1.5.2-->
<command id="718" name="Low confidence" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
  <action>
    <cmdType>Results.SetVar</cmdType>
    <params>
      <param>choices</param>
      <param>Eu acho que entendi você pedir:</param>
    </params>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <action>
    <cmdType>PY.ExecString</cmdType>
    <params>
      <param>append_random_response("{Var.choices}")</param>
    </params>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <action>
    <cmdType>PY.ExecString</cmdType>
    <params>
      <param>append_random_response("{1}")</param>
    </params>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <action>
    <cmdType>Results.SetVar</cmdType>
    <params>
      <param>choices2</param>
      <param>Você confirma?</param>
    </params>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <action>
    <cmdType>PY.ExecString</cmdType>
    <params>
      <param>append_random_response("{Var.choices2}")</param>
    </params>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <action>
    <cmdType>PY.ExecString</cmdType>
    <params>
      <param>say_appended_response()</param>
    </params>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <action>
    <cmdType>VC.TriggerEvent</cmdType>
    <params>
      <param>Confirm.low.confidence</param>
      <param>{1}</param>
    </params>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <event>VC.Reco.TooLow</event>
</command>

 Then, I have another command that has the sole purpose of allowing the user to respond if he wants this previously almost understood command to be executed.
Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.1.5.2-->
<command id="622" name="Confirma a execução?" enabled="true" alwaysOn="False" confirm="True" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
  <action>
    <cmdType>VC.TellVox</cmdType>
    <params>
      <param>{1}</param>
    </params>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <event>Confirm.low.confidence</event>
</command>

The problem I'm having is that this second command is not obeying to the "Must confirm" checkbox when it is triggered by the event "Confirm.low.confidence"

As a test only, I have added a phrase to the second command and when I say that phrase, the "must confirm" setting does work with a confirmation OSD being showed (according to the respective setting in the options).

Shouldn't the "must confirm" setting work even if a command is triggered by an event?

Thanks!


12
As I'm using dynamic rebuilds of payload xmls and hence triggering some group rebuilds, it would be nice if VC could generate an event for each of these processing tasks the may slow down VC for a while.
The purpose is to create a command  with a notification for letting the user know something is being processed.

Thanks!


13
I'm building my groups in a way I can ask for help about some important commands. It consists of a payload xml where I will use the phrase to value config, and where the phrase is the actual topic I will ask for help and the value is the actual group name.
Because of some groups that are automatically generated by my Py Controller for My Sensors, the name of the groups are not always named with a name that a user would ask help for.

For displaying the help on full screen and as quick as possible, I'm using Robo Browser for loading the help file.

It works quite fine, but there are two things that I would like to enhance:
1-The help file is generated with cropped text. Did not try to figure out what is the logic behind the crop size, but in some cases the user could need to see the entire list.
2- I would like to hear VC saying the only the first phrase of each command that has been displayed in the help html.

Are there possible?

Thanks!


14
The purpose would be to give the computer a name.

I could tell for example:
Maria, now your name will be Stella.
(Maria being the current prefix and Stella being the new one to be saved).
(This new name should allow for alternates with a specific action like vc.prefixAdd)

Then VC would respond:
Wait some minutes while I rebuild my systems with this new name.
(in this meantime, VC would need to rebuild stuff, clear cache or something)

Then I could ask:
what is your name?

And it would tell me:
My master told me my name is Stella.
(If there are alternates, I could get a random name from the list of alternates vc.prefixGetName && random, or a specific one vc.prefixGetName && n)

Obviously I would need to have a group to put this questions in,  which allows for always listening for commands without a prefix (is it even possible?), or alternatively, I would need to have a group that has a more generic prefix, like "computer" and/or "machine" for example.

Thanks!

15
Python Scripting / Can I kill a previous called script (PY.ExecFile)
« on: June 26, 2015, 05:25:24 PM »
I'm developing some complex code using Python. This python script is called with PY.ExecFile on VC startup so I can use the functions further with PY.ExecString.
This is a wonderful feature IMO which adds unlimited power to the already powerful VC.

Sometimes I would like to kill the script so I can test a modification or a correction that I just made. Since it stays in memory, the only way I know to do this is to perform a full restart of VC.

I tried using the reinitialize python command from the Python editor, but it seems the threads which have been started by the script still remain running.
Is this correct or I'm doing something wrong?
Is there a quicker way to force killing or restarting a specific python scripts?

Sorry if I'm being stupid somehow... Thank you.

Pages: [1] 2