==================================================== GS2-Chat ==================================================== **Create Client** .. code-block:: lua chat_client = client('chat') .. contents:: 目次 :local: :depth: 2 Method ==================================================== ---------------------------------------------------- check_estimate_scan_byte_by_all_room ---------------------------------------------------- .. code-block:: lua response = chat_client:check_estimate_scan_byte_by_all_room(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end メッセージ検索時にスキャンするログサイズの予測値を取得します。 長期にわたる検索を行う場合、事前におおよそのログスキャン容量を把握したいと思うはずです。 そのような場合にはこのAPIを使用することで、事前にログスキャン容量を把握することが出来ます。 ただし、ここで得られる値はあくまで予測値であり、実際に実行した際の値とは異なる場合があります。 Request ---------------------------------------------------- .. include:: control/CheckEstimateScanByteByAllRoomRequest.rst Response ---------------------------------------------------- .. include:: control/CheckEstimateScanByteByAllRoomResult.rst ---------------------------------------------------- check_estimate_scan_byte_by_room ---------------------------------------------------- .. code-block:: lua response = chat_client:check_estimate_scan_byte_by_room(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end メッセージ検索時にスキャンするログサイズの予測値を取得します。 長期にわたる検索を行う場合、事前におおよそのログスキャン容量を把握したいと思うはずです。 そのような場合にはこのAPIを使用することで、事前にログスキャン容量を把握することが出来ます。 ただし、ここで得られる値はあくまで予測値であり、実際に実行した際の値とは異なる場合があります。 Request ---------------------------------------------------- .. include:: control/CheckEstimateScanByteByRoomRequest.rst Response ---------------------------------------------------- .. include:: control/CheckEstimateScanByteByRoomResult.rst ---------------------------------------------------- create_lobby ---------------------------------------------------- .. code-block:: lua response = chat_client:create_lobby(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end ロビーを新規作成します GS2-Chat の使用を開始するには、まずはロビーを作成します。 ロビーはチャットルームの集合体のような存在です。 ロビーへの設定項目として購読しているルームに発言があったときの通知方式を指定できます。 http/https を設定した場合は、新しい発言があるたびに指定されたURLに通知を出します。 通知は以下のフォーマットで通知されます。 { "_gs2_service": "GS2-Chat#Receive", "notificationUserIds": [ 通知先ユーザID ], "roomId": 発言されたルームID, "userId": 発言したユーザのユーザID, "message": { "text": メッセージテキスト, "meta": メタデータ, } } GS2-InGamePushNotification を指定した場合は、新しい発言があるたびにプッシュ通知を出します。 通知は以下のフォーマットで通知されます。 { "subject": メッセージテキスト, "body": { "_gs2_service": "GS2-Chat#Receive", "roomId": 発言されたルームID, "userId": 発言したユーザのユーザID, "message": { "text": メッセージテキスト, "meta": メタデータ, } } } Request ---------------------------------------------------- .. include:: control/CreateLobbyRequest.rst Response ---------------------------------------------------- .. include:: control/CreateLobbyResult.rst ---------------------------------------------------- create_my_subscribe ---------------------------------------------------- .. code-block:: lua response = chat_client:create_my_subscribe(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end ルームを購読します。 ルームを購読すると、ルームに対する新着メッセージを受信したときに通知を受けることが出来ます。 通知方式はロビーの設定に依存します。 Request ---------------------------------------------------- .. include:: control/CreateMySubscribeRequest.rst Response ---------------------------------------------------- .. include:: control/CreateMySubscribeResult.rst ---------------------------------------------------- create_room ---------------------------------------------------- .. code-block:: lua response = chat_client:create_room(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end ルームを作成します ルームには参加可能なユーザIDリストを設定することが出来ます。 ここで指定されたユーザID以外のユーザがメッセージ情報を取得したり、メッセージを書き込もうとしても失敗するようになります。 何も指定しなければ、誰でも読み書きの出来る部屋になります。 ルームを作成する際に参加するユーザが確定している場合に使用するといいでしょう。 ルームにはパスワードを設定することが出来ます。 パスワードが設定されたルームのメッセージ情報を取得したり、メッセージを書き込もうとするさいにパスワードを指定する必要があります。 パスワードが一致しない場合は失敗します。 何も指定しなければ、メッセージの読み書きにパスワードを要求しません。 ルームを作成する際には参加するユーザが確定できないけれど、アクセスを制限したい場合に使用するといいでしょう。 ルームIDには任意の値を指定することが出来ます。 たとえば、マッチメイキングを実行し構築されたギャザリングのユーザ向けにチャットルームを提供したい場合、 ギャザリングIDをキーとしてルームを作成することで、クライアントがチャットにアクセスする際にIDの特定が容易になります。 ルームIDを省略するとUUIDv4に基づいて自動的に採番されます。 Request ---------------------------------------------------- .. include:: control/CreateRoomRequest.rst Response ---------------------------------------------------- .. include:: control/CreateRoomResult.rst ---------------------------------------------------- create_subscribe ---------------------------------------------------- .. code-block:: lua response = chat_client:create_subscribe(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end ルームを購読します。 ルームを購読すると、ルームに対する新着メッセージを受信したときに通知を受けることが出来ます。 通知方式はロビーの設定に依存します。 Request ---------------------------------------------------- .. include:: control/CreateSubscribeRequest.rst Response ---------------------------------------------------- .. include:: control/CreateSubscribeResult.rst ---------------------------------------------------- delete_lobby ---------------------------------------------------- .. code-block:: lua response = chat_client:delete_lobby(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end ロビーを削除します Request ---------------------------------------------------- .. include:: control/DeleteLobbyRequest.rst Response ---------------------------------------------------- None ---------------------------------------------------- delete_my_subscribe ---------------------------------------------------- .. code-block:: lua response = chat_client:delete_my_subscribe(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end 購読を解除する。 Request ---------------------------------------------------- .. include:: control/DeleteMySubscribeRequest.rst Response ---------------------------------------------------- None ---------------------------------------------------- delete_room ---------------------------------------------------- .. code-block:: lua response = chat_client:delete_room(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end ルームを削除します Request ---------------------------------------------------- .. include:: control/DeleteRoomRequest.rst Response ---------------------------------------------------- None ---------------------------------------------------- delete_subscribe ---------------------------------------------------- .. code-block:: lua response = chat_client:delete_subscribe(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end 購読を解除する。 Request ---------------------------------------------------- .. include:: control/DeleteSubscribeRequest.rst Response ---------------------------------------------------- None ---------------------------------------------------- describe_lobby ---------------------------------------------------- .. code-block:: lua response = chat_client:describe_lobby(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end ロビーの一覧を取得します Request ---------------------------------------------------- .. include:: control/DescribeLobbyRequest.rst Response ---------------------------------------------------- .. include:: control/DescribeLobbyResult.rst ---------------------------------------------------- describe_message ---------------------------------------------------- .. code-block:: lua response = chat_client:describe_message(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end メッセージの一覧を取得します。 Request ---------------------------------------------------- .. include:: control/DescribeMessageRequest.rst Response ---------------------------------------------------- .. include:: control/DescribeMessageResult.rst ---------------------------------------------------- describe_message_no_auth ---------------------------------------------------- .. code-block:: lua response = chat_client:describe_message_no_auth(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end メッセージの一覧を取得します。 Request ---------------------------------------------------- .. include:: control/DescribeMessageNoAuthRequest.rst Response ---------------------------------------------------- .. include:: control/DescribeMessageNoAuthResult.rst ---------------------------------------------------- describe_my_subscribe ---------------------------------------------------- .. code-block:: lua response = chat_client:describe_my_subscribe(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end ユーザが購読しているルームの一覧を取得します。 Request ---------------------------------------------------- .. include:: control/DescribeMySubscribeRequest.rst Response ---------------------------------------------------- .. include:: control/DescribeMySubscribeResult.rst ---------------------------------------------------- describe_room ---------------------------------------------------- .. code-block:: lua response = chat_client:describe_room(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end ルームの一覧を取得します。 Request ---------------------------------------------------- .. include:: control/DescribeRoomRequest.rst Response ---------------------------------------------------- .. include:: control/DescribeRoomResult.rst ---------------------------------------------------- describe_service_class ---------------------------------------------------- .. code-block:: lua response = chat_client:describe_service_class(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end サービスクラスの一覧を取得します Request ---------------------------------------------------- .. include:: control/DescribeServiceClassRequest.rst Response ---------------------------------------------------- .. include:: control/DescribeServiceClassResult.rst ---------------------------------------------------- describe_subscribe_by_room_id ---------------------------------------------------- .. code-block:: lua response = chat_client:describe_subscribe_by_room_id(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end ルームを購読しているユーザの一覧を取得します。 Request ---------------------------------------------------- .. include:: control/DescribeSubscribeByRoomIdRequest.rst Response ---------------------------------------------------- .. include:: control/DescribeSubscribeByRoomIdResult.rst ---------------------------------------------------- describe_subscribe_by_user_id ---------------------------------------------------- .. code-block:: lua response = chat_client:describe_subscribe_by_user_id(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end ユーザが購読しているルームの一覧を取得します。 Request ---------------------------------------------------- .. include:: control/DescribeSubscribeByUserIdRequest.rst Response ---------------------------------------------------- .. include:: control/DescribeSubscribeByUserIdResult.rst ---------------------------------------------------- get_lobby ---------------------------------------------------- .. code-block:: lua response = chat_client:get_lobby(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end ロビーを取得します Request ---------------------------------------------------- .. include:: control/GetLobbyRequest.rst Response ---------------------------------------------------- .. include:: control/GetLobbyResult.rst ---------------------------------------------------- get_lobby_status ---------------------------------------------------- .. code-block:: lua response = chat_client:get_lobby_status(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end ロビーの状態を取得します Request ---------------------------------------------------- .. include:: control/GetLobbyStatusRequest.rst Response ---------------------------------------------------- .. include:: control/GetLobbyStatusResult.rst ---------------------------------------------------- get_my_subscribe ---------------------------------------------------- .. code-block:: lua response = chat_client:get_my_subscribe(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end 購読情報を取得する。 Request ---------------------------------------------------- .. include:: control/GetMySubscribeRequest.rst Response ---------------------------------------------------- .. include:: control/GetMySubscribeResult.rst ---------------------------------------------------- get_room ---------------------------------------------------- .. code-block:: lua response = chat_client:get_room(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end ルームを取得します Request ---------------------------------------------------- .. include:: control/GetRoomRequest.rst Response ---------------------------------------------------- .. include:: control/GetRoomResult.rst ---------------------------------------------------- get_subscribe ---------------------------------------------------- .. code-block:: lua response = chat_client:get_subscribe(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end 購読情報を取得する。 Request ---------------------------------------------------- .. include:: control/GetSubscribeRequest.rst Response ---------------------------------------------------- .. include:: control/GetSubscribeResult.rst ---------------------------------------------------- search_log_by_all_room ---------------------------------------------------- .. code-block:: lua response = chat_client:search_log_by_all_room(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end メッセージログを検索します。 メッセージログの検索には以下のパラメータを使用できます。 * ユーザID * メッセージテキスト * メッセージメタデータ いずれも部分一致で検索できます。 たとえば、メッセージメタデータに JSON フォーマットを使用している場合は JSON 文字列に対する部分一致検索が適用できます。 一方で、BLOB データを Base64 かけたようなデータの場合は検索対象とするのは困難です。 メッセージログ検索にかかる費用は、検索時にログデータを何バイトスキャンしたかで決定されます。 そのため、発言者が滞在していたルームが特定できている場合は、本APIではなく『Gs2Chat:SearchLogByRoom』を使用する方が費用を節約できます。 また、検索範囲を時間で指定できますが、ログデータは1日単位(UTC)で分割して保存されており、スキャン時には1日分全てがスキャン対象となります。 つまり、特定の日付の5分間のログを検索するクエリを実行した場合、該当する1日分のログデータがスキャン対象となり、 さらにその5分間が日付をまたぐような場合は2日分のログデータがスキャン対象となります。 検索結果が指定した取得最大件数以上の結果を持つ場合、実行後一定期間内であればページトークンを使用した続きのデータ取得が可能です。 Request ---------------------------------------------------- .. include:: control/SearchLogByAllRoomRequest.rst Response ---------------------------------------------------- .. include:: control/SearchLogByAllRoomResult.rst ---------------------------------------------------- search_log_by_room ---------------------------------------------------- .. code-block:: lua response = chat_client:search_log_by_room(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end メッセージログを検索します。 メッセージログの検索には以下のパラメータを使用できます。 * ユーザID * メッセージテキスト * メッセージメタデータ いずれも部分一致で検索できます。 たとえば、メッセージメタデータに JSON フォーマットを使用している場合は JSON 文字列に対する部分一致検索が適用できます。 一方で、BLOB データを Base64 かけたようなデータの場合は検索対象とするのは困難です。 メッセージログ検索にかかる費用は、検索時にログデータを何バイトスキャンしたかで決定されます。 検索範囲を時間で指定できますが、ログデータは1日単位(UTC)で分割して保存されており、スキャン時には1日分全てがスキャン対象となります。 つまり、特定の日付の5分間のログを検索するクエリを実行した場合、該当する1日分のログデータがスキャン対象となり、 さらにその5分間が日付をまたぐような場合は2日分のログデータがスキャン対象となります。 検索結果が指定した取得最大件数以上の結果を持つ場合、実行後一定期間内であればページトークンを使用した続きのデータ取得が可能です。 Request ---------------------------------------------------- .. include:: control/SearchLogByRoomRequest.rst Response ---------------------------------------------------- .. include:: control/SearchLogByRoomResult.rst ---------------------------------------------------- send_message ---------------------------------------------------- .. code-block:: lua response = chat_client:send_message(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end メッセージを送信します。 Request ---------------------------------------------------- .. include:: control/SendMessageRequest.rst Response ---------------------------------------------------- .. include:: control/SendMessageResult.rst ---------------------------------------------------- send_message_no_auth ---------------------------------------------------- .. code-block:: lua response = chat_client:send_message_no_auth(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end メッセージを送信します。 Request ---------------------------------------------------- .. include:: control/SendMessageNoAuthRequest.rst Response ---------------------------------------------------- .. include:: control/SendMessageNoAuthResult.rst ---------------------------------------------------- update_lobby ---------------------------------------------------- .. code-block:: lua response = chat_client:update_lobby(request) if response.isError then -- エラー処理 -- print(response.statusCode) print(response.errorMessage) else -- 正常処理 -- print(response.result) end ロビーを更新します Request ---------------------------------------------------- .. include:: control/UpdateLobbyRequest.rst Response ---------------------------------------------------- .. include:: control/UpdateLobbyResult.rst Model ==================================================== ---------------------------------------------------- Subscribe ---------------------------------------------------- .. include:: model/Subscribe.rst ---------------------------------------------------- Message ---------------------------------------------------- .. include:: model/Message.rst ---------------------------------------------------- Room ---------------------------------------------------- .. include:: model/Room.rst ---------------------------------------------------- Lobby ---------------------------------------------------- .. include:: model/Lobby.rst ---------------------------------------------------- MessageLog ---------------------------------------------------- .. include:: model/MessageLog.rst