2013-05-10 3 views
1

Я работаю над реализацией нескольких интересных функций с помощью SkypeBot, и одна из функций, которые я хотел бы реализовать, - это возможность добавления нового контакта. При просмотре документации Skype4Py, я отмечаю этот метод:Skype4Py - Как успешно добавить контакт?

http://skype4py.sourceforge.net/doc/html/Skype4Py.client.Client-class.html#OpenAddContactDialog

Я использую следующий код, чтобы попытаться получить доступ к этому:

sky = Skype4Py.Skype() 
client = Skype4Py.client.Client(sky) 
sky.Attach() 
client.OpenAddContactDialog("test") 

Однако при попытке использовать почти все от Skype4py. client.Client я получаю тайм-аут с TRACEBACK:

Traceback (most recent call last): 
File "<input>", line 1, in <module> 
File "build/bdist.macosx-10.8-intel/egg/Skype4Py/client.py", line 164, in OpenDialog 
self._Skype._DoCommand('OPEN %s' % tounicode(' '.join(params))) 
File "build/bdist.macosx-10.8-intel/egg/Skype4Py/skype.py", line 276, in _DoCommand 
self.SendCommand(command) 
File "build/bdist.macosx-10.8-intel/egg/Skype4Py/skype.py", line 778, in SendCommand 
self._Api.send_command(Command) 
File "build/bdist.macosx-10.8-intel/egg/Skype4Py/api/darwin.py", line 395, in send_command 
raise SkypeAPIError('Skype command timeout') 
SkypeAPIError: Skype command timeout 

Я получаю эту ошибку тайм-аута на каждом методе я пытаюсь получить доступ в клиенте класс. (то есть: OpenAuthorizationDialog, OpenCallHistoryTab, OpenContactsTab). Я обращаюсь к этому методу неправильно, или, возможно, этот метод не поддерживается для более новых версий Skype? Любая помощь в получении этой работы или метод, который добавляет контакты через Skype4Py, будут очень оценены.

+0

Прежде всего, ** 1: ** Создайте привязку к API, ** 2: ** определите функции, такие как 'on_message', ** 3: ** execute' .Attach() '. Затем вы откроете клиентский дескриптор и добавьте диалог. – Torxed

ответ

3
sky = Skype4Py.Skype() 
sky.Attach() 

client = Skype4Py.client.Client(sky) 
client.OpenAddContactDialog("Torxed") 

Попытка несколько вещей, но я 99% уверен, что это порядок, в котором вы должны делать. В противном случае вы будете использовать тайм-аут, потому что для вложения требуется время для подключения, прежде чем вы начнете выполнять действия по API.

Также смотрите на сайте:

Также вы можете идти об этом в ту сторону. Добавление пользователя skype напрямую, не работает Skype.

  1. поиск
  2. запрос добавить с сообщением
  3. ждать разрешения

Итак, попробуйте одно из следующих действий: (один является asyncore способ поиска и добавления, как они выскакивают , другой пучок ваши результаты)

Так попробуйте:

sky = Skype4Py.Skype() 
sky.Attach() 
print skyp.SearchForUsers('Torxed') 

вы должны получить ручку, чтобы добавить меня к примеру. В пределах объекта, который вы получите, будет возможность добавить меня, например.

+0

Спасибо за ваш ответ, однако метод, о котором вы говорили выше, не работает, я все равно получаю таймаут. Пытаемся возиться с поиском, а затем запрашивать, но до сих пор получать тайм-ауты. – ljlozano

+0

@ljlozano это на Attach(), что вы получаете ошибку? Какую версию Python, skype4Py и Skype вы используете? Вы знаете, что вам нужно установить и запустить skype? Если вы не загрузили SDK, который является ужасающей работой. – Torxed

+0

Ошибки во всем, что использует объект «клиент». Я использую Python 2.7, Skype4Py-1.0.32.1-py2.7.egg. Skype установлен и запущен. Я могу отправлять сообщения своим контактам, вызывать их и использовать любую другую функцию Skype4Py, кроме всего, что на клиентском объекте, к сожалению, это единственный способ добавить контакт. @Torxed – ljlozano

0

@ Ответ Torxed был прав, но вот больше информации, если кто-то не смог сделать его последней милей.

я был в состоянии добавить контакт таким образом:

import Skype4Py 
sky = Skype4Py.Skype() 
sky.Attach() 
requestMessage = "Please accept my request!" 
searchResults = sky.SearchForUsers('echo123') 
firstResult = searchResults[0] 
firstResult.SetBuddyStatusPendingAuthorization(requestMessage) 

Будьте осторожны, хотя, как это только добавляет первый результат, возвращаемый поиска. Если у вас точное имя пользователя, все должно быть хорошо.

Смежные вопросы