qshinoの日記

Powershell関係と徒然なこと

skypebot

下記から引用

 

http://qiita.com/kompiro/items/087131a1dce13884095e

 

SkypeBotを作ろう(Sevabot導入)
2013年05月10日
この記事は最終更新日から1年以上が経過しています。

IRCBotを追加していろんな事をする記事はよく見かけますよね。Skypeでそれをやるにはどうすればいいのか、調べてみました。

Sevabotを選んだ理由

Botの開発には、GitHubでも使われているhubotが有名です。hubotにもSkypeアダプタもあるからこれが良さそう、と思い、まずは試してみました。hubotでもSkypeに追加したBotアカウントに対しコマンドを実行させたりするのは簡単です。しかし、例えばチケットを閉じたイベントをあるチャットルームに流そうと思うと、どのチャットルームに流すのか、チャットのIDがわかってないと指定できません。ちょっと調べてみた感じ、そういうインタフェースが見つかりませんでした。スクリプトで調べようと思えば調べられたりしますが、面倒くさいので今回はやめまました。

少し調べてみると、SevabotっていうSkypeBotアカウントを導入するための良い感じのアプリがありました。こいつにはチャットのIDの一覧があり、またチャットルームを指定してつぶやかせるのも簡単だったので、導入手順をまとめます。

Sevabotとは

SkypeBotアカウントを導入するためのアプリです。Skype4pyをベースにしています。SevabotにはWebベースの簡易なインタフェースもついています。

Sevabotのベースに利用しているSkype4pyとは、SkypePython用のAPIです。起動しているSkypeと通信できるので、Sevabotが受け取ったメッセージをSkype4pyを経由して他のユーザーにメッセージしたり、他のユーザーが入力したコマンドをSkype4pyで受け取ってSevabotが処理を行う、という事ができます。Sevabotが受け取るコマンドも拡張できます。

Sevabotを動かすための制限として下記の2つがあります。

GUIセッションがいる
SevabotのためのSkypeアカウントがいる
GUIセッションは、xvfbを使ってやれないこともないです。Sevabotの構築をまとめたwikiでもxvfbを使うようにしていますが、特に問題なければUbuntuのデスクトップ版など、Xがインストールされている環境を用意したほうが楽できるでしょう。

Sevabotのセットアップ

セットアップの流れは下記のとおりです。

Skypeのインストール
Sevabotのインストール
Skypeの起動、アカウント設定
Sevabotの設定
Sevabotの起動
今日はUbuntu Desktop 12.04をベースに構築手順をまとめます。

Skypeのインストール

GUIからログインして下記のコマンドを入力

$ sudo dpkg --add-architecture i386
$ sudo add-apt-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner"
$ sudo apt-get update && sudo apt-get install skype
Sevabotのインストール

Sevabotはpypiにアップロードしているので、pipでインストールすると楽。設定ファイルのサンプルや、基本的なコマンドが導入されているmoduleはGitHubリポジトリのものをそのまま使ったほうが楽なので、それも取得する

$ sudo apt-get install pip git
$ pip install sevabot
$ git clone https://github.com/opensourcehacker/sevabot.git sevabot
Skypeの起動、アカウント設定

Skypeの設定なので、省略

Sevabotの設定

$ cd sevabot
$ cp settings.py.example settings.py
$ edit settings.py # settings.pyの設定.
settings.pyの設定について

SHARED_SECRET - Webインタフェースのパスワード
ADMINS - botを管理するSkypeアカウント
MODULE_PATH - botのコマンドが格納されているパス。自分で新たにコマンドを作成する場合は、既存のものと見分けをつけやすくするため、別フォルダを作成する。
HTTP_HOST - Webインタフェースでアクセスする場合のホスト名
HTTP_PORT - Webインタフェースのポート名

Sevabotの起動

コマンドの作り方

簡単。Botはコマンドを受け取ると、UNIXの実行結果である標準出力をSkypeのメッセージに出力する。コマンドは

Shellスクリプト
Python, Ruby等など
実行できるものであればなんでもいい。ただし、同名のコマンドがMODULE_PATHに重複しないこと。ビルトインのコマンドであるping等々もこの仕組みで追加されています。例えば自分でコマンドを追加するには下記のとおりに設定します。

自作コマンドを置くための custom/ というフォルダを作りましょう。
customをsettings.pyのMODULE_PATHに追加しましょう。
下記のようにcustomフォルダの下にmyscript.shを作成しましょう。
#!/bin/sh
echo "Hello world from my sevabot command"
chmod u+x myscript.sh として、実行権限をあたえましょう。
Sevabotがいるチャットルームで, !reload というコマンドを実行して全コマンドをリロードしましょう。
myscript がコマンド一覧に追加され、 !myscript と入力するとコマンドが実行できるようになるはずです。
なお、上記のスクリプトの実行時にはSKYPE_USERNAME, SKYPE_FULLNAMEという環境変数が追加されます。

Webインタフェースを経由してメッセージを受け取る

同梱されているexamples/send.shを見ると分かる通り、下記の3つのパラメータをURLにpostするとSevabotが受け取ってSkypeに転送します。

URL - http://HTTP_HOST:HTTP_PORT/msg/

msgの後のスラッシュがないと受け付けません。

chat - チャットルームのID
msg - メッセージ本文
md5 - chatとmsgとshared_secretを連結してmd5を計算したもの

これであなたもSkypeBotライフが楽しめます!是非おためしください。