LoginSignup
76
82

More than 5 years have passed since last update.

SkypeにBotを作ろう(Sevabot導入)

Last updated at Posted at 2013-05-06

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

Sevabotを選んだ理由

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

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

Sevabotとは

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

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

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

  • GUIセッションがいる
  • SevabotのためのSkypeアカウントがいる

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

Sevabotのセットアップ

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

  1. Skypeのインストール
  2. Sevabotのインストール
  3. Skypeの起動、アカウント設定
  4. Sevabotの設定
  5. 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の起動

$ sevabot

コマンドの作り方

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

  • Shellスクリプト
  • Python, Ruby等など

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

  1. 自作コマンドを置くための custom/ というフォルダを作りましょう。
  2. customをsettings.pyのMODULE_PATHに追加しましょう。
  3. 下記のようにcustomフォルダの下にmyscript.shを作成しましょう。
#!/bin/sh
echo "Hello world from my sevabot command"
  1. chmod u+x myscript.sh として、実行権限をあたえましょう。
  2. Sevabotがいるチャットルームで, !reload というコマンドを実行して全コマンドをリロードしましょう。
  3. 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を計算したもの

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

76
82
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
76
82