2010年2月 4日 (木)

Skypeで電話するスクリプト

@himanaiku_kawai さんの「特定の人からメールが着信するとスカイプからケータイに電話かけてくれる機能欲しい。。」というtwittを見て、ちょっと作ってみました。MacならAppleScriptで簡単に実装できんじゃない?と思って調べてみたら、次の1行で済んじゃいました。

tell app "Skype" to send command "CALL echo123" script name "SkypeCall"

echo123のところを目的の電話番号(日本なら+81で始めて最初の0は削除した番号列)に変更すればOKです。あとは、このスクリプトをScript Editorでスクリプトとして保存して、Mail.appなりでフィルタに特定のメールアドレスでAppleScriptが起動するようにルールを設定すれば良いだけですね。が、それだと確かに電話は掛かってくるんですが、無言のイタズラ電話状態なので、なんか寂しいですよねぇ。ってことで、ちゃんと繋がったのを確認して、特定の音声ファイルを再生するようにしてみました。

tell application "Skype"
  copy word 2 of (send command "CALL echo123" script name "SkypeCall") to callid
  repeat
    copy word 4 of (send command "GET CALL " & callid & " STATUS" script name "SkypeCall") to callStatus
    if callStatus is "INPROGRESS" then exit repeat
    if callStatus is in {"REFUSED", "CANCELLED", "FINISHED", "MISSED", "BUSY"} then return
  end repeat
  send command "ALTER CALL " & callid & " SET_INPUT file=" & quote & "/path/to/soundfile.wav" & quote script name "SkypeCall"
 
  tell application "Finder" to delay 30
 
  send command "SET CALL " & callid & " STATUS FINISHED" script name "SkypeCall"
end tell

右がちょっと切れてますので、ソースはScript Editorにペーストしてコンパイルしてからゆっくり眺めてください。

同じく、echo123は適宜電話番号に置き換えてください。さらに/path/to/soundfile.wavを再生する音声ファイルにして、その音声ファイルの長さに合わせてdelayコマンドのパラメータの30秒の部分を修正してください。Skypeが対応している音声ファイルは16k sample/sec、16bitのWavファイルだけしか受け付けてくれないようです。

script nameパラメータは何でも良いんですが、スクリプト内で一貫させておいてください。あと、最初に実行した時にSkypeの方でコマンドを受け付けても良いか聞かれるので、許可してあげてください。

はたしてニーズがあるのかどうか分かりませんけど、せっかく作ったんで公開しておきます。なかなかSkypeのスクリプトも色んな事出来そうなのが分かったので、今後もなんか作るかもしれませんし、興味を持って調べて何かもっと使い手のあるものでも作ってもらえると嬉しいかなと思います。ライセンスはBSDってことで、ご自由にお使いください〜!!

UStream Producerで別のMacの画面を放送

UStream ProducerがPro版とFree版が出て不安定なFlash君無しで中継が出来るのは嬉しいところです。11月からTMUGのUStream録画(中継は回線が不安なので、ブツ切れしないように録画にしている)をやっていて、色々と改善したい点があったりするわけですが、その一つがプレゼン画面をカメラで写さないで、直接スクリーンキャプチャから持ってこれないか?ってところでした。それが出来ると、プレゼン画面やアプリの操作画面をメインにして、プレゼンターの姿を小さくPicture in Pictureで表示できるわけで、とってもリッチで嬉しいわけです。

Pro版を買うほどの事もないので、まずはFree版での実験をして無事成功したので、手順を公開します。

Screencastを選ぶと、Desktop Presenterというソフトが別に立ち上がります。これが鍵ですね。このアプリの本体はUStream Producer.appのパッケージを開くと、Contents/Resourcesの中に入っています。

31 2

予想した通りUStream ProducerとはTCP/IPの7272番ポートで接続するような仕様みたいです。netstatで見てやると*.7272でLISTENしています。

ということで、若干の実験を経てLocalで立ち上がってるDesktop Presenterと区別がつかなければOKなんじゃないかと予想を立てて、別のMacでDesktop Presenterを立ち上げて、さらにsshでport fowardをかけてみたところバッチリ繋がりました。

最初は放送側のMacからssh -Lでプレゼン側のMacに繋いだんですが、これだといちいちプレゼンする人にsshで入れるアカウントを用意してもらわないといけなかったりとややこしい事になるので、ssh -Rでプレゼン側のMacから放送側のMacにport forwardすることに変更しました。これでもtcp的な見た目は同じ事なので無事繋がります。

では、細かい手順を説明して行きましょう。まずはUStream Producerも何も立ち上げない状態から始めます。

  1. まずは放送側のMacにリモートログイン出来るように設定します。システム環境設定の共有でリモートログインのチェックをオンにしてやります。
    3
  2. 次に、放送側とプレゼン側の2台のMacのIPアドレスのうち同じネットワークにあるIPアドレスを調べます。両者が無線LANの同じ基地局で繋がっているのであれば、無線LANのポートに付いているアドレスですね。放送側のアドレスだけで大丈夫です。プレゼン側は繋がらないなどの現象があった場合にトラブルシューティングとして調べればOKです。同じくシステム環境設定のネットワークを選んでEthernetならば左のリストからEtherを選べばアドレスも表示されますが、AirMacの場合は詳細...ボタンを押して更にTCP/IPタブを選んでください。この例の場合は192.168.10.125になります。
    4
  3. さて、次はプレゼン側に移ります。アプリケーションフォルダのユーティリティフォルダに入っているTerminalを立ち上げます。ここに以下のようなコマンドを打ちます。
    ssh -N -R 7272:127.0.0.1:7272 test@192.168.10.125
    ここで、testの部分は放送側のMacにログイン出来るログイン名に適宜置き換えてください。すると、こんな風にPasswordを要求してきますので、放送側のMacのログインパスワードを入力します。この時にキーインしても何も表示されませんので、確実に一気に入力してください。間違えた場合は再度パスワードを要求されます。パスワードの前にAuthenticationがどうのこうのと言ってくる場合もあるかもしれませんが、その場合にはyesと入力してください。
    5
  4. これで、無事繋がっているハズですので、Terminalは放置して、Desktop Presenter.appをプレゼン側のMacにコピーして立ち上げます。プレゼン側のMacのIPアドレスがこの場合は192.168.10.12になっています。
    6
  5. さて、ここでやっとUStream Producerを立ち上げます。適宜ログインを済ませてScreencastボタンからAdd New Screen Recording Shotを選ぶと下にScreencastの選択肢が出てくるはずです。で、その画面はプレゼン側のMacの画面になっているはずです。

ということでいかがでしょう?無事繋がりましたか?あとはUStream Producerの使いこなしの話しになってしまうので、それは他の方にお任せしま〜す。

ちなみに、こうやって一度設定してあげると、sshのコネクションを切っても再接続すれば大丈夫です。ということで、プレゼンする人が変わる時には、再度そちらのマシンからsshコマンドを打ってあげれば良い事になります。もちろん元のプレゼンターからの接続は先に切っておかないといけませんので、前のプレゼンが終わったら固まっているように見えるTerminalでCtrlキーを押しながらcのキーを押します。それでプロンプトが戻ってくるはずですので、切断に成功した事になります。

<2010.2.5追記>Windowsでのプレゼンも放送できた方が嬉しいと思うので、Windowsからもやってみました。同様にssh -Rでの接続(sshはCygwinで入れました)で無事放送できました。他にもPort forward用のソフトはあったと思うので、Cygwinにsshをインストールしてない場合もそう言ったソフトを入れれば良いんじゃないでしょうか。ちなみに、Desktop Presenter.exeはC:\Program Files\Ustream\Ustream Producer\rsrc\に入ってました。

最近のトラックバック

オヤマ日記飴

jun's Blog in English

Powered by Six Apart

nobi.com (JP)