チャンネル

チャンネル

Game Chatでチャンネルは、ユーザーがグループでコミュニケーションできる仮想空間です。チャンネルを通じてユーザーは特定のトピックや目的に合わせて情報を共有し、チームワークを強化してコミュニケーションを組織化できます。チャンネルは業務効率を高め、特定のグループ内のコミュニケーションを一元化して管理できる便利なツールです。以下は Game Chatのチャンネル機能の詳細な説明です。

チャンネルの主な機能

  1. グループコミュニケーション : チャンネルを作成し、特定のグループのメンバーとコミュニケーションできます。この機能は、プロジェクトチーム、部署、クラブなど様々な形のグループに適しています。

  2. メッセージとファイル共有 : チャンネル内では、テキストメッセージ、画像、動画、文書など様々な形式のファイルを簡単に共有できます。

  3. リアルタイム更新 : チャンネル内のすべてのアクティビティはリアルタイムで更新され、すべての参加者が最新の情報に触れることができます。

  4. 管理者制御 : チャンネルの作成者または管理者は、チャンネルの設定を変更したりユーザーを追加/削除する権限があります。

  5. 通話とビデオ会議機能 : 一部のチャンネルでは音声通話やビデオ会議をサポートし、メンバー間の会話をより効果的に行うことができます。

  6. 通知設定 : ユーザーはチャンネルごとに通知を設定して、重要なメッセージを見逃さないようにすることができます。

  7. 検索機能 : チャンネル内の会話やファイルを簡単に検索できるので、必要な情報を素早く見つけることができます。

チャンネル管理

  • チャンネル作成 : ユーザーは目的に合ったチャンネルを新たに作成でき、チャンネル名、説明、メンバーなどの情報を設定できます。

  • チャンネル招待 : チャンネルの管理者は、他のユーザーをチャンネルに招待できます。招待されたユーザーは、招待を承諾または拒否できます。

  • メンバー管理 : 管理者はチャンネルメンバーの権限を設定したり、メンバーをチャンネルから削除できます。

セキュリティ

  • データセキュリティ : チャンネル内のすべてのデータは暗号化されて送信され、サーバに安全に保存されます。

  • 個人情報保護 : チャンネル内で共有される情報は、チャンネルメンバー間でのみアクセス可能で、外部に流出しないように保護されます。

Game Chatのチャンネル機能を活用することで、組織内または個人的なコミュニケーションを円滑にし、情報を効果的に管理できます。このような特性は、特に大規模な組織や様々なプロジェクトを管理する際に非常に役立ちます。

チャンネル作成

すべての会話はチャンネルを作成する必要があり、チャンネル内に参加することで正常にチャットできます。以下で、チャンネルを作成して登録する方法をご案内します。

await nc.createChannel(new NBaseSDK.Channel
{
    name = "New Channel",
    type =[TYPE],    // PUBLIC or PRIVATE
    customField = [CustomField]
});
IDTypeDescriptionRequired

NAME

string

チャンネル名

O

TYPE

string

チャンネルの種類(PUBLIC or PRIVATE)

O

UniqueID

string

固有 ID

X

push

boolean

プッシュ通知の有無

X

linkUrl

string

リンクの有無

X

imageUrl

string

リンクの有無

X

integrationId

string

連携機能(翻訳、ボイスなど)

X

disabled

string

チャンネルの使用有無

X

members

array

PRIVATEの場合、参加できる ID

X

CustomField

string

ユーザー定義フィールド、JSON Stringで入力すると様々に活用可能

X

参考

  • セキュリティのためにクライアントからチャンネルを作成するより、サーバからチャンネルを作成することをお勧めします。

チャンネル登録

ご希望のチャンネルに登録(ルームに参加)します。登録を解除するまで、参加しているチャンネルに再アクセス時にも自動的に参加します。

Hashtable option = new Hashtable
{
    { "language", "ja" }    //自動翻訳時に必要なオプション以外にも様々なオプションを追加できます。
};
await nc.subscribe([CHANNEL_ID], option);

チャンネル登録解除

当該チャンネルへの登録を解除します。当該チェンネルからメッセージを受信できません。

await nc.unsubscribe([CHANNEL_ID]);

参加者リスト

(特定チャンネルに対し)参加者リストを取得できます。

Hashtable filter = new Hashtable
{
    { "channel_id", channelId }
};
Hashtable sort = new Hashtable
{
    { "created_at", -1 }
};
Hashtable option = new Hashtable
{
    { "offset", 0 },
    { "per_page", 10 }
};
var subscriptions = await nc.getSubscriptions(filter, sort, option);
foreach (var subscription in subscriptions.edges)
{
    string id = subscription.node.id.ToString();
    Console.WriteLine("[CloudChatSample] id={0}", id);
}
  • Parameters

IDTypeDescription

filter

object

クエリをフィルタ。すべてのフィールドに対して検索可能

sort

object

ソートしたいフィールドのフィルタの定義(昇順「1」、降順「-1」)

option

object

オプションが存在する場合、以下を参照

  • Options

IDTypeDescription

offset

number

開始 offset

per_page

number

リターン数(最大100個)

応用編

特定チャンネルに対しオンラインアクセスステータスの訪問者リストのみ取得するには、filterに onlineを trueで追加します。

Hashtable filter = new Hashtable
{
    { "channel_id", [CHANNEL_ID] },
    { "online" , true}
};
Hashtable sort = new Hashtable
{
    { "created_at", -1 }
};
Hashtable option = new Hashtable
{
    { "offset", 0 },
    { "per_page", 10 }
};

var subscriptions = await nc.getSubscriptions(filter, sort, option);

チャンネル登録

  • Subscription Data Class

IDTypeDescription

id

string

ユニーク ID

channel_id

string

チャンネル ID

user_id

string

ユーザーの固有 ID

created_at

string

作成日

online

boolean

オンライン状態の有無

push

boolean

プッシュ参加の有無

language

string

アクセス言語

channel

string

チャンネル情報

mark.user_id

string

最後にメッセージを送信したユーザー

mark.message_id

string

最後のメッセージ ID

mark.sort_id

string

最後のメッセージソート ID

mark.unread

string

最後のメッセージ以降に、未読のメッセージ数

チャンネル情報

  • Channel Data Class

IDTypeDescription

id

string

チャンネル ID(unique)

project_id

string

プロジェクト ID

unique_id

string

開発会社で設定できるチャンネル ID(unique)

name

string

チャンネル名

user_id

string

(チャンネルを作成した)ユーザー ID

unique_id

string

チャンネルの固有 ID

default_lang

string

基本言語

lang

string

現在接続中のユーザーの言語

members

string

Privateの場合、参加したユーザーリスト

last_message

array

最後のメッセージ情報[MessageType]を参照

push

boolean

プッシュメッセージのサポート有無(Privateチャンネルの場合)

state

boolean

チャンネルステータス

customField

string

ユーザー定義データ

created_at

string

作成日

updated_at

string

更新日

チャンネルデータを取得する

プロジェクトのチャンネルデータをリスト形式で取得するには、以下のコードを使用します。

Hashtable filter = new Hashtable
{
    { "state", true }
};
Hashtable sort = new Hashtable
{
    { "created_at", -1 }
};
Hashtable option = new Hashtable
{
    { "offset", 0 },
    { "per_page", 10 }
};
var channels = await nc.getChannels(filter,sort,option);
foreach (var channel in channels.edges)
{
    string id = channel.node.id.ToString();
    Console.WriteLine("[CloudChatSample] id={0}", id);
}
  • Parameters

IDTypeDescriptionRequired

filter

object

クエリをフィルタ。すべてのフィールドに対して検索可能

O

sort

object

ソートしたいフィールドのフィルタの定義

X

option

object

オプションが存在する場合、以下を参照

X

  • Options

IDTypeDescription

offset

number

開始 offset

per_page

number

リターン数(最大100個)

個別チャンネル

  • 個別チャンネルに関する情報を取得できます。

Channel channel = await nc.getChannel(id);

チャンネル内にユーザーを招待

PRIVATEチャンネルの場合、参加を希望するユーザーを招待します。

await nc.addUsers(newChannelId, new string[] { "ID", "ID" });

チャンネル内でユーザーを削除

PRIVATEチャンネルの場合、参加しているユーザーを削除します。

await nc.removeUsers(channelId, new string[] { "ID", "ID" });

チャンネル内でユーザーをブロック

チャンネル内でユーザーをブロックします。チャンネルを作成した権限を持つユーザーや、全体管理者のみ使用できます。

Hashtable option = new Hashtable
{
    { "timeout", [終了時間(秒)] },
    { "reason", [ブロック理由] }
};
await nc.banUser(channelId, userId, options);
  • Options Data Class

IDTypeDescription

timeout

string

ブロック時間(seconds)

reason

string

ブロック理由

チャンネル内でユーザーブロックを解除

チャンネル内でブロックしたユーザーのブロックを解除します。チャンネルを作成した権限を持つユーザーや、全体管理者のみ使用できます。

await nc.unbanUser(channelId, userId);

チャンネル削除

当該チャンネルを削除します(1つまたは複数同時に削除できます)。

Channel channel = await nc.deleteChannel([CHANNEL_ID]);

チャンネル変更

チャンネル情報を更新します。

Channel channel = await nc.updateChannel([CHANNEL_ID],new NBaseSDK.Channel
{
    name = "Update Channel",
    type =[TYPE],    // PUBLIC or PRIVATE
    customField = [CustomField]
});

Last updated