Управление системой через Skype
Модератор: immortal
-
- Сообщения: 211
- Зарегистрирован: Вт янв 08, 2013 11:50 pm
- Откуда: Санкт-Петербург
- Благодарил (а): 0
- Поблагодарили: 6 раз
Re: Управление системой через Skype
Сергей, озадачился подключением Скайп под Линукс. Поле для деятельности подготовил - скайп запускается и даже принимает - отправляет сообщения из php-скриптов.
Теперь пытаюсь вкурить логику работы модуля Скайп в МажорДоМо.
Судя по циклу_скайп, скрипт периодически отправляет сообщения пользователям в скайп - здесь вроде все понятно: запрос к базе, получили сообщения для пользователей, а потом отправили по разным логинам кому что причитается.
Дальше обработка входящих сообщений.
Я так понял, что в Винде регистрируется некий класс, который через механизм COM-объектов получает от Skype входящие сообщения.
И вот дальше у меня ступор.
Судя по коду скрипта, эти сообщения прямо в скрипте и обрабатываются (на ping получаем pong, либо пытаемся обработать через модуль команд commandReceived).
Но я никак не могу понять, в какой момент происходит вызов метода onNewMessage объекта mySkype.
HTTP-запросов в цикле_скайп я не увидел. Что я упустил?
Теперь пытаюсь вкурить логику работы модуля Скайп в МажорДоМо.
Судя по циклу_скайп, скрипт периодически отправляет сообщения пользователям в скайп - здесь вроде все понятно: запрос к базе, получили сообщения для пользователей, а потом отправили по разным логинам кому что причитается.
Дальше обработка входящих сообщений.
Я так понял, что в Винде регистрируется некий класс, который через механизм COM-объектов получает от Skype входящие сообщения.
И вот дальше у меня ступор.
Судя по коду скрипта, эти сообщения прямо в скрипте и обрабатываются (на ping получаем pong, либо пытаемся обработать через модуль команд commandReceived).
Но я никак не могу понять, в какой момент происходит вызов метода onNewMessage объекта mySkype.
HTTP-запросов в цикле_скайп я не увидел. Что я упустил?
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Управление системой через Skype
Не упустил, похоже я так и не подключил этот метод. Это можно сделать добавив после строчки
такую строчку:
Ещё можно использовать модуль Шаблоны поведения для обработки команд, т.к. он реагирует на историю сообщений в чате системы, а скрипт работы со скайпом пишет в чат то, что приходит на скайп.
Ну и буду рад если поделишься потом итоговым скриптом, чтобы обновить его в основной ветке исходников
Код: Выделить всё
getObject("ThisComputer")->raiseEvent("commandReceived", array("command"=>$qrys[$i]));
Код: Выделить всё
callMethod("mySkype.onNewMessage",array("message"=>$qrys[$i]));
Ну и буду рад если поделишься потом итоговым скриптом, чтобы обновить его в основной ветке исходников
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 211
- Зарегистрирован: Вт янв 08, 2013 11:50 pm
- Откуда: Санкт-Петербург
- Благодарил (а): 0
- Поблагодарили: 6 раз
Re: Управление системой через Skype
Ближе к выходным - по вечерам разбираюсь, на работе приходится работатьsergejey писал(а):Не упустил, ...
Ну и буду рад если поделишься потом итоговым скриптом, чтобы обновить его в основной ветке исходников
-
- Сообщения: 211
- Зарегистрирован: Вт янв 08, 2013 11:50 pm
- Откуда: Санкт-Петербург
- Благодарил (а): 0
- Поблагодарили: 6 раз
Re: Управление системой через Skype
Установку проводил на основе примеров из интернета.
Общие принципы:
- на сервере X-Server не поднимаем - будем использовать Xvfb
- общаться со скайпом будем через dbus
- скайп будем использовать только в текстовом режиме
- для выполнения первоначальной настойки будем использовать доступ через VNC
Для начала установим компоненты для работы с dbus
пропишем в настройки PHP использование модуля dbus
Проконтролируем, что все поставилось
должны увидеть что-то типа
Теперь непосредственно Скайп
так как у меня Debian sqweeze с ядром 2.6.32 - скачанный с сайта по ссылке дистрибутив не заработал (экспериментировал с обновлением ядра для 3-й версии - там все получилось).
Я скачивал старенький дистрибутив.
Итак, приступаем
99%, что вы получите ругань на неудовлетворенные зависимости. Делаем так:
и пробуем еще раз
есть вероятность, что ничего не получится. У меня решению проблемы помогло добавление в /etc/apt/source.list напротив каждого репозитария параметра Contrib
Если у вас все прошло хорошо, приступаем к последнему этапу шаманства
Первое замечание: у меня Apache и скрипты cycle.php исполняются от имени пользователя www-data. Поэтому и запуск скайпа я буду делать от имени этого пользователя.
Второе замечание: домашней директорией пользователя www-data является каталог /var/www, в котором этот пользователь царь и бог поэтому я приодически на все файлы и каталоги проверяю выставленного владельца и права доступа.
Итак, если у вас еще не установлен пакет sudo - ставим
Я дал пользователю www-data права на запуск некоторых приложений, которые нужны для работы умного дома, а также для работы со скайпом. Перечень характерен именно для моего случая
Создадим каталоги для хранения настроек скайпа (в домашней директрии пользователя www-data)
Для доступа к запущенному скайпу и выполнения первоначальных настроек (принять лицензионное соглащение, поотключать автоматические смены статусов и лишние оповещения) установим VNC-сервер
Попробуем запустить скайп
Запуск будем производить через утилиту Xvfb, используя возможность "сквозной" авторизации скайпа.
Разберемся поподробнее. На всех опциях останавливаться не буду, расскажу только про те, которые нам нужны.
:101 - номер так называемого "дисплея", на котором делаем запуск. При помощи это йопции в принципе можно запускать несколько копий скайпа на разных "дисплеях"
после знака & идет команда, которая выполняется на "дисплее". В нашем случае от имени пользователя www-data отправляем логин и пароль на вход команде
...DISPLAY=:101... - запуск производим в "дисплее" 101
...-dbpath=... - указываем, где храним настройки для хапускаемого сеанса. Если хотим несколько сеансов - раскидываем настройки по разным каталогам
...-pipelogin... - говорим скайпу, что логин и пароль мы отправили ему ранее командой echo
Ну вот и все скайп запущен. Осталось только его настроить. Для этого запусим VNC-сервер
Подключаемся при помощи любого vnc-клиента (я использую RealVNC для Mac или TightVNC для Windows). Как видите, сервер мы тоже адресуем к нашему :101 "дисплею". При таком запуске сервер остановится, как только вы от него отключитесь. Если хотите, чтобы он работал постоянно, и отключать его вручную - добавьте опцию -forever
Подключившись, вы увидете лицензионное соглашение. Приняв его, должны получить залогиненый скайп.
Я у себя в настройках отключил автоматическую смену статуса при неактивности, а также все уведомления (кроме входящего звонка - его просто не отключить), запретил автоматическую проверку обновлений и прочие непонятные и ненужные для текстового общения опции.
Об установе и запуске Скайпа пока все. Интеграцию его в Умный дом опишу чуть позднее, когда оттестирую скрипты.
Общие принципы:
- на сервере 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
Код: Выделить всё
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
Код: Выделить всё
apt-get -f install
Код: Выделить всё
dpkg -i skype-debian_4.0.0.7-1_i386.deb
Если у вас все прошло хорошо, приступаем к последнему этапу шаманства
Первое замечание: у меня Apache и скрипты cycle.php исполняются от имени пользователя www-data. Поэтому и запуск скайпа я буду делать от имени этого пользователя.
Второе замечание: домашней директорией пользователя www-data является каталог /var/www, в котором этот пользователь царь и бог поэтому я приодически на все файлы и каталоги проверяю выставленного владельца и права доступа.
Итак, если у вас еще не установлен пакет sudo - ставим
Код: Выделить всё
apt-get install sudo
Код: Выделить всё
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
Код: Выделить всё
mkdir -p /var/www/multi/interface01
chown -R www-data:www-data /var/www/multi
Код: Выделить всё
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
Код: Выделить всё
x11vnc -display :101 -forever
Я у себя в настройках отключил автоматическую смену статуса при неактивности, а также все уведомления (кроме входящего звонка - его просто не отключить), запретил автоматическую проверку обновлений и прочие непонятные и ненужные для текстового общения опции.
Об установе и запуске Скайпа пока все. Интеграцию его в Умный дом опишу чуть позднее, когда оттестирую скрипты.
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Управление системой через Skype
Класс! Всё меньше и меньше поводов оставаться на Windows
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 211
- Зарегистрирован: Вт янв 08, 2013 11:50 pm
- Откуда: Санкт-Петербург
- Благодарил (а): 0
- Поблагодарили: 6 раз
Re: Управление системой через Skype
Отправил исходники с интеграцией Скайпа для Линукса. Ждем релиза
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: Управление системой через Skype
Уже в общей ветке.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Re: Управление системой через Skype
Объясните пожалуйста, как запустить обработку сообщений скайпа, где можно посмотреть список команд, которые можно писать, где и каким образом добавить свои команды?
Мажордом запущен под виндой, скайп в системе запущен. Вот тут http://smartliving.ru/Main/ScSkypeBot написано, что в системе есть класс скайпа, в котором два метода и один объект. Всё так и есть. А как этим пользоваться? Посылаю на этот скайп текстовое сообщение "ping" (единственное, что нашел на форуме), "тот" скайп его получает... И всё...
Мажордом запущен под виндой, скайп в системе запущен. Вот тут http://smartliving.ru/Main/ScSkypeBot написано, что в системе есть класс скайпа, в котором два метода и один объект. Всё так и есть. А как этим пользоваться? Посылаю на этот скайп текстовое сообщение "ping" (единственное, что нашел на форуме), "тот" скайп его получает... И всё...
-
- Сообщения: 10
- Зарегистрирован: Пн мар 10, 2014 10:05 am
- Благодарил (а): 2 раза
- Поблагодарили: 0
Re: Управление системой через Skype
Установил и настроил x11vnc + Xvfb (ubuntu 12.04) по подробной инструкции выше, все отлично работает, но одна загвоздка, сообщения в чат Majordomo отправляются только если вручную запустить cycle_X101_skype.php, хотя в настройках Majordomo активировал пункт "Run Skype script". Подскажите пожалуйста куда копать?