VoxCommando

Help and Support (Using VoxCommando) => Other Plugins => Topic started by: jitterjames on October 02, 2013, 02:21:30 PM

Title: Skype Plugin for VoxCommando
Post by: jitterjames on October 02, 2013, 02:21:30 PM
Here is a tutorial to get you started using VoxCommando to interact with Skype.

Title: Re: Skype Plugin for VoxCommando
Post by: jitterjames on October 02, 2013, 03:10:11 PM
And here is the XML for the Skype group that I created in the video:

Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<commandGroup open="True" name="Skype" enabled="True" prefix="" priority="0" requiredProcess="" description="">
  <command id="36" name="announce chat via tts" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>TTS.Speak</cmdType>
      <cmdString>{2} says, {4}</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>OSD.ShowText</cmdType>
      <cmdString>{2} says, {4}</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <event>Skype.Chat.cmsReceived</event>
  </command>
  <command id="59" name="announce incoming call" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>TTS.Speak</cmdType>
      <cmdString>{1} is calling you on skype</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <event>Skype.clsRinging.cltIncomingP2P</event>
  </command>
  <command id="40" name="call contact {1}" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>Skype.CallContact</cmdType>
      <cmdString>{1}</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>VC.Standby</cmdType>
      <cmdString />
      <cmdRepeat>1</cmdRepeat>
    </action>
    <phrase>call contact</phrase>
    <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">payloads\payloadSkype.xml</payloadFromXML>
  </command>
  <command id="60" name="accept incoming call" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>Skype.Answer</cmdType>
      <cmdString />
      <cmdRepeat>1</cmdRepeat>
    </action>
    <phrase>accept incoming call</phrase>
  </command>
</commandGroup>
Title: Re: Skype Plugin for VoxCommando
Post by: miniburk on October 02, 2013, 05:07:49 PM
thank you! got it to working directly after this information!
Title: Re: Skype Plugin for VoxCommando
Post by: nime5ter on October 02, 2013, 05:17:42 PM
As long as we're on the subject of creative uses of Skype ...

Various people have asked about controlling home automation remotely, when not at home. This is pretty easy to do if you have the Skype plugin activated.

Just as a basic example (extremely unsophisticated!), if you know your voice commands well you can use the following** to issue commands via Skype:

Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<command id="468" name="Do it" 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;jitterjames</ifParams>
    <then>
      <action>
        <cmdType>VC.TellVox</cmdType>
        <cmdString>{4}</cmdString>
        <cmdRepeat>1</cmdRepeat>
      </action>
    </then>
    <else />
  </if>
  <event>Skype.Chat.cmsReceived</event>
</command>

** The above expects a Skype message from the contact "jitterjames". Obviously you'd want to change that to whatever is appropriate (unless, of course, you *want* James to haunt your home.  :biglaugh)
Title: Re: Skype Plugin for VoxCommando
Post by: jitterjames on October 03, 2013, 08:37:06 AM
You could extend this to ask questions about what was going on at home.

Some kind of status report command that would send a Skype message back to you with info about your lights, motion sensors etc...

Could be a fun challenge!
Title: Re: Skype Plugin for VoxCommando
Post by: SunDoWneR on October 14, 2013, 01:44:42 PM
A "Who is online" and "X came online" / "X went offline" Event/Trigger would also be nice.

Cheers, Sunny
Title: Re: Skype Plugin for VoxCommando
Post by: jitterjames on October 14, 2013, 03:08:02 PM
Given the following announcement, I'm not sure it is worth the effort...

http://gigaom.com/2013/07/13/skype-says-it-will-kill-desktop-api-by-end-of-2013/
Title: Re: Skype Plugin for VoxCommando
Post by: SunDoWneR on October 14, 2013, 05:52:37 PM
Yeah, i've red that to.
What about the Skype URI's? http://developer.skype.com/skype-uris
Could this be used instead?
Title: Re: Skype Plugin for VoxCommando
Post by: nime5ter on October 14, 2013, 05:58:47 PM
So far it doesn't look like their URIs will support anything to do with tracking who's online or offline:

Quote
Currently supported Skype URIs include:
- switching focus to the Skype client.
- initiating audio calls to other Skype users, phones, or mobiles—both one-to-one dialogs and multi-party conferences.
- initiating video calls to another Skype user.
- sending instant messages to an individual or establishing a group multi-chat.
Title: Re: Skype Plugin for VoxCommando
Post by: jitterjames on October 14, 2013, 06:03:37 PM
I think Microsoft is trying to force us to use their crappy windows 8 "app" version of skype so are pulling the plug on all the good stuff we can do in the desktop version.

I think that the plugin will continue to work as long as you don't "upgrade" *cough* skype past the current version.

Eventually they will probably make it so that you can't even connect with an older version but until then we will probably be OK.
Title: Re: Skype Plugin for VoxCommando
Post by: jitterjames on October 21, 2013, 05:47:17 PM
For what it's worth, I have updated the Skype plugin in version 1.1.6.6

http://voxcommando.com/forum/index.php?topic=1228.0

Your new events are there and I added some new actions to get a list of users (all, or just those that are online etc) and also to query for user information.

Remember, after updating VC, you'll need to tell Skype again to allow access from VC.

Hopefully this will continue to work as long as you keep your current version of Skype.  Personally, I don't think they have done anything to "improve" Skype in the last couple of years anyway and I doubt they will do anything in the near future other than find new ways to increase profit while consuming more of your system resources and making it even harder to close.  :bonk

Here is are some sample commands using the new actions:
Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<commandGroup open="True" name="skype test" enabled="True" prefix="" priority="0" requiredProcess="" description="">
  <command id="1135" name="getusers" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>Skype.GetUsers</cmdType>
      <cmdString>Online</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>OSD.SetFontSize</cmdType>
      <cmdString>14</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>Results.MatchConcat</cmdType>
      <cmdString>{CR}</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>OSD.ShowText</cmdType>
      <cmdString>{#M} Users are online:{CR}{LastResult}</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <phrase>get skype users</phrase>
  </command>
  <command id="1137" name="getuser info" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
    <action>
      <cmdType>Skype.GetUsers</cmdType>
      <cmdString>Online</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>Skype.GetUserInfo</cmdType>
      <cmdString>{Match.Rnd}&amp;&amp;fullname</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <action>
      <cmdType>OSD.ShowText</cmdType>
      <cmdString>{LastResult}</cmdString>
      <cmdRepeat>1</cmdRepeat>
    </action>
    <phrase>test get user info</phrase>
  </command>
</commandGroup>
Title: Re: Skype Plugin for VoxCommando
Post by: jb5349 on November 18, 2013, 01:47:55 PM
Just wondering if the Skype plugin is going to work after December 2013? I noticed that Skype informed me today that it will no longer work or some parts of it will no longer work. Is there any plan to work around this change to the Skype API so that it can still be used with VC? I know it should still work with Virtual Audio Cable but I like the fact it can interact with messages and respond to incoming calls.

Thanks!
Title: Re: Skype Plugin for VoxCommando
Post by: jitterjames on November 18, 2013, 02:26:15 PM
The solution to this problem may be as simple as "don't update skype", but otherwise, no, they are removing support for most of the functionality and not providing alternatives.  There will be some limited support for simple things like "placing a call" and maybe for answering etc. You can check out their website youself to see what will be possible.

http://developer.skype.com/skype-uris
Title: Re: Skype Plugin for VoxCommando
Post by: Indy on March 01, 2014, 08:43:37 PM
Just wanted to report that it appears to still work with the latest version 6.14.0.104.  The only thing I see missing from the plugin is to be able to initiate a video call.  I understand I can make a normal call and then click video with my mouse, but I would love to be able to initiate a video call all with voice.  I use this completely in my family room on my TV so ideally everything is either done with my remote control or via voice.  Is that something that could be added assuming the Skype API allows it.

I also noticed that when I gave vox access to skype my camera light stays on as long as Vox is open.  If I close Vox, my webcam light also finally goes off.  Has the big brother affect which I don't like.  Is this expected behavior and if so is it possible to modify it?

Edit

Also while testing noticed the call answer was without video as well which again required me to find my mouse to enable it.  Would love to have both options available if possible.
Title: Re: Skype Plugin for VoxCommando
Post by: nime5ter on March 02, 2014, 08:20:14 AM
That's freaky about the big brother camera. I haven't been able to duplicate that here and we have no real thoughts about root causes I'm afraid.

With regard to placing a video call, if you don't mind enabling the RoboBrowser plugin (or have it enabled already), you can try the following command:

Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<command id="267" name="place a video call to {1}" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
  <action>
    <cmdType>RoboB.Select</cmdType>
    <cmdString>skype</cmdString>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <action>
    <cmdType>RoboB.Navigate</cmdType>
    <cmdString>skype:{1}?call&amp;video=true</cmdString>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <action>
    <cmdType>RoboB.Dispose</cmdType>
    <cmdString />
    <cmdRepeat>1</cmdRepeat>
  </action>
  <phrase>place a, skype</phrase>
  <phrase>video call, vid call</phrase>
  <phrase>to</phrase>
  <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">payloadSkype.xml</payloadFromXML>
</command>

If you've already created an end call command (i.e. with the Skype.EndCall action), that willl work to end your video call as well.

Also, if you see the camera light is on when it shouldn't be, perhaps try issuing your "end call" command to see if the camera turns off, and let us know either way. thx.
Title: Re: Skype Plugin for VoxCommando
Post by: Indy on March 03, 2014, 12:06:03 AM
Thanks nime5ter, that works great.  Can you please explain to me where I can get more information on the possible syntax that is allowed from the skype: command

skype:{1}?call&amp;video=true

Also for the camera thing, I'm not sure.  As long as I have vox off or completely closed, the camera light goes off.  If I'm in listen or standby, the camera light is on like it is being actively used.  It's freaky and makes me paranoid so I have to figure out what is causing it.


EDIT

Ya, its not a plugin, I just reinstalled Vox into a different folder, selected XBMC Frodo as the configuration and started it for the first time.  The camera light comes on immediately.  Really dislike that and was hoping it was a borked plugin in my other install.
Title: Re: Skype Plugin for VoxCommando
Post by: jitterjames on March 03, 2014, 08:16:31 AM
Thanks nime5ter, that works great.  Can you please explain to me where I can get more information on the possible syntax that is allowed from the skype: command

skype:{1}?call&amp;video=true

That is called a skype uri.  Here is more info on it:
http://developer.skype.com/skype-uris

The {1} will be replaced by payload 1, which should be the contact name.

Also for the camera thing, I'm not sure.  As long as I have vox off or completely closed, the camera light goes off.  If I'm in listen or standby, the camera light is on like it is being actively used.  It's freaky and makes me paranoid so I have to figure out what is causing it.

EDIT

Ya, its not a plugin, I just reinstalled Vox into a different folder, selected XBMC Frodo as the configuration and started it for the first time.  The camera light comes on immediately.  Really dislike that and was hoping it was a borked plugin in my other install.

From what you are describing I am quite certain that you are using your webcam microphone for VC and this particular device turns a light on whenever the microphone is active.  So you should use a different microphone if it bothers you, or look into your camera settings to see if you can change how the light works.  It may also be possible that it uses a different colour to represent "mic on" vs. "video on".
Title: Re: Skype Plugin for VoxCommando
Post by: Indy on March 03, 2014, 09:10:30 AM
That is called a skype uri.  Here is more info on it:
http://developer.skype.com/skype-uris

The {1} will be replaced by payload 1, which should be the contact name.

Thanks, glad to know.

From what you are describing I am quite certain that you are using your webcam microphone for VC and this particular device turns a light on whenever the microphone is active.  So you should use a different microphone if it bothers you, or look into your camera settings to see if you can change how the light works.  It may also be possible that it uses a different colour to represent "mic on" vs. "video on".

I actually don't, I use a Yeti mic that does quite a good job of picking me up in the room.  But I think you may be onto the problem, if it is somehow being enumerated and initialized by Vox.  Or maybe my default mic changed in Windows and I didn't notice.  I'm going to see if I can disable the mic completely in Windows and see if the problem goes away.  Great suggestion thanks, didn't think about the mic in the webcam being the issue but does make sense.  I will report back once I've tested it.
Title: Re: Skype Plugin for VoxCommando
Post by: Indy on March 03, 2014, 08:38:20 PM
Disabling the mic in Windows turns the light off!  Thanks for the suggestions James, it was right on!
Title: Re: Skype Plugin for VoxCommando
Post by: DieterClaeys on January 01, 2017, 07:07:36 PM
Just want to give a small heads up on the Plugin behavior with the latest version of Skype (Version 7.30.0.105)

1) Generating Payloads --> works
2) Announcing Incoming Calls --> works
3) Announcing Chat Messages --> does not work on my setup.
Although here I am not sure if this should generate a message when you are receive a chat or an sms
4) Accept Incoming Calls --> works
5) Checking who's online/offline --> works
6) Making a call --> does not work, but can be functional when using below code:

Code: [Select]
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.2.2.9-->
<command id="280" name="Skype To {1}" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
  <action>
    <cmdType>RoboB.Select</cmdType>
    <params>
      <param>skype</param>
    </params>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <action>
    <cmdType>RoboB.Navigate</cmdType>
    <params>
      <param>skype:{1}?call</param>
    </params>
    <cmdRepeat>1</cmdRepeat>
  </action>
  <action>
    <cmdType>RoboB.Dispose</cmdType>
    <params />
    <cmdRepeat>1</cmdRepeat>
  </action>
  <phrase>Skype</phrase>
  <phrase optional="true">To</phrase>
  <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">payloads\payloadSkype.xml</payloadFromXML>
</command>

As my main focus was to get the "calling part" of Skype to work, the Plugin, together with some workarounds, still does the trick.

Its just a pity that Skype removed their support for the Skype Desktop API.