« UStream Producerで別のMacの画面を放送 | メイン | iPhoneのマイク入力コネクタ »

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ってことで、ご自由にお使いください〜!!

コメント

コメントを投稿

最近のトラックバック

オヤマ日記飴

jun's Blog in English

Powered by Six Apart

nobi.com (JP)