ソーシャルストリーム用 API

ソーシャルストリームを読む

ソーシャルストリームメッセージは、単純なHTTP GETリクエストで取得することができます。 OAuth2認証は必要ないので、"Authorization"ヘッダは送らないようにしてください。

初回のソーシャルストリームリクエスト

初回のソーシャルストリームリクエストでは、以下のようなHTTP GET リクエストを実行するようにしてください。:

http://socialstream.ustream.tv/socialstream/get.json/CHANNEL_ID/default

CHANNEL_ID の値にはチャンネル一覧でサーバから取得できる"id"と同じ値を設定します。



戻り値はJSON形式の文字列になります。:

{
  "success":true,
  "refreshInterval":10,
  "range":[0,1302176480],
  "payload":[
	{
	  "uid":1
	  "type":"msg",
	  "text":"MESSAGE_TEXT",
	  "createdAt":"UTC_TIMESTAMP",
	  "isOwner":0,
	  "profilePictureUrl":"http://static.ustream.tv/na.jpg",
	  "profileNetwork":"twitter",
	  "profileUserName":"Gyula",
	  "network":[
		{
		  "provider":"twitter",
		  "displayName":"Gyula"
		}
	  ]
	}
  ]
}

ソーシャルストリームメッセージは、"payload"配列の中に辞書型の形で入っています。メッセージの各要素以下の通り:

名前 説明
uid メッセージの識別子
type ソーシャルストリームメッセージの場合は"msg" となります。他のメッセージタイプについてはセクション 5.1.3.を参照してください。
createdAt このメッセージのタイムスタンプ(UTC形式)
isOwner このチャンネルの所有者のメッセージであれば1が入ります。そうでなければ0が入ります。
profilePictureUrl メッセージ送信者のプロフィール写真
profileNetwork このメッセージがどのSNSで書き込まれたものなのかを表します。 "twitter", "facebook", "ustream"といった設定値をサポートしています。
profileUserName 送信者が、メッセージを発信したSNS上で使っているユーザー名
network このユーザーが所属しているSNSの一覧を配列型の値で表します。network内の"provider"要素には、SNSの種類が保持されています。("twitter", "facebook", "ustream"といった設定値をサポートしています), "displayName"要素には、メッセージ送信者のSNS上の名前が保持されています。

新しいソーシャルストリームメッセージがないか問い合わせる

ソーシャルストーリームリクエストを初期化するのは、セッション開始時のみに限定したほうが良いです(ソーシャルストーリームリクエストの初期化については前項を参照)。 初回のリクエストをした後は、時間を置いて定期的に、ソーシャルストリームへの新規問い合わせをする必要があります。:

http://socialstream.ustream.tv/socialstream/get.json
/CHANNEL_ID/timeslice/RANGE/REFRESH_INTERVAL

"RANGE"パラメータには直前のリクエストで取得した"range"配列の、二番目の値を設定します(例 "range":[0,1302176480])。 "REFRESH_INTERVAL" パラメータには直前のリクエストで取得した "refreshInterval" の値を設定します。(例 "refreshInterval":10

このクエリの応答はチャプター5.1.1で説明したものと同じ形式になります。 クライアントは、加えて以下のことに気をつける必要があります。:

  • 更新間隔(Refresh_interval)はセッションの間でも変更することができます。 クライアントは、サーバからの応答に設定されている更新間隔に合わせて変更する必要があります。
  • 時間ズレを防ぐため、クライアントは最初に取得した"range"値を開始時間として保存し、リクエストする時間間隔を正しく調整する必要があります。
  • 例: if the first timestamp is 1000 (queried at START_TS) and the client is currently requesting /timeslice/1100/10) which contains a refreshInterval=5, it should query the next timeslice (/timeslice/1110/5) at ts=START_TS+110

特殊なソーシャルストリームメッセージ

"payload" セクションは、追加で以下のようなメッセージも保持することも可能です:

ソーシャルストリームのホストを変更する:

このメッセージを受信した場合、次のクエリからは新しいサーバに対して実行する必要があります:

{
	"type": "host",
	"host": "http://socialstream2.ustream.tv"
}

メッセージを無視する:

このメッセージを受信した場合、クライアントでは指定されたメッセージをチャットウィンドウから削除する必要があります。:

{
	"type": "ignMsg",
	"uid": "123456"
}

ユーザーを無視する:

このメッセージを受信した場合、クライアントはチャットウィンドウから指定されたユーザーの全てのメッセージを削除し、 以降は同様に全てのメッセージを無視する必要があります。:

{
	"type": "ignUser",
	"network": [{"provider":"twitter", "displayName":"Gyula"}]
}

ユーザーを無視しない:

このメッセージを受信した場合、クライアントでは指定されたユーザの以降のメッセージをチャットウィンドウに表示させるようにする必要があります:

{
	"type": "unIgnUser",
	"network": [{"provider":"twitter", "displayName":"Gyula"}]
}

ソーシャルストリームへ書き込む

サードパーティでは、現在ソーシャルストリームへメッセージを送ることができません。