Управление системой через Skype

Всё, что не подходит под вышеперечисленные разделы

Модератор: immortal

Vit
Сообщения: 867
Зарегистрирован: Вт янв 17, 2012 12:31 pm
Благодарил (а): 121 раз
Поблагодарили: 78 раз

Управление системой через Skype

Сообщение Vit » Пт авг 17, 2012 11:38 am

Обсуждение страницы Управление системой через Skype
anemcov
Сообщения: 211
Зарегистрирован: Вт янв 08, 2013 11:50 pm
Откуда: Санкт-Петербург
Благодарил (а): 0
Поблагодарили: 6 раз

Re: Управление системой через Skype

Сообщение anemcov » Ср янв 23, 2013 12:05 am

Сергей, озадачился подключением Скайп под Линукс. Поле для деятельности подготовил - скайп запускается и даже принимает - отправляет сообщения из php-скриптов.
Теперь пытаюсь вкурить логику работы модуля Скайп в МажорДоМо.
Судя по циклу_скайп, скрипт периодически отправляет сообщения пользователям в скайп - здесь вроде все понятно: запрос к базе, получили сообщения для пользователей, а потом отправили по разным логинам кому что причитается.
Дальше обработка входящих сообщений.
Я так понял, что в Винде регистрируется некий класс, который через механизм COM-объектов получает от Skype входящие сообщения.
И вот дальше у меня ступор.
Судя по коду скрипта, эти сообщения прямо в скрипте и обрабатываются (на ping получаем pong, либо пытаемся обработать через модуль команд commandReceived).
Но я никак не могу понять, в какой момент происходит вызов метода onNewMessage объекта mySkype.
HTTP-запросов в цикле_скайп я не увидел. Что я упустил?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Управление системой через Skype

Сообщение sergejey » Ср янв 23, 2013 10:31 am

Не упустил, похоже я так и не подключил этот метод. Это можно сделать добавив после строчки

Код: Выделить всё

getObject("ThisComputer")->raiseEvent("commandReceived", array("command"=>$qrys[$i]));
такую строчку:

Код: Выделить всё

callMethod("mySkype.onNewMessage",array("message"=>$qrys[$i]));
Ещё можно использовать модуль Шаблоны поведения для обработки команд, т.к. он реагирует на историю сообщений в чате системы, а скрипт работы со скайпом пишет в чат то, что приходит на скайп.

Ну и буду рад если поделишься потом итоговым скриптом, чтобы обновить его в основной ветке исходников :)

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
anemcov
Сообщения: 211
Зарегистрирован: Вт янв 08, 2013 11:50 pm
Откуда: Санкт-Петербург
Благодарил (а): 0
Поблагодарили: 6 раз

Re: Управление системой через Skype

Сообщение anemcov » Ср янв 23, 2013 10:43 am

sergejey писал(а):Не упустил, ...

Ну и буду рад если поделишься потом итоговым скриптом, чтобы обновить его в основной ветке исходников :)
Ближе к выходным - по вечерам разбираюсь, на работе приходится работать :)
anemcov
Сообщения: 211
Зарегистрирован: Вт янв 08, 2013 11:50 pm
Откуда: Санкт-Петербург
Благодарил (а): 0
Поблагодарили: 6 раз

Re: Управление системой через Skype

Сообщение anemcov » Чт янв 24, 2013 5:20 pm

Установку проводил на основе примеров из интернета.
Общие принципы:
- на сервере X-Server не поднимаем - будем использовать Xvfb
- общаться со скайпом будем через dbus
- скайп будем использовать только в текстовом режиме
- для выполнения первоначальной настойки будем использовать доступ через VNC

Для начала установим компоненты для работы с dbus

Код: Выделить всё

apt-get install php5-dev
apt-get install php-pear
pear install PEAR

Код: Выделить всё

apt-get install libdbus-1-dev libxml2-dev
pecl install dbus-beta
пропишем в настройки PHP использование модуля dbus

Код: Выделить всё

echo -e "; configuration for php DBus module\nextension=dbus.so"| tee -a /etc/php5/conf.d/dbus.ini
Проконтролируем, что все поставилось

Код: Выделить всё

php -i | grep -n -i dbus
должны увидеть что-то типа

Код: Выделить всё

DBus support => enabled
Теперь непосредственно Скайп
так как у меня Debian sqweeze с ядром 2.6.32 - скачанный с сайта по ссылке дистрибутив не заработал (экспериментировал с обновлением ядра для 3-й версии - там все получилось).

Я скачивал старенький дистрибутив.
Итак, приступаем

Код: Выделить всё

wget http://download.skype.com/linux/skype-debian_4.0.0.7-1_i386.deb 
dpkg -i skype-debian_4.0.0.7-1_i386.deb
99%, что вы получите ругань на неудовлетворенные зависимости. Делаем так:

Код: Выделить всё

apt-get -f install
и пробуем еще раз

Код: Выделить всё

dpkg -i skype-debian_4.0.0.7-1_i386.deb
есть вероятность, что ничего не получится. У меня решению проблемы помогло добавление в /etc/apt/source.list напротив каждого репозитария параметра Contrib

Если у вас все прошло хорошо, приступаем к последнему этапу шаманства :)

Первое замечание: у меня Apache и скрипты cycle.php исполняются от имени пользователя www-data. Поэтому и запуск скайпа я буду делать от имени этого пользователя.
Второе замечание: домашней директорией пользователя www-data является каталог /var/www, в котором этот пользователь царь и бог :) поэтому я приодически на все файлы и каталоги проверяю выставленного владельца и права доступа.

Итак, если у вас еще не установлен пакет sudo - ставим

Код: Выделить всё

apt-get install sudo
Я дал пользователю www-data права на запуск некоторых приложений, которые нужны для работы умного дома, а также для работы со скайпом. Перечень характерен именно для моего случая

Код: Выделить всё

echo 'www-data    ALL = NOPASSWD: /bin/mount, /bin/umount, /sbin/shutdown, /sbin/reboot, /sbin/modprobe, /sbin/rmmod, /usr/bin/skype, /usr/bin/Xvfb, /home/skype/skype, /bin/su, /bin/kill'>>/etc/sudoers
Создадим каталоги для хранения настроек скайпа (в домашней директрии пользователя www-data)

Код: Выделить всё

mkdir -p /var/www/multi/interface01
chown -R www-data:www-data /var/www/multi
Для доступа к запущенному скайпу и выполнения первоначальных настроек (принять лицензионное соглащение, поотключать автоматические смены статусов и лишние оповещения) установим VNC-сервер

Код: Выделить всё

apt-get install x11vnc
Попробуем запустить скайп
Запуск будем производить через утилиту Xvfb, используя возможность "сквозной" авторизации скайпа.

Код: Выделить всё

/usr/bin/Xvfb :101 -ac & su www-data -c "/bin/echo '<skype_login> <skype_password>'| DISPLAY=:101 /usr/bin/skype --dbpath=/home/skype/multi/interface01 --pipelogin &"
Разберемся поподробнее. На всех опциях останавливаться не буду, расскажу только про те, которые нам нужны.
:101 - номер так называемого "дисплея", на котором делаем запуск. При помощи это йопции в принципе можно запускать несколько копий скайпа на разных "дисплеях"
после знака & идет команда, которая выполняется на "дисплее". В нашем случае от имени пользователя www-data отправляем логин и пароль на вход команде
...DISPLAY=:101... - запуск производим в "дисплее" 101
...-dbpath=... - указываем, где храним настройки для хапускаемого сеанса. Если хотим несколько сеансов - раскидываем настройки по разным каталогам
...-pipelogin... - говорим скайпу, что логин и пароль мы отправили ему ранее командой echo

Ну вот и все :) скайп запущен. Осталось только его настроить. Для этого запусим VNC-сервер

Код: Выделить всё

x11vnc -display :101
Подключаемся при помощи любого vnc-клиента (я использую RealVNC для Mac или TightVNC для Windows). Как видите, сервер мы тоже адресуем к нашему :101 "дисплею". При таком запуске сервер остановится, как только вы от него отключитесь. Если хотите, чтобы он работал постоянно, и отключать его вручную - добавьте опцию -forever

Код: Выделить всё

x11vnc -display :101 -forever
Подключившись, вы увидете лицензионное соглашение. Приняв его, должны получить залогиненый скайп.

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

Об установе и запуске Скайпа пока все. Интеграцию его в Умный дом опишу чуть позднее, когда оттестирую скрипты.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Управление системой через Skype

Сообщение sergejey » Пт янв 25, 2013 11:14 am

Класс! Всё меньше и меньше поводов оставаться на Windows :)

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
anemcov
Сообщения: 211
Зарегистрирован: Вт янв 08, 2013 11:50 pm
Откуда: Санкт-Петербург
Благодарил (а): 0
Поблагодарили: 6 раз

Re: Управление системой через Skype

Сообщение anemcov » Пт янв 25, 2013 2:47 pm

Отправил исходники с интеграцией Скайпа для Линукса. Ждем релиза :)
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Управление системой через Skype

Сообщение sergejey » Пт янв 25, 2013 4:25 pm

Уже в общей ветке.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Gnork
Сообщения: 5
Зарегистрирован: Ср ноя 06, 2013 10:30 am
Благодарил (а): 0
Поблагодарили: 0

Re: Управление системой через Skype

Сообщение Gnork » Вт ноя 12, 2013 11:58 pm

Объясните пожалуйста, как запустить обработку сообщений скайпа, где можно посмотреть список команд, которые можно писать, где и каким образом добавить свои команды?
Мажордом запущен под виндой, скайп в системе запущен. Вот тут http://smartliving.ru/Main/ScSkypeBot написано, что в системе есть класс скайпа, в котором два метода и один объект. Всё так и есть. А как этим пользоваться? Посылаю на этот скайп текстовое сообщение "ping" (единственное, что нашел на форуме), "тот" скайп его получает... И всё...
Goerg
Сообщения: 10
Зарегистрирован: Пн мар 10, 2014 10:05 am
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Управление системой через Skype

Сообщение Goerg » Вт мар 25, 2014 6:19 pm

Установил и настроил x11vnc + Xvfb (ubuntu 12.04) по подробной инструкции выше, все отлично работает, но одна загвоздка, сообщения в чат Majordomo отправляются только если вручную запустить cycle_X101_skype.php, хотя в настройках Majordomo активировал пункт "Run Skype script". Подскажите пожалуйста куда копать?
Ответить