Назначение и установка
Библиотека Skype4COM обеспечивает ActiveX интерфейс к API программы Skype. Разрабатывать программы для Skype можно в знакомых средах программирования, таких как Visual Studio или Delphi, с использованием языков сценариев, например VBScript, PHP или JavaScript. Также можно вставлять управляющие элементы в веб-страницу, используя тег object.
Автор библиотеки - Skype Limited. Библиотека Skype4COM.dll распространяется бесплатно. Вы можете скачать библиотеку здесь (версия 1.0.36, архив ~1.80 MB). Прямая ссылка здесь. Внутри архива находятся 3 файла: установщик, сама библиотека и файл справки на английском языке. Требования для установки: программа Skype 3.0 и ОС Windows (2000/XP/Vista/7)
Примечание: вероятно, что в последних версиях Skype библиотека уже есть в комплекте, потому архив имеет смысл скачивать только ради справки.
Использование.
Примеры ниже будут приводиться на языке VBScript. Создание объекта Skype4COM производится следующим образом:
Set oSkype = WScript.CreateObject("Skype4COM.Skype", "Skype_")
Примечание: сначала следует авторизоваться в системе. При первом запуске скрипта нужно будет дать разрешение на дальнейшее выполнение в окне Skype, после чего выполняющая скрипт программа добавится в исключения. Еще перед запуском следует авторизоваться в системе.
Подробную информацию о свойствах и методах объекта Skype4COM можно получить в справочном файле из архива. Тут ограничусь только описанием примеров vbs-скриптов, представленных в справке:
• Скрипт настройки автоматического ответа на входящие вызовы
• Сценарий, ожидающий соединения на Skype API и соединяющий, если таковой имеется, после чего удерживает пользователя при успешном соединении
• Скрипт, посылающий нажатия клавиш для Skype клиента
• Скрипт, выполняющий звонок и следящий за статусом во время разговора
• Сценарий запросов чатов из истории чатов
• Пример скрипта на основе предыдущего, иллюстрирующий свойства в чате
• Скрипт, открывающий различные окна в Skype клиенте
• Скрипт для блокировки/разблокирования Skype API
• Скрипт, создающий конференц-вызов
• Скрипт, создающий список участников конференции и список тех, кто не подключен к ней
• Скрипт, выводящий список переданных файлов через Skype
• Сценарий, создающий групповой чат
• Скрипт, управляющий различными аспектами контактных групп
• Скрипт, добавляющий собеседников в конференцию
• Скрипт, создающий лог сообщений чата
• Сценарий, демонстрирующий создание плагина пунктов меню и событий
• Скрипт, перечисляющий свойства профиля для текущего пользователя
• Скрипт для автоответа на сообщение, полученное в чате
• Скрипт, выполняющий простой поиск пользователя в сети
• Скрипт, показывающий общие параметры программы Skype
• Сценарий, отправляющий sms на указанный номер
• Скрипт, создающий список всех отправленных сообщений
• Скрипт, который при получении нового голосового сообщения отправляет sms уведомление и отвечает на входящие вызовы
Некоторые примеры:
№1
' Скрипт, перечисляющий свойства профиля для текущего пользователя
Set oSkype = WScript.CreateObject("Skype4COM.Skype","Skype_")
Dim Text
If Not oSkype.Client.IsRunning Then
oSkype.Client.Start()
End If
Text = "" & _
"Full name: " & oSkype.CurrentUserProfile.FullName & vbCrLf & _
"Birthday: " & oSkype.CurrentUserProfile.Birthday & vbCrLf & _
"Sex: " & oSkype.CurrentUserProfile.Sex & vbCrLf & _
"Languages: " & oSkype.CurrentUserProfile.Languages & vbCrLf & _
"Country: " & oSkype.CurrentUserProfile.Country & vbCrLf & _
"IP Country: " & oSkype.CurrentUserProfile.IPCountry & vbCrLf & _
"Province: " & oSkype.CurrentUserProfile.Province & vbCrLf & _
"City: " & oSkype.CurrentUserProfile.City & vbCrLf & _
"Phone home: " & oSkype.CurrentUserProfile.PhoneHome & vbCrLf & _
"Phone office: " & oSkype.CurrentUserProfile.PhoneOffice & vbCrLf & _
"Phone mobile: " & oSkype.CurrentUserProfile.PhoneMobile & vbCrLf & _
"Homepage: " & oSkype.CurrentUserProfile.Homepage & vbCrLf & _
"About: " & oSkype.CurrentUserProfile.About & vbCrLf & _
"Mood: " & oSkype.CurrentUserProfile.MoodText & vbCrLf & _
"Timezone: " & oSkype.CurrentUserProfile.Timezone & vbCrLf & _
"Noanswer timeout: " & oSkype.CurrentUserProfile.CallNoAnswerTimeout & vbCrLf & _
"Forward rules: " & oSkype.CurrentUserProfile.CallForwardRules & vbCrLf & _
"Call apply forward: " & oSkype.CurrentUserProfile.CallApplyCF & vbCrLf & _
"Call send to voicemail: " & oSkype.CurrentUserProfile.CallSendToVM & vbCrLf & _
"Balance: " & oSkype.CurrentUserProfile.Balance / 100 &" "& oSkype.CurrentUserProfile.BalanceCurrency & vbCrLf & _
"Balance Text: " & oSkype.CurrentUserProfile.BalanceToText & vbCrLf & _
"Validated SMS numbers: " & oSkype.CurrentUserProfile.ValidatedSmsNumbers
WScript.Echo Text
№2
' Скрипт, создающий чат с пользователем Echo123 и отправляющий ему сообщение.
Set oSkype = WScript.CreateObject("Skype4COM.Skype")
Set oMembers = WScript.CreateObject("Skype4COM.UserCollection")
oMembers.Add(oSkype.User("echo123"))
Set oChat = oSkype.CreateChatMultiple(oMembers)
oChat.OpenWindow()
Set oMsg = oChat.SendMessage("Test Message.")
№3
' Скрипт ищет пользователя среди друзей. Если находит, то меняет статус у текущего пользователя
' и звонит найденному пользователю.
Set oSkype = Wscript.CreateObject("Skype4COM.Skype", "Skype ")
oSkype.Client.Start()
oSkype.Attach()
For Each User In oSkype.Friends
If (User.Handle="echo123") Then
oSkype.CurrentUserProfile.MoodText = "New Status"
Set oCall = oSkype.PlaceCall(User.handle)
End If
Next
№4
' Скрипт, сохраняющий историю разговоров Skype в отдельной папке
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oSkype = WScript.CreateObject("Skype4COM.Skype", "Skype_")
If Not oSkype.Client.IsRunning Then oSkype.Client.Start() End If
ChatHistoryFolder = "SkypeChatHistory"
If Not(oFSO.FolderExists(ChatHistoryFolder)) Then
oFSO.CreateFolder(ChatHistoryFolder)
End If
For Each oChat In oSkype.Chats
name = ""
f = True ' Пропускаем самого себя
For Each oUser In oChat.Members
If f Then f = False Else name = name&"_"&oUser.FullName End If
Next
Set Chat = oFSO.OpenTextFile(ChatHistoryFolder&"/chat"&name&".txt", 8, True, -1)
If oChat.Messages.Count > 0 Then
For Each oMsg In oChat.Messages
Chat.WriteLine(oMsg.FromDisplayName&" ("&oMsg.Timestamp&"):"& oMsg.Body)
Next
End If
Chat.Close
Next
WScript.Echo "История сохранена. Найдено "&oSkype.Chats.Count&" чатов"
№5
' Если есть активные разговоры, то скрипт сохранит его в wav-файле.
' Иначе выдаст уведомление, что разговоров на данный момент нет.
Set oSkype = WScript.CreateObject("Skype4COM.Skype", "Skype_")
Path = "C:\"
If Not oSkype.Client.IsRunning Then oSkype.Client.Start() End If
If oSkype.ActiveCalls.Count > 0 Then
Call_id = oSkype.ActiveCalls.Item(1).ID
FileIn = Path & Call_id & "_in.wav"
FileMIC = Path & Call_id & "_mic.wav"
oSkype.ActiveCalls.Item(1).OutputDevice(2) = FileIn
oSkype.ActiveCalls.Item(1).CaptureMicDevice(2) = FileMIC
Else
WScript.Echo "Нет активных разговоров"
End If
В основе всего лежит простота.