Nabaztagと戯れる。の補足。

Nabaztagと戯れる(その1)で書いた記事にコメントを頂いたので補足。


このときの書き方は非常にまずくて自分で書いたNabaztagの制御用APIにアクセスするラップクラスを載せていなかったのでこのままでは実行できません。
まず、ここではPEARのHTTP_Clientを使っているので、もし現在インストールされていなければインストールが必要です。
未インストールの場合は次の様に入力すればOKになります。

$ pear install --alldeps HTTP_Client

で、前回requireしていた"Nabaztag.php"は、以下の様な内容でした。
やっていることは...全然たいしたことはしていなくて、Nabaztagの公開されているAPIにHTTPでアクセスを行うという内容です。
いま思えば、わざわざHTTP_Client使わなくてもいいんじゃない?という気もするけど...。(GETしてるだけだし...)


ともあれ、下のソースを参照できる場所に置いてもらって以前の記事のソースを実行すれば、側にいるウサギが喋る。か、ポッドキャストを再生するはずです。
ちなみにserialとtokenには、http://my.violet.net/からログインして、割り当てられているシリアルナンバーとトークンナンバーを入力すればOKです。
それぞれのナンバーは、操作したいNabaztagで、登録アプリの設定→エコシステムのタブを選択で表示されます。
f:id:hideack:20091031012319j:image
あと、大変に重要な事ですが、これNabaztagを買ったときの勢いで書いてそれっきりなので、エラーも何もみていません。
日本語しかウサギにしゃべらせられません。等々いろいろありますが、あらかじめご了承くださいませ。
NabaztagAPIは他にもいろいろあるので多少まともにすべく、手を加えたいところです。
あいかわらず大雑把ですがご参考まで。


[]2009/11/8 掲載時のコピペミスで一部削れていた点を修正

<?php
require_once("HTTP/Client.php");

// Nabaztag.php
class Nabaztag
{
  private $serial;
  private $token;
  private $httpclient;
	
  // --- Nabaztag Web APIの位置
  private $api;
  private $streamapi;

  function __set($name, $value){
    switch($name){
      case "serial":	$this->serial = $value;	break;
      case "token":	$this->token  = $value;	break;
      default: break;
    }
  }

  public function __construct(){
    $this->httpclient =& new Http_Client();
    $this->api       = "http://api.nabaztag.com/vl/FR/api.jsp?sn=%s&token=%s&";
    $this->streamapi = "http://api.nabaztag.com/vl/FR/api_stream.jsp?sn=%s&token=%s&";
  }

  public function say($message){
    $message = urlencode($message);

    $command = sprintf(
      $this->api."voice=JP-Tamura&tts=%s",
      $this->serial,
      $this->token,
      $message
    );

    $this->httpclient->get($command);
  }

  public function playMp3($list){
    $command = sprintf(
      $this->streamapi."urlList=%s",
      $this->serial,
      $this->token,
      $list
    );

    $this->httpclient->get($command);
  }
}
?>