2007年05月16日
Twitterとセカンドライフを連携(1)
twitterSample links
とりあえず、話題のTwitterなるものに手を出してみたところ
案外簡単にAPIがたたける模様なので、セカンドライフ内のアイテムと連携するサンプルを作ってみました。
Twitterというのはメッセの一行コメントを記録していくSNSのようなものです…説明あってるかな?;;
自分が”今何をしているか”を随時更新していき、友達に知らせます。
で、だからTwitterって何よ?という人は、
"世界のアイデアを今日も、明日も、明後日も"の100SHIKIさん
のエントリーなどを読むと良いかと思います。
確か自分はこのページを見て知ったのですが、最近まで食わず嫌いでした。
いや、まだあまり食ってませんが。
これがサンプルアイテムです!
今回ひどい見た目ですが…気にしてはいけません。
遊べる時間が少なくなってきまして…。
このアイテムにタッチした人が、それから30秒以内に入力したメッセージを元に
ユーザページの"What are you doing?(いましている事)"を更新します。
ギャラリーにおいてあります。
テストしたいので、お手すきの方は使ってみてください。
あ、でも、変なことは書かないようにお願いします。
11:15追記
動かないと報告をもらったので、
知り合いに試してもらいましたが、ちゃんと動くようです。
操作が難しいのかなあ。
十分にボールに近寄ってからタッチして、
Waiting someone's chat message..
The chat message will be sent to twitter!
(Type just 'cancel' for cancellation)"
と出ているときにメッセージを打ち込んでみてください。
では、映像で確認どうぞ。
とりあえず、話題のTwitterなるものに手を出してみたところ
案外簡単にAPIがたたける模様なので、セカンドライフ内のアイテムと連携するサンプルを作ってみました。
Twitterというのはメッセの一行コメントを記録していくSNSのようなものです…説明あってるかな?;;
自分が”今何をしているか”を随時更新していき、友達に知らせます。
で、だからTwitterって何よ?という人は、
"世界のアイデアを今日も、明日も、明後日も"の100SHIKIさん
のエントリーなどを読むと良いかと思います。
確か自分はこのページを見て知ったのですが、最近まで食わず嫌いでした。
いや、まだあまり食ってませんが。
これがサンプルアイテムです!
今回ひどい見た目ですが…気にしてはいけません。
遊べる時間が少なくなってきまして…。
このアイテムにタッチした人が、それから30秒以内に入力したメッセージを元に
ユーザページの"What are you doing?(いましている事)"を更新します。
ギャラリーにおいてあります。
テストしたいので、お手すきの方は使ってみてください。
あ、でも、変なことは書かないようにお願いします。
11:15追記
動かないと報告をもらったので、
知り合いに試してもらいましたが、ちゃんと動くようです。
操作が難しいのかなあ。
十分にボールに近寄ってからタッチして、
Waiting someone's chat message..
The chat message will be sent to twitter!
(Type just 'cancel' for cancellation)"
と出ているときにメッセージを打ち込んでみてください。
では、映像で確認どうぞ。
このようにタッチしてチャットで発言をすると
twitterのharakiriさんのページが更新されます。
悪意あるいたずら防止のため、操作したアバタの名前も記入されるようにしました。
下記がこのアイテムのソースです。
合間に自前で用意したphpをはさんでtwitterのAPIをたたきます。
うまい事やれば、phpをはさまなくてもできるかも…
別途自分が製作したhttpRequestモジュールが必要なのですが、
バグが取れていないのでまだ公開していません。
とりあえずの参考までに。
string avName;
string message;
string user = "harakiri";
string pass = "********";//パスワードは秘密
string CGI_URL="http://***.***/********.php";//phpの場所もまだ秘密
string TWITTER_URL = "http://twitter.com/";
float hearingTime = 30;
SetText(string s){
llSetText(s,<1,1,1>,1);
}
integer IsEvent(string s,string ev){
return (llSubStringIndex(s+" ",ev)==0);
}
Jump(){
llPlaySound("3581b84f-3e01-c107-e887-66da94dff9a1",1.0);
vector pos = llGetLocalPos();
llSetPos(pos+<0,0,0.1>);
llSleep(0.25);
llSetPos(pos);
llSleep(0.25);
}
Move(integer bOn){
if(bOn){
//llSetPrimitiveParams([PRIM_PHYSICS, TRUE]);
llTargetOmega(<0,0,1>,5,1);
}else{
//llSetPrimitiveParams([PRIM_PHYSICS, FALSE]);
llTargetOmega(<0,0,1>,0,1);
}
}
default{
state_entry(){
SetText("Touch me to update twitter status.");
Move(TRUE);
}
on_rez(integer num){
llResetScript();
}
touch_start(integer num){
avName = llDetectedName(0);
state hearing;
}
}
state hearing{
state_entry(){
SetText("Waiting "+avName+"'s chat message..\nThe chat message will be sent to twitter!\n(Type just 'cancel' for cancellation)");
llPlaySound("00c309ad-8fb5-d269-d75d-3b06fdc7953d",1.0);
llListen(0,avName,"","");
llSetTimerEvent(hearingTime);
Move(FALSE);
}
listen(integer ch,string name,key id,string mes){
if(mes=="cancel"){
state default;
}
message = mes;
state post;
}
timer(){
state default;
}
}
state post{
state_entry(){
SetText("Now Sending message to twitter...");
string mes = "[FROM SECONDLIFE] "+avName+" said : "+message;
string url = CGI_URL+"?user="+llEscapeURL(user)+"&password="+llEscapeURL(pass)+"&message="+llEscapeURL(mes);
llMessageLinked(LINK_THIS,0,"harayoki.httpReqPost "+url,NULL_KEY);
}
link_message(integer sender,integer bOn,string str,key id){
string httpReqEvent = "harayoki.event.httpResponse";
if(!IsEvent(str,httpReqEvent)) return;
if(bOn){
string res = llGetSubString(str,llStringLength(httpReqEvent)+1,-1);
if(llSubStringIndex(res,"success")!=-1){
llSay(0,"Successed!");
llSay(0,"Check "+user+"'s twitter home page:\n"+TWITTER_URL+user);
Jump();
}else{
llSay(0,"some error has occurred : \n"+res);
}
}else{
llSay(0,"http request failure.");
}
state default;
}
}
Posted by harayoki at 03:57│Comments(9)
│Twitterボール
この記事へのコメント
はじめまして♪
twitterやってるので試してみたんですけど、
なんか上手くできなかったっぽいです???
twitterやってるので試してみたんですけど、
なんか上手くできなかったっぽいです???
Posted by yuko at 2007年05月16日 05:47
あ、早速ありがとうございます。
更新されるのは誰が操作しても
自分(harakiriさん)のページです。
http://twitter.com/harakiri
あれ、やっぱり更新されてませんね。
何かおかしいかな。
Twitterのサーバが重いのかも知れないのでもうちょっと様子見てみますね。
更新されるのは誰が操作しても
自分(harakiriさん)のページです。
http://twitter.com/harakiri
あれ、やっぱり更新されてませんね。
何かおかしいかな。
Twitterのサーバが重いのかも知れないのでもうちょっと様子見てみますね。
Posted by harayoki at 2007年05月16日 06:01
おぉ、これまた旬なチャレンジw
僕もTwitterやっているんで、こういったトライは非常に興味深いです!
なんかうまく動作しないみたいですが、がんばってください!
僕もTwitterやっているんで、こういったトライは非常に興味深いです!
なんかうまく動作しないみたいですが、がんばってください!
Posted by Tack Rang at 2007年05月16日 08:42
旬ですね。
今はstatusの変更しかできませんが、
おだてられるといろいろできるようにしてしまうかも…。
ちょい忙しいのですが。
しかしなんで動かないんだろ。
自分がやると動くんですよね。
今はstatusの変更しかできませんが、
おだてられるといろいろできるようにしてしまうかも…。
ちょい忙しいのですが。
しかしなんで動かないんだろ。
自分がやると動くんですよね。
Posted by harayoki at 2007年05月16日 09:07
うーん、自分以外でも動くみたいです。
やっぱtwitterのサーバが重かったのかな??
やっぱtwitterのサーバが重かったのかな??
Posted by harayoki at 2007年05月16日 11:17
他にもTwitter関連の記事を書かれていた方がいらっしゃいましたが
ソースを書いて頂けるとは〜嬉しい〜('-'*)
ほんといつもありがとうございますっ
API仕様は見てみたので、ちょっと挑戦してみま〜す
ソースを書いて頂けるとは〜嬉しい〜('-'*)
ほんといつもありがとうございますっ
API仕様は見てみたので、ちょっと挑戦してみま〜す
Posted by Nitaro at 2007年05月16日 18:26
まあ、動いてないかもって話なんですが…。
ソースは自分の為に公開しています。
他人に公開すると質が1レベルあがるんですよね。間違いがあれば指摘もらえますし。
復習にもなるし、しばらくすると作りを自分でも忘れちゃうので。
それで他人の為にもなるのだからいい事多いです。
ソースは自分の為に公開しています。
他人に公開すると質が1レベルあがるんですよね。間違いがあれば指摘もらえますし。
復習にもなるし、しばらくすると作りを自分でも忘れちゃうので。
それで他人の為にもなるのだからいい事多いです。
Posted by harayoki at 2007年05月16日 23:20
はじめまして、ここ見つけてすごいコンテンツの量だな~とびっくりしました。こんな前のコンテンツにコメント書くのは変ですがw、ソースは自分の為に公開しています~~~のところがやはり気になりここに書き込んでしまいました。私は正直短時間で書いているのであまり綺麗でない&後々面倒かもということからあまりソースコードはブログで書かなかったのですが、なるほどそういう考えもあるかと思ったしだいです。
ん~以後ちょっと考え方が変わりそうです。
ところでソース見てて感じたのですが
リンクメッセージとかの定義がオブジェクト
指向チックなのはやはり結構リアルで
ソースを書かれている方なのかなと思ったりもしましたw
リンクメッセージの定義とかモジュール化で
悩み始めたところなので参考にさせていただきます♪
機会があればインワールドのどこかでお会いできたらうれしいです。
ではでは~
ん~以後ちょっと考え方が変わりそうです。
ところでソース見てて感じたのですが
リンクメッセージとかの定義がオブジェクト
指向チックなのはやはり結構リアルで
ソースを書かれている方なのかなと思ったりもしましたw
リンクメッセージの定義とかモジュール化で
悩み始めたところなので参考にさせていただきます♪
機会があればインワールドのどこかでお会いできたらうれしいです。
ではでは~
Posted by NIT Dinzeo at 2007年10月31日 16:06
NITさんこんにちは
このしょぼい記事にコメントついててびっくりしました。
ソースコード以外(モデリングとか)も恥をさらすつもりで書いております…。
リアルプログラマではないですが、FlashのActionScriptはかなりいじりました。
ECMAscriptベースでJavaの方向を目指した感じの言語ですね。
魅せるためのscriptという点ではとてもlslと似ています。
このしょぼい記事にコメントついててびっくりしました。
ソースコード以外(モデリングとか)も恥をさらすつもりで書いております…。
リアルプログラマではないですが、FlashのActionScriptはかなりいじりました。
ECMAscriptベースでJavaの方向を目指した感じの言語ですね。
魅せるためのscriptという点ではとてもlslと似ています。
Posted by harayoki at 2007年11月04日 11:51