Skype Automation in Powershell : Don’t have to dial in conference codes anymore
May 26, 2009
For teams located in different locations conference calling is a must. Most of these calling facilities have toll free 1-800 dial in numbers. Skype lets you dial in to the toll free 1-800 numbers without any cost. One annoying thing with these conference calls is that you have to dial in a pin code to enter. If you are dialing in to one conference only then you memorize it. But if you have to dial in several different conferences calls in a day it becomes a pain. You would probably have to lookup the outlook calendar entry and type it in, which is quite annoying and distracting. Recently I have been trying to do everything with Powershell. As you have guessed … … now we can dial into a Skype meeting with one powershell command.
You can download the powershell script : Download skype.ps1 (5.2K)
I just wrote a function ( just bare minimum, no error handling ) that calls a Skype contact or a phone number waits for certain time then enters the pin as DTMF codes. I have the different meeting and number to different functions which calls this function. And now I can get into any meeting without hassle.
The function is called Call-SkypeContactSendDTMF. The first parameter can be a skype contact name or a saved phone only contact or a number to dial. The second parameter is the number of seconds to wait after the phone has been picked up by the conference bot. The third parameter is the DTMF codes. You can add pause by putting in “@” to pause for a second. Here is the calling syntax
Call-SkypeContactSendDTMF (ConferenceNo, SecondsTOWait, DTMFCodes)
So I have created different entries from the meetings like this
function call-conf1()
{
Call-SkypeContactSendDTMF ("ConfNo",10,"7363784394#")
}
All I have to do is type in call-conf1 like this
call-conf1
I love powershell. Hope this helps someone.
btw: When executing this script remember that we want the function to stay in memory so you can either put this in the powershell profile or you can call it in the same context by adding a “. ” to it.
This Blog is amazing.
Offers great information, tutorials and ideas for me as an junior c# developer.
Continue teaching the beginners =)
regards from germany
Posted by: Andreas L. | June 18, 2009 at 07:08 PM
Thanks for the feedback.
Posted by: Shafqat Ahmed | June 18, 2009 at 10:40 PM
This looks excellent. I've been trying to get this to work. It dials out fine, but when it goes to pass the conference numbers to DTMF, I get the following error message for every number in the string:
.Exception setting "DTMF": "Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))"
At C:\tools\skype\skype-main.ps1:70 char:27
+ $call.d <<<< tmf = $dtmfcode
Any ideas?
Here's how I call it:
Call-SkypeContactSendDTMF("0018005431234",10,"323232#")
I'm running Skype V4 and PowerShell v1 on Windows XP.
Posted by: Jeff | June 23, 2009 at 10:26 AM
I'm trying to use your script to automate all the numbers I have to type in for using Skype with Google Voice. It looks like this might be the perfect solution, but I'm getting the exact same error as Jeff is above. PowerShell really doesn't seem to like that "$call.dtmf = $dtmfcode" at line 70.
Running Skype V4 and PowerShell v1 on Vista x64.
Posted by: E | October 04, 2009 at 07:45 AM
Jeff and E, the error you are getting is result of a bug in PowerShell 1.0 (basically it could not work with Write-Only COM attributes).
This got fixed in PowerShell 2.0.
In the PowerShell-based GUI I created for calling any AD or Exchange user or person in corporate org-chart (as well as Outlook integration for concalls) I modified the code to check for PowerShell version.
See: http://dmitrysotnikov.wordpress.com/2009/09/21/skype-for-administrators/ for details.
Posted by: Dmitry Sotnikov | October 16, 2009 at 05:21 PM
Hi, perhaps I didn't understand correctly, but I executed the script:
PS C:\skype> ./Skype
After that I executed the function:
PS C:\skype> Call-SkypeContactSendDTMF("0018005431234",10,"323232#")
The term 'Call-SkypeContactSendDTMF' is not recognized as the name of a cmdlet, function, script file, or operable prog
ram. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:26
+ Call-SkypeContactSendDTMF <<<< ("0018005431234",10,"323232#")
+ CategoryInfo : ObjectNotFound: (Call-SkypeContactSendDTMF:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
What is wrong? Can't I execute the function from command prompt?
Posted by: Marcelo Tropia | November 13, 2009 at 05:30 AM
Hi, already resolved the issue. It was missing a dot to execute the script.
Now I am receiving an error when calling the function:
PS C:\skype> call-DH
New-Object : Cannot load COM type Skype4Com.Skype.
At C:\skype\Skype.ps1:15 char:24
+ $skype = New-Object <<<< -ComObject Skype4Com.Skype
+ CategoryInfo : InvalidType: (:) [New-Object], PSArgumentException
+ FullyQualifiedErrorId : CannotLoadComObjectType,Microsoft.PowerShell.Commands.NewObjectCommand
I am using Skype 4.1 and PowerShell 2. Could you give me any advise? Thanks.
Posted by: Marcelo Tropia | November 13, 2009 at 05:54 AM
Very oft the sociology essays writing play very big role in studying life period and nearly every college student has got a practice of research papers ordering. Thus, it is a general issue for all students.
Posted by: PiperbQ33 | February 03, 2010 at 09:53 AM
I keep getting the following. I've confirmed Skype4COM.dll is registered. Wondering if it has something to do with Win7 x64.
New-Object : Retrieving the COM class factory for component with CLSID {830690FC-BF2F-47A6-AC2D-33
e to the following error: 80040154.
At C:\Users\Jayson\desktop\skype.ps1:15 char:24
+ $skype = New-Object <<<< -ComObject Skype4Com.Skype
+ CategoryInfo : ResourceUnavailable: (:) [New-Object], COMException
+ FullyQualifiedErrorId : NoCOMClassIdentified,Microsoft.PowerShell.Commands.NewObjectCommand
Posted by: Jay | February 16, 2010 at 01:56 PM
I've been trying to get this to work, but I can't do this.
Posted by: coursework writing | January 05, 2011 at 06:20 PM