Как позвонить по номеру из командной строки по скайпу?

Я видел несколько ссылок, указывающих на возможность звонить из командной строки с помощью Skype. Инструкции предлагают что-то вроде:

skype --callto:+14445551234

Тем не менее, я получаю сообщение об ошибке "Скайп: нераспознанная опция" --callto:+14445551234".

Это возможно?

Сценарий использования:

Я хочу часто звонить на определенный номер.

  • при условии, что клиент Skype уже запущен и вошел в систему.
  • Я создаю ярлык на рабочем столе, который запускается skype --callto:+14445551234 или что-то подобное.
  • Дважды щелкните ярлык.
  • выскакивает окно скайпа, сразу звонит на этот номер

Можно ли это сделать?

Я знаю, что есть Skype API. Можно ли это сделать с помощью обычной установки Skype в Ubuntu без установки инструментов разработчика?

РЕДАКТИРОВАТЬ: я считаю, что этот вопрос все еще открыт, потому что я хотел бы знать, возможно ли это из установки Skype по умолчанию без каких-либо дополнительных функций.

Тем не менее, ответ ниже относительно " Skype4Py" действительно отвечает желаемому результату, хотя и с дополнительным инструментом. Я отмечу это как ответ, если другой не появится через несколько недель.

5 ответов

Решение

Очень просто:

$> 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>
    [...]

Проверено. Оно работает. Не только с никами. Также с прямыми телефонными номерами:

$> skype --callto +494030001234

(это означает, что основной ошибкой OP было двоеточие вместо пробела...)

Да, если вы используете Skype4Py.

Я создал простой скрипт callto.py на основе examples/callfriend.py из Skype4Py. В качестве аргумента он принимает номер телефона или имя друга из списка пользователей Skype. Работает только если скайп уже запущен.

Skype спросит вас, хотите ли вы дать разрешение API для Skype4Py.

Код следует:

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

Вы можете написать скрипт bash без использования API. Ваше использование неверно. Правильный путь:

skype --callto +14445551234

Вы можете просмотреть дополнительные параметры, набрав следующую команду в терминале

skype --help

Несколько лет назад я написал небольшой скрипт на Python, который делал подобные вещи.

Это было для версии Skype для Linux. Поэтому я не могу быть уверен, что это все еще будет работать.

#!/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")

Следующее, похоже, работает со Skype для Linux 8.73.0.92 в Ubuntu 18.04.6:

      $ skypeforlinux callto:+441234567890

который открывает приглашение для вызова номера с введенным номером, но не выполняет фактический вызов, пользователь должен сам нажать кнопку вызова.


Кстати

      $ skypeforlinux --shutdown

тоже работает, поэтому кажется, что они оставили по крайней мере некоторые из API версии 4, но я не смог найти никакой документации для него в Интернете.

Другие вопросы по тегам