Executing Powershell Scripts in the Same Execution Context
Serializing Web Service Requests to run Load Tests

Skype Automation in Powershell : Don’t have to dial in conference codes anymore

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.

Comments

Andreas L.

This Blog is amazing.
Offers great information, tutorials and ideas for me as an junior c# developer.

Continue teaching the beginners =)

regards from germany

Shafqat Ahmed

Thanks for the feedback.

Jeff

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.

E

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.

Dmitry Sotnikov

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.

Marcelo Tropia

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?

Marcelo Tropia

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.

PiperbQ33

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.

Jay

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

coursework writing

I've been trying to get this to work, but I can't do this.

The comments to this entry are closed.