6

I've seen several links suggesting it is possible to make a call from the command-line with skype. The instructions suggest something along the lines of:

skype --callto:+14445551234

However, this gets me an error message, "skype: unrecognized option '--callto:+14445551234".

Is this possible?

Use case scenario:

I want to call a particular number frequently.

  • assuming skype client is already running and logged in.
  • I create a shortcut on my desktop, which runs skype --callto:+14445551234 or something similar.
  • Double-click the shortcut.
  • skype window pops up, immediately calling this number

Can this be done?

I know there is a Skype API. Can this be done from a normal skype installation on Ubuntu, without installing any developer tools?

EDIT: I am considering this question to be still open, because I would like to know if this is possible from a default installation of skype without any additional functionality.

However, the answer below regarding "Skype4Py" does answer the desired outcome, albeit with an additional tool. I will mark this as the answer if another is not forthcoming in a few weeks.

5 Answers 5

8

Very simple:

$> skype --help

Skype 4.3.0.37

Usage: skype [options]
Options:
  --dbpath=<path>       Specify an alternative path to store Skype data files.
                        Default: ~/.Skype
  --resources=<path>    Specify a path where Skype can find its resource files.
                        Default: /usr/share/skype
  --secondary           Start a secondary instance of Skype.
  --disable-api         Disable Skype Public API.
  --callto <nick>
  skype:<nick>?<action>
    [...]

Tested. It works. Not just with nicknames. Also with direct phone numbers:

$> skype --callto +494030001234

( this means: OPs main mistake was a colon instead of a space... )

6

Yes, if you use Skype4Py.

I've created a simple callto.py script based on examples/callfriend.py from Skype4Py. It takes a phone number or a friend name from the skype roster as an argument. It's only working if skype is already launched.

Skype will ask you if you want to give API permission to Skype4Py.

Code follows:

#!python
# ---------------------------------------------------------------------------------------------
#  Python / Skype4Py example that takes a skypename or number from the commandline
# and calls it.
#

import sys
import Skype4Py

# This variable will get its actual value in OnCall handler
CallStatus = 0

# Here we define a set of call statuses that indicate a call has been either aborted or finished
CallIsFinished = set ([Skype4Py.clsFailed, Skype4Py.clsFinished, Skype4Py.clsMissed, Skype4Py.clsRefused, Skype4Py.clsBusy, Skype4Py.clsCancelled]);

def AttachmentStatusText(status):
   return skype.Convert.AttachmentStatusToText(status)

def CallStatusText(status):
    return skype.Convert.CallStatusToText(status)

# This handler is fired when status of Call object has changed
def OnCall(call, status):
    global CallStatus
    CallStatus = status
    print 'Call status: ' + CallStatusText(status)

# This handler is fired when Skype attatchment status changes
def OnAttach(status): 
    print 'API attachment status: ' + AttachmentStatusText(status)
    if status == Skype4Py.apiAttachAvailable:
        skype.Attach()

# Let's see if we were started with a command line parameter..
try:
    CmdLine = sys.argv[1]
except:
    print 'Missing command line parameter'
    sys.exit()

# Creating Skype object and assigning event handlers..
skype = Skype4Py.Skype()
skype.OnAttachmentStatus = OnAttach
skype.OnCallStatus = OnCall

# Starting Skype if it's not running already..
if not skype.Client.IsRunning:
    print 'Starting Skype..'
    skype.Client.Start()

# Attatching to Skype..
print 'Connecting to Skype..'
skype.Attach()

# Make the call
print 'Calling ' + CmdLine + '..'
skype.PlaceCall(CmdLine)

# Loop until CallStatus gets one of "call terminated" values in OnCall handler
while not CallStatus in CallIsFinished:
    pass
5
  • Hey. This looks promising. Preliminary to installing skype4py and testing this out, can you tell me basically what this script will do? ie, I run what command to get what result?
    – emf
    Oct 11, 2010 at 4:28
  • Put it in a file callto.py and you can run it with python callto.py <phone-number>. If your skype is online, it will start a call to <phone-number>.
    – jneves
    Oct 11, 2010 at 11:12
  • Cool. This answers the desired outcome, but I am leaving this question to be open because I'd like to hear if this is possible via normal skype capabilities, the google results seemed to indicate so. However, thank you for the answer.
    – emf
    Oct 13, 2010 at 20:07
  • 1
    Good luck. My own searches led me to believe it's something specific to the windows client, but I'd love to find out otherwise.
    – jneves
    Oct 15, 2010 at 7:48
  • 1
    I don't think you can call phone number from the command line by just using skype. Every time you call skype from the command line, it will start a new skype instance. You can only pipe the username and password using --piped-login
    – Adi Roiban
    Nov 7, 2010 at 21:39
2

You can write a bash script without using any API. Your usage is wrong. The correct way is:

skype --callto +14445551234

You can view more options by typing the following command in the terminal

skype --help
0

Some years ago I wrote a little Python script do do this sort of thing.

This was for the Linux version of Skype. So I cannot be sure it will still work.

#!/usr/bin/python
import Skype4Py
import os

os.system("/usr/bin/skype")
# Create an instance of the Skype class.
skype = Skype4Py.Skype()

# Connect the Skype object to the Skype client.
skype.Attach()

# Obtain some information from the client and print it out.
print 'Your full name:', skype.CurrentUser.FullName

print 'Your contacts:'

for user in skype.Friends:

    print '    ', user.FullName

skype.PlaceCall("+44123456789")
0

The following seems to work with Skype for Linux 8.73.0.92 on Ubuntu 18.04.6:

$ skypeforlinux callto:+441234567890

which opens a number-calling prompt with the number typed in but doesn't make the actual call, a user has to press the call button themselves.


By the way

$ skypeforlinux --shutdown

works too, so it seems that they left at least some of the version 4 APIs but I couldn't find any documentation for it online.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .