web-dev-qa-db-fra.com

Comment appeler un numéro en ligne de commande avec Skype?

J'ai vu plusieurs liens suggérant qu'il est possible de passer un appel en ligne de commande avec skype. Les instructions suggèrent quelque chose comme:

skype --callto:+14445551234

Cependant, cela me donne un message d'erreur, "skype: option non reconnue '--callto: +14445551234".

Est-ce possible?

Scénario d'utilisation:

Je veux appeler un numéro particulier fréquemment.

  • en supposant que le client skype est déjà en cours d'exécution et connecté.
  • Je crée un raccourci sur mon bureau, qui exécute skype --callto:+14445551234 ou quelque chose de similaire.
  • Double-cliquez sur le raccourci.
  • la fenêtre de skype apparaît, appelant immédiatement ce numéro

Cela peut-il être fait?

Je sais qu'il existe une API Skype. Cela peut-il être fait à partir d’une installation Skype normale sur Ubuntu, sans aucun outil de développement?

EDIT: Je considère que cette question est toujours ouverte , car j'aimerais savoir si cela est possible à partir d'une installation par défaut de skype sans aucune fonctionnalité supplémentaire. .

Cependant, la réponse ci-dessous concernant " Skype4Py " répond au résultat souhaité, bien qu'avec un outil supplémentaire. Je marquerai ceci comme la réponse si un autre n'est pas à venir dans quelques semaines.

6
emf

Très 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>
    [...]

Testé. Ça marche. Pas seulement avec des surnoms. Aussi avec numéros de téléphone directs:

$> skype --callto +494030001234

(Cela signifie: l'erreur principale des PO était un colon au lieu d'un espace ...)

7
Frank Nocke

Oui, si vous utilisez Skype4Py.

J'ai créé un simple script callto.py basé sur exemples/callfriend.py de Skype4Py. Un numéro de téléphone ou le nom d'un ami de la liste de skype doit être utilisé comme argument. Cela ne fonctionne que si skype est déjà lancé.

Skype vous demandera si vous souhaitez accorder une autorisation d'API à Skype4Py.

Le code suit:

#!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
jneves

Vous pouvez écrire un script bash sans utiliser d’API. Votre utilisation est mauvaise. La manière correcte est:

skype --callto +14445551234

Vous pouvez voir plus d'options en tapant la commande suivante dans le terminal

skype --help
2
Prabhanshu

Il y a quelques années, j'ai écrit un petit script Python pour faire ce genre de chose.

C'était pour la version Linux de Skype. Je ne peux donc pas être sûr que cela fonctionnera encore.

#!/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
Buteman