6 votes

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

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

skype --callto:+14445551234

Cependant, j'obtiens un message d'erreur, "skype : unrecognized option '--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à lancé 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.
  • une fenêtre skype s'ouvre, 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 normale de Skype sur Ubuntu, sans installer d'outils de développement ?

EDIT : Je considère que cette question est toujours ouverte. 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 bien au résultat souhaité, mais avec un outil supplémentaire. Je marquerai cette réponse comme étant la réponse si une autre n'est pas disponible d'ici quelques semaines.

7voto

Frank Nocke Points 999

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é. Il fonctionne. Pas seulement avec les surnoms. Aussi avec des numéros de téléphone directs :

$> skype --callto +494030001234

( cela signifie que la principale erreur du PO était de mettre deux points au lieu d'un espace... )

5voto

Aaron Points 720

Oui, si vous utilisez Skype4Py.

J'ai créé un simple callto.py script basé sur examples/callfriend.py de Skype4Py. Il prend un numéro de téléphone ou un nom d'ami de la liste de skype comme argument. Il ne fonctionne que si skype est déjà lancé.

Skype vous demandera si vous souhaitez donner l'autorisation d'utiliser l'API à Skype4Py.

Le code est le suivant :

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

2voto

user327872 Points 151

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

skype --callto +14445551234

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

skype --help

0voto

Buteman Points 1

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

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")

0voto

ayorgo Points 101

Ce qui suit semble fonctionner avec Skype pour Linux 8.73.0.92 sur Ubuntu 18.04.6 :

$ skypeforlinux callto:+441234567890

qui ouvre une invite d'appel avec le numéro saisi, mais n'effectue pas l'appel proprement dit, l'utilisateur devant appuyer lui-même sur le bouton d'appel.


D'ailleurs

$ skypeforlinux --shutdown

fonctionne également, il semble donc qu'ils aient laissé au moins une partie des API de la version 4, mais je n'ai pu trouver aucune documentation à ce sujet en ligne.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X