Страница 1 из 3

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

Добавлено: Пт авг 17, 2012 11:38 am
Vit
Обсуждение страницы Управление системой через Skype

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

Добавлено: Ср янв 23, 2013 12:05 am
anemcov
Сергей, озадачился подключением Скайп под Линукс. Поле для деятельности подготовил - скайп запускается и даже принимает - отправляет сообщения из php-скриптов.
Теперь пытаюсь вкурить логику работы модуля Скайп в МажорДоМо.
Судя по циклу_скайп, скрипт периодически отправляет сообщения пользователям в скайп - здесь вроде все понятно: запрос к базе, получили сообщения для пользователей, а потом отправили по разным логинам кому что причитается.
Дальше обработка входящих сообщений.
Я так понял, что в Винде регистрируется некий класс, который через механизм COM-объектов получает от Skype входящие сообщения.
И вот дальше у меня ступор.
Судя по коду скрипта, эти сообщения прямо в скрипте и обрабатываются (на ping получаем pong, либо пытаемся обработать через модуль команд commandReceived).
Но я никак не могу понять, в какой момент происходит вызов метода onNewMessage объекта mySkype.
HTTP-запросов в цикле_скайп я не увидел. Что я упустил?

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

Добавлено: Ср янв 23, 2013 10:31 am
sergejey
Не упустил, похоже я так и не подключил этот метод. Это можно сделать добавив после строчки

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

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

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

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

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

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

Добавлено: Ср янв 23, 2013 10:43 am
anemcov
sergejey писал(а):Не упустил, ...

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

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

Добавлено: Чт янв 24, 2013 5:20 pm
anemcov
Установку проводил на основе примеров из интернета.
Общие принципы:
- на сервере 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
Подключившись, вы увидете лицензионное соглашение. Приняв его, должны получить залогиненый скайп.

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

Об установе и запуске Скайпа пока все. Интеграцию его в Умный дом опишу чуть позднее, когда оттестирую скрипты.

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

Добавлено: Пт янв 25, 2013 11:14 am
sergejey
Класс! Всё меньше и меньше поводов оставаться на Windows :)

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

Добавлено: Пт янв 25, 2013 2:47 pm
anemcov
Отправил исходники с интеграцией Скайпа для Линукса. Ждем релиза :)

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

Добавлено: Пт янв 25, 2013 4:25 pm
sergejey
Уже в общей ветке.

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

Добавлено: Вт ноя 12, 2013 11:58 pm
Gnork
Объясните пожалуйста, как запустить обработку сообщений скайпа, где можно посмотреть список команд, которые можно писать, где и каким образом добавить свои команды?
Мажордом запущен под виндой, скайп в системе запущен. Вот тут http://smartliving.ru/Main/ScSkypeBot написано, что в системе есть класс скайпа, в котором два метода и один объект. Всё так и есть. А как этим пользоваться? Посылаю на этот скайп текстовое сообщение "ping" (единственное, что нашел на форуме), "тот" скайп его получает... И всё...

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

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