GS2-Chat¶
Create Client
chat_client = client('chat')
目次
- Method
- check_estimate_scan_byte_by_all_room
- check_estimate_scan_byte_by_room
- create_lobby
- create_my_subscribe
- create_room
- create_subscribe
- delete_lobby
- delete_my_subscribe
- delete_room
- delete_subscribe
- describe_lobby
- describe_message
- describe_message_no_auth
- describe_my_subscribe
- describe_room
- describe_service_class
- describe_subscribe_by_room_id
- describe_subscribe_by_user_id
- get_lobby
- get_lobby_status
- get_my_subscribe
- get_room
- get_subscribe
- search_log_by_all_room
- search_log_by_room
- send_message
- send_message_no_auth
- update_lobby
- Model
Method¶
check_estimate_scan_byte_by_all_room¶
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¶
{
lobbyName=string,
userId=string,
message=string,
meta=string,
begin=number,
end=number,
pageToken=string,
limit=number,
}
- lobbyName
- [string] ロビーの名前
- userId
- [string] 検索するユーザID文字列(部分一致)
- message
- [string] 検索するメッセージテキスト文字列(部分一致)
- meta
- [string] 検索するメッセージメタデータ文字列(部分一致)
- begin
- [number] 検索期間 開始日時(エポック秒)
- end
- [number] 検索期間 終了日時(エポック秒)
- pageToken
- [string] データの取得を開始する位置を指定するトークン
- limit
- [number] データの取得件数
check_estimate_scan_byte_by_room¶
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¶
{
lobbyName=string,
roomId=string,
userId=string,
message=string,
meta=string,
begin=number,
end=number,
pageToken=string,
limit=number,
}
- lobbyName
- [string] ロビーの名前
- roomId
- [string] ルームID
- userId
- [string] 検索するユーザID文字列(部分一致)
- message
- [string] 検索するメッセージテキスト文字列(部分一致)
- meta
- [string] 検索するメッセージメタデータ文字列(部分一致)
- begin
- [number] 検索期間 開始日時(エポック秒)
- end
- [number] 検索期間 終了日時(エポック秒)
- pageToken
- [string] データの取得を開始する位置を指定するトークン
- limit
- [number] データの取得件数
create_lobby¶
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¶
{
name=string,
notificationGameName=string,
notificationUrl=string,
serviceClass=string,
notificationType=string,
description=string,
}
- name
- [string] ロビー名
- notificationGameName
- [string] 通知先 GS2-InGamePushNotification の ゲーム名
- notificationUrl
- [string] 通知先URL
- serviceClass
- [string] サービスクラス
- notificationType
- [string] 通知方式
- description
- [string] 説明文
create_my_subscribe¶
response = chat_client:create_my_subscribe(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
ルームを購読します。
ルームを購読すると、ルームに対する新着メッセージを受信したときに通知を受けることが出来ます。 通知方式はロビーの設定に依存します。
Request¶
{
lobbyName=string,
roomId=string,
enableOfflineTransfer=boolean,
password=string,
offlineTransferSound=string,
accessToken=string
}
- lobbyName
- [string] ロビーの名前
- roomId
- [string] ルームID
- enableOfflineTransfer
- [boolean] GS2-InGamePushNotification 使用時にオフライン転送を使用するか
- password
- [string] パスワード
- offlineTransferSound
- [string] GS2-InGamePushNotification 使用時のモバイルプッシュ通知で使用する通知音
- accessToken
- [string] GS2-Auth で発行を受けたアクセストークン
create_room¶
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¶
{
lobbyName=string,
roomId=string,
password=string,
allowUserIds=string,
}
- lobbyName
- [string] ロビーの名前
- roomId
- [string] ルームID(指定しない場合は自動的に採番されます)
- password
- [string] ルームにアクセスする際にパスワードを要求する場合は文字列を指定
- allowUserIds
- [string] ルームへのアクセスを許可するユーザIDリストをカンマ区切りで指定
create_subscribe¶
response = chat_client:create_subscribe(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
ルームを購読します。
ルームを購読すると、ルームに対する新着メッセージを受信したときに通知を受けることが出来ます。 通知方式はロビーの設定に依存します。
Request¶
{
lobbyName=string,
roomId=string,
userId=string,
enableOfflineTransfer=boolean,
password=string,
offlineTransferSound=string,
}
- lobbyName
- [string] ロビーの名前
- roomId
- [string] ルームID
- userId
- [string] ユーザID
- enableOfflineTransfer
- [boolean] GS2-InGamePushNotification 使用時にオフライン転送を使用するか
- password
- [string] パスワード
- offlineTransferSound
- [string] GS2-InGamePushNotification 使用時のモバイルプッシュ通知で使用する通知音
delete_lobby¶
response = chat_client:delete_lobby(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
ロビーを削除します
Response¶
None
delete_my_subscribe¶
response = chat_client:delete_my_subscribe(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
購読を解除する。
Request¶
{
lobbyName=string,
roomId=string,
accessToken=string
}
- lobbyName
- [string] ロビーの名前
- roomId
- [string] ルームID
- accessToken
- [string] GS2-Auth で発行を受けたアクセストークン
Response¶
None
delete_room¶
response = chat_client:delete_room(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
ルームを削除します
Response¶
None
delete_subscribe¶
response = chat_client:delete_subscribe(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
購読を解除する。
Request¶
{
lobbyName=string,
roomId=string,
userId=string,
}
- lobbyName
- [string] ロビーの名前
- roomId
- [string] ルームID
- userId
- [string] ユーザID
Response¶
None
describe_lobby¶
response = chat_client:describe_lobby(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
ロビーの一覧を取得します
Request¶
{
pageToken=string,
limit=number,
}
- pageToken
- [string] データの取得を開始する位置を指定するトークン
- limit
- [number] データの取得件数
describe_message¶
response = chat_client:describe_message(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
メッセージの一覧を取得します。
Request¶
{
lobbyName=string,
roomId=string,
password=string,
startAt=number,
limit=number,
accessToken=string
}
- lobbyName
- [string] ロビーの名前
- roomId
- [string] ルームID
- password
- [string] パスワード
- startAt
- [number] メッセージの取得を開始する日時(エポック秒)
- limit
- [number] データの取得件数
- accessToken
- [string] GS2-Auth で発行を受けたアクセストークン
describe_message_no_auth¶
response = chat_client:describe_message_no_auth(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
メッセージの一覧を取得します。
Request¶
{
lobbyName=string,
roomId=string,
startAt=number,
limit=number,
}
- lobbyName
- [string] ロビーの名前
- roomId
- [string] ルームID
- startAt
- [number] メッセージの取得を開始する日時(エポック秒)
- limit
- [number] データの取得件数
describe_my_subscribe¶
response = chat_client:describe_my_subscribe(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
ユーザが購読しているルームの一覧を取得します。
Request¶
{
lobbyName=string,
pageToken=string,
limit=number,
accessToken=string
}
- lobbyName
- [string] ロビーの名前
- pageToken
- [string] データの取得を開始する位置を指定するトークン
- limit
- [number] データの取得件数
- accessToken
- [string] GS2-Auth で発行を受けたアクセストークン
describe_room¶
response = chat_client:describe_room(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
ルームの一覧を取得します。
Request¶
{
lobbyName=string,
pageToken=string,
limit=number,
}
- lobbyName
- [string] ロビーの名前
- pageToken
- [string] データの取得を開始する位置を指定するトークン
- limit
- [number] データの取得件数
describe_service_class¶
response = chat_client:describe_service_class(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
サービスクラスの一覧を取得します
Request¶
{
}
describe_subscribe_by_room_id¶
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¶
{
lobbyName=string,
roomId=string,
pageToken=string,
limit=number,
}
- lobbyName
- [string] ロビーの名前
- roomId
- [string] ルームID
- pageToken
- [string] データの取得を開始する位置を指定するトークン
- limit
- [number] データの取得件数
describe_subscribe_by_user_id¶
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¶
{
lobbyName=string,
userId=string,
pageToken=string,
limit=number,
}
- lobbyName
- [string] ロビーの名前
- userId
- [string] ユーザID
- pageToken
- [string] データの取得を開始する位置を指定するトークン
- limit
- [number] データの取得件数
get_lobby¶
response = chat_client:get_lobby(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
ロビーを取得します
get_lobby_status¶
response = chat_client:get_lobby_status(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
ロビーの状態を取得します
get_my_subscribe¶
response = chat_client:get_my_subscribe(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
購読情報を取得する。
Request¶
{
lobbyName=string,
roomId=string,
accessToken=string
}
- lobbyName
- [string] ロビーの名前
- roomId
- [string] ルームID
- accessToken
- [string] GS2-Auth で発行を受けたアクセストークン
get_room¶
response = chat_client:get_room(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
ルームを取得します
get_subscribe¶
response = chat_client:get_subscribe(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
購読情報を取得する。
Request¶
{
lobbyName=string,
roomId=string,
userId=string,
}
- lobbyName
- [string] ロビーの名前
- roomId
- [string] ルームID
- userId
- [string] ユーザID
search_log_by_all_room¶
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¶
{
lobbyName=string,
userId=string,
message=string,
meta=string,
begin=number,
end=number,
pageToken=string,
limit=number,
}
- lobbyName
- [string] ロビーの名前
- userId
- [string] 検索するユーザID文字列(部分一致)
- message
- [string] 検索するメッセージテキスト文字列(部分一致)
- meta
- [string] 検索するメッセージメタデータ文字列(部分一致)
- begin
- [number] 検索期間 開始日時(エポック秒)
- end
- [number] 検索期間 終了日時(エポック秒)
- pageToken
- [string] データの取得を開始する位置を指定するトークン
- limit
- [number] データの取得件数
Response¶
- nextPageToken
- [string] 次のページを読み込むためのトークン
- items
- [table<MessageLog>] メッセージ
- scanSize
- [number] 検索時にスキャンしたログデータサイズ
search_log_by_room¶
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¶
{
lobbyName=string,
roomId=string,
userId=string,
message=string,
meta=string,
begin=number,
end=number,
pageToken=string,
limit=number,
}
- lobbyName
- [string] ロビーの名前
- roomId
- [string] ルームID
- userId
- [string] 検索するユーザID文字列(部分一致)
- message
- [string] 検索するメッセージテキスト文字列(部分一致)
- meta
- [string] 検索するメッセージメタデータ文字列(部分一致)
- begin
- [number] 検索期間 開始日時(エポック秒)
- end
- [number] 検索期間 終了日時(エポック秒)
- pageToken
- [string] データの取得を開始する位置を指定するトークン
- limit
- [number] データの取得件数
Response¶
- nextPageToken
- [string] 次のページを読み込むためのトークン
- items
- [table<MessageLog>] メッセージ
- scanSize
- [number] 検索時にスキャンしたログデータサイズ
send_message¶
response = chat_client:send_message(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
メッセージを送信します。
Request¶
{
lobbyName=string,
roomId=string,
message=string,
password=string,
meta=string,
accessToken=string
}
- lobbyName
- [string] ロビーの名前
- roomId
- [string] ルームID
- message
- [string] メッセージテキスト
- password
- [string] パスワード
- meta
- [string] メッセージメタデータ
- accessToken
- [string] GS2-Auth で発行を受けたアクセストークン
send_message_no_auth¶
response = chat_client:send_message_no_auth(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
メッセージを送信します。
Request¶
{
lobbyName=string,
roomId=string,
message=string,
meta=string,
userId=string,
}
- lobbyName
- [string] ロビーの名前
- roomId
- [string] ルームID
- message
- [string] メッセージテキスト
- meta
- [string] メッセージメタデータ
- userId
- [string] ユーザID
update_lobby¶
response = chat_client:update_lobby(request)
if response.isError then
-- エラー処理 --
print(response.statusCode)
print(response.errorMessage)
else
-- 正常処理 --
print(response.result)
end
ロビーを更新します
Request¶
{
lobbyName=string,
notificationType=string,
serviceClass=string,
description=string,
notificationGameName=string,
notificationUrl=string,
}
- lobbyName
- [string] ロビーの名前
- notificationType
- [string] 通知方式
- serviceClass
- [string] サービスクラス
- description
- [string] 説明文
- notificationGameName
- [string] 通知先 GS2-InGamePushNotification の ゲーム名
- notificationUrl
- [string] 通知先URL
Model¶
Subscribe¶
- roomId
- [string] ルームID
- enableOfflineTransfer
- [boolean] オフライン転送を使用するか
- userId
- [string] ユーザID
- offlineTransferSound
- [string] 通知音
- subscribeAt
- [number] 購読日時(エポック秒)
Message¶
- userId
- [string] 発言者ユーザID
- message
- [string] メッセージテキスト
- createAt
- [number] 作成日時(エポック秒)
- meta
- [string] メッセージメタデータ
- messageId
- [string] メッセージID
Room¶
- roomId
- [string] ルームID
- needPassword
- [boolean] メッセージの送受信にパスワードが必要か
- allowUserIds
- [table<string>] 参加可能なユーザIDリスト
- createAt
- [number] 作成日時(エポック秒)
Lobby¶
- lobbyId
- [string] ロビーID
- name
- [string] ゲーム名
- serviceClass
- [string] サービスクラス
- notificationType
- [string] 通知方式
- createAt
- [number] 作成日時(エポック秒)
- notificationGameName
- [string] gs2-in-game-push-notification を選択した際の GS2-InGamePushNotification のゲームGRN
- notificationUrl
- [string] http/https を選択した際の通知先URL
- ownerId
- [string] オーナーID
- updateAt
- [number] 最終更新日時(エポック秒)
- description
- [string] 説明文
MessageLog¶
- createAt
- [number] 作成日時(エポック秒)
- meta
- [string] メッセージメタデータ
- messageId
- [string] メッセージID
- roomId
- [string] ルームID
- message
- [string] メッセージテキスト
- userId
- [string] 発言者ユーザID