グループシステム
グループシステムの紹介
グループシステムは、多人数チャットをサポートするインスタントメッセージシステムです。グループシステムに備わっている基本機能には以下が含まれます:
完備されたグループ管理機能:グループの作成/解散、参加者管理、グループプロファイル管理、参加者プロファイル管理など。
安定性と信頼性の高いメッセージ送受信機能、完備されたグループメッセージ管理のメカニズム:権限制御、ミュート(発言禁止)、メッセージコールバック、メッセージローミングなど。
一般的なユースケースに基づき、フレンドワークグループ(Work)、知らない人とのソーシャルグループ(Public)、臨時ミーティンググループ(Meeting)、ライブストリーミンググループ(AVChatRoom)およびコミュニティ(Community) という5つのグループタイプがデフォルトで設定されています。
拡張可能なグループ参加者上限数:
フレンドワークグループ(Work)、知らない人とのソーシャルグループ(Public)および臨時ミーティンググループ(Meeting)がサポートするメンバーの上限人数は追加費用を支払うことで6000人まで拡張できます。詳細については、料金説明をご参照ください。
コミュニティ(Community)サポートする上限人数は10万人です。
ライブストリーミンググループ(AVChatRoom)の参加者数に上限はありません。
ご注意:
ライブストリーミンググループ(AVChatRoom)には参加者数の上限を設定していないが、短時間でグループ参加者の激増がありうる運用シーン(例えば、大規模オンラインイベントの開催により、単一グループの参加者が5万人以上に達する見込みの場合など)の場合、サービスリソースを調達するように、事前にTencent Cloudカスタマサービスまたは営業担当者に連絡し、SDKAppIDとイベント予定開催時間を伝えてください。
現在は非ライブ配信グループにのみメッセージ履歴を保存する機能が備わっています(体験版およびProfessional版はデフォルトで7日、Ultimate版はデフォルトで30日です)。より長い期間保存したい場合は、コンソールでメッセージ履歴の保存期間を変更できます。メッセージ履歴の保存期間を延長するには、付加価値サービスの費用がかかります。具体的な課金説明については、料金説明をご参照ください。
コミュニティ(Community)は、エンターテインメントとコラボレーションのための新しいツールです。同じコミュニティで、異なる分類、トピックを分けられるほか、メッセージを相互に分離し、階層的なコミュニケーションを実現します。また、極めて大規模なメンバーを収納し、同じセットの友達関係の使用を可能にして、ユーザーが独特なソーシャル拡張ルートを見つけられるようにサポートします。趣味による友達作り、ゲームソーシャル、フォロワーの運営、組織管理などの運用シーンに向いています。
コミュニティ(Community)機能は端末向けSDK 5.8.1668エンハンス以降、Web向けSDK 2.17.0以降をサポートします。この機能を使用するには、Ultimate版を購入し、コンソール>グループ機能設定>コミュニティグループ スイッチをオンにする必要があります。
この他に、Instant Messaging(IM)グループシステムには高度なカスタマイズ機能が備わっています。具体的には以下のとおりになります:
グループ参加者のロールの紹介
グループ内の各参加者のロールおよびその権限は下表のとおりです:
グループ参加者のロール | 説明 | 管理権限 |
一般参加者 | 管理権限をもたないグループ参加者 | 友だちワークグループ(Work)では、一般参加者はグループプロファイル修正の権限を有します。 |
管理者 | グループマスターが任命し、グループマスターに協力してグループを管理するグループ参加者。一定の管理権限を有します。 | グループ基本プロファイルの修正 一般参加者をグループから追放 一般参加者に対するミュート(その参加者の一定時間の発言を禁止します) その他ユーザーのグループ参加申請の審査承認 友だちワークグループ(Work)はデフォルトでは管理者の設定をサポートしていません。 |
グループマスター | グループの作成者。グループ内で最高の管理権限を有します。 | グループマスターは管理者が有する各項目の権限の外にも、以下の権限を有しています。 管理者の任命/取消 管理者をグループから追放 管理者に対するミュート(発言禁止) グループの解散 グループの譲渡 |
App管理者 | App内の全グループの管理権限を有する特別な身分で、能力はグループマスターを上回ります。 | App管理者はグループ内の参加者でなくても構いませんが、グループマスターが有する全ての権限を有しています |
グループタイプの紹介
一般的なユースケースにもとづき、デフォルトで以下のグループタイプを設定しています。
グループタイプ | 適用ケース |
友達ワークグループ(Work) | 作成後にすでにグループ内にいる友達のみがグループ参加へ招待できます。被招待者側の同意またはグループマスターの承認は不要です。旧バージョンのPrivateと同じです |
知らない人とのソーシャルグループ(Public) | 作成後にグループマスターはグループ管理者を指定できます。ユーザーはグループIDで検索してグループ参加申請を送信した後、グループマスターまたは管理者に承認されるとグループに参加できます |
臨時ミーティンググループ(Meeting) | 作成後は自由に参加・退出でき、かつグループ参加前のメッセージを確認する機能をサポートしています。音声/ビデオ会議のシナリオ、eラーニングのシナリオなどのTRTC製品と連携させたシナリオに適しています。旧バージョンのChatRoomと同じです |
ライブストリーミンググループ(AVChatRoom):作成後は自由に参加・退出ができ、グループ参加者数の上限はありませんが、メッセージ履歴の保存はサポートしていません。CSS製品との連携に適しており、弾幕チャットのシナリオに使用します。 | - |
コミュニティ(Community) | 作成後、自由に出入りでき、最大10w人をサポートします。またメッセージ履歴保存、ユーザー検索グループIDをサポートし、グループ追加申請を開始でき、管理者の承認なしにグループに参加できます |
グループ基本機能の操作の違い
機能 | フレンドワークグループ(Work) | 知らない人とのソーシャルグループ(Public) | 臨時ミーティンググループ(Meeting) | ライブストリーミンググループ(AVChatRoom) | コミュニティ(Community) |
利用可能な参加者のロール | グループマスター 一般参加者 App管理者 | グループマスター管理者 一般参加者 App管理者 | グループマスタ管理者 一般参加者 App管理者 | グループマスタ App管理者 | グループマスタ 管理者 一般参加者 App管理者 |
グループ基本プロフィールの変更権限 | 一般参加者 グループマスター App管理者 | グループ管理者 グループマスター App管理者 | グループマスター App管理者 | グループマスター App管理者 | 管理者 グループマスター App管理者 |
グループ参加者情報の取得 | 全参加者の情報を取得可能 | 全参加者の情報を取得可能 | 全参加者の情報を取得可能 | グループメンバーの情報を保存しない | 全参加者の情報を取得可能 |
グループの解散 | App管理者のみグループの解散が可能 | グループマスターとApp管理者のグループ解散が可能 | グループマスターとApp管理者のグループ解散が可能 | グループマスターとApp管理者のグループ解散が可能 | グループマスターとApp管理者のグループ解散が可能 |
説明:
新規バージョンのSDKでは、グループタイプが全面的にアップグレードされています。新たなグループタイプには、フレンドワークグループ(Work)、知らない人とのソーシャルグループ(Public)、臨時ミーティンググループ(Meeting)、ライブストリーミンググループ(AVChatRoom)およびコミュニティ(Community)という5つのグループタイプがあります。旧版のグループタイプ(Public、Private、ChatRoom、AVChatRoom)のPrivateタイプは新たなグループタイプのWork(フレンドワークグループ)に対応し、ChatRoomタイプは新たなグループタイプのMeeting(臨時ミーティンググループ)に対応します。
友だちワークグループ(Work)については、一般参加者はグループの名前、概要、公告、グループプロフィール画像URLのみ修正可能です。その他のグループの基本プロファイルは修正できません。
グループタイプの中のロールでは業務のニーズを満たせない場合、グループ参加者のカスタムフィールドを設定することで新しいロールを追加できます。
一部のグループ参加者情報の取得は、通常、ライブストリーミンググループ(AVChatRoom)の中で一部のグループメンバーリストのみを表示する必要があるシナリオに使用されます。
グループ参加方式の違い
機能項目 | フレンドワークグループ(Work) | 知らない人とのソーシャルグループ(Public) | 臨時ミーティンググループ(Meeting) | ライブストリーミンググループ(AVChatRoom) | コミュニティ(Community) |
グループIDの正確な検索によるグループ参加のサポートの有無 | サポートなし | サポートあり | サポートあり | サポートあり | サポートあり |
グループ情報のあいまい検索によるグループ参加のサポートの有無 | サポートなし | サポートなし | サポートなし | サポートなし | サポートなし |
グループ参加申請のサポートの有無 | サポートなし | サポートあり、ただしグループマスターまたは管理者の承認が必要 | サポートあり、承認は不要 | サポートあり、承認は不要 | サポートあり、承認は不要 |
参加者から他者へのグループ参加招待のサポートの有無 | サポートあり | サポートなし | サポートなし | サポートなし | サポートあり |
説明:
正確な検索:非グループ参加者がグループIDによってグループを検索することです。あいまい検索:非グループ参加者がグループ名などのフィールドによってグループを検索することです。
グループ参加の審査承認:グループマスターおよび管理者がグループ以外のユーザーのグループ参加申請に対して「同意」または「拒否」を選択します。審査に通過した場合のみ、そのユーザーはグループに参加できます。
グループ参加に招待するグループタイプのサポートはしていません。Appの中でグループ内参加者がグループIDを他の人にシェアし、グループへの参加を申請することで、類似する効果が得られます。
参加者の管理機能の違い
機能項目 | フレンドワークグループ(Work) | 知らない人とのソーシャルグループ(Public) | 臨時ミーティンググループ(Meeting) | ライブストリーミンググループ(AVChatRoom) | コミュニティ(Community) |
管理者設定のサポートの有無 | サポートなし | サポートあり | サポートあり | サポートなし | サポートあり |
グループマスターのグループ退出のサポートの有無 | サポートあり、退出後にグループに参加すると、グループマスターではなくなります | サポートなし | サポートなし | サポートなし | サポートなし |
「キックアウト」のサポートの有無 | サポートあり、グループマスターによるキックアウトが可能 | サポートあり、グループマスターと管理者に「キックアウト」権限があるが、管理者は一般グループ参加者のキックアウトのみ可能 | サポートあり、グループマスターと管理者に「キックアウト」権限があり、ただし管理者は一般グループ参加者のキックアウトのみ可能 | サポートなし、「ミュート(発言禁止)」機能によって類似する効果が得られます | サポートあり、グループマスターと管理者に「キックアウト」権限があるが、管理者は一般グループ参加者のキックアウトのみ可能 |
「ミュート(発言禁止)」のサポートの有無 | サポートなし | サポートあり、グループマスターと管理者に「ミュート(発言禁止)」権限がありますが、管理者は一般グループ参加者のミュートのみ可能 | サポートあり、グループマスターと管理者に「ミュート(発言禁止)」権限がありますが、管理者は一般グループ参加者のミュートのみ可能 | サポートあり、グループマスターに「ミュート(発言禁止)」権限があります | サポートあり、グループマスターと管理者に「ミュート(発言禁止)」権限がありますが、管理者は一般グループ参加者のミュートのみ可能 |
オンラインでないグループ参加者の定期的な消去 | サポートあり、ただしデフォルトは無効状態 | サポートあり、ただしデフォルトは無効状態 | サポートあり、ただしデフォルトは無効状態 | サポートなし | サポートなし |
ご注意:
発言を禁止されたグループ参加者は、発言禁止時間内はグループチャットメッセージを送信できません。
グループ制限の違い
機能項目 | フレンドワークグループ(Work)/知らない人とのソーシャルグループ(Public)/臨時ミーティンググループ(Meeting) | ライブストリーミンググループ(AVChatRoom) | コミュニティ(Community) |
参加者数上限 | 体験版:20人/グループ プロフェッショナル版:デフォルトは200人/グループ、付加価値サービスにより最大2000人/グループまでの拡張をサポートしています フラッグシップ版:デフォルトは2000人/グループ、付加価値 サービスにより最大6000人/グループまでの拡張をサポートしています | 上限なし | 体験版:サポートなし プロフェッショナル版:サポートなし フラッグシップ版:デフォルトは10万人/グループ |
グループ数 | 体験版:グループ数は最大100、解散済みグループはカウントしません プロフェッショナル版またはフラッグシップ版:上限なし | 体験版:同時に存在できるのは最大10、解散済みグループはカウントしません プロフェッショナル版:同時に存在できるのは最大50、解散済みグループはカウントしません。付加価値 サービスによりライブストリーミンググループ作成数の上限なしまで拡張できます フラッグシップ版:上限なし | 体験版:サポートなし プロフェッショナル版:サポートなし フラッグシップ版:デフォルトで100000まで作成可能 |
ご注意:
プロフェッショナル版またはフラッグシップ版SDK AppIDにおける全グループタイプの1日あたりの正味グループ増加数(グループ作成数-解散グループ数)の上限は1万です。
プロフェッショナル版またはフラッグシップ版SDK AppIDにおける無料のピークグループ数は10万/月です。無料利用枠の超過分については、パッケージ外超過料金が発生します。引き続き使用する必要がないグループはすみやかに解散することを推奨します。
メッセージ機能の違い
機能項目 | フレンドワークグループ(Work) | 知らない人とのソーシャルグループ(Public) | 臨時ミーティンググループ(Meeting) | ライブストリーミンググループ(AVChatRoom) | コミュニティ(Community) |
未読メッセージカウントのサポートの有無 | サポートあり | サポートあり | サポートなし | サポートなし | サポートあり |
メッセージ履歴保存のサポートの有無 | サポートあり | サポートあり | サポートあり | サポートなし | サポートあり |
グループ参加前のローミングメッセージ表示のサポート状況 | 未サポート | ||||
グループメンバーの変更通知 | デフォルトでは、グループへの招待、グループの参加申請、グループメンバーの削除、グループからの退会の実行時に通知が送信され、ローミングデータが保存される。コンソール(https://console.tencentcloud.com/im/qun-setting)による設定をサポート | デフォルトでは、グループへの招待、グループの参加申請、グループメンバーの削除、グループからの退会の実行時に通知が送信され、ローミングデータが保存される。コンソール(https://console.tencentcloud.com/im/qun-setting)による設定をサポート | デフォルトでは、グループへの招待、グループの参加申請、グループメンバーの削除、グループからの退会通知が無効。コンソール(https://console.tencentcloud.com/im/qun-setting)による設定をサポート | グループへの招待、グループの参加申請、グループメンバーの削除、グループからの退会の実行時に通知が送信されるが、ローミングデータが保存されない | デフォルトでは、グループへの招待、グループの参加申請、グループメンバーの削除、グループからの退会の実行時に通知が送信され、ローミングデータが保存される。コンソール(https://console.tencentcloud.com/im/qun-setting)による設定をサポート |
グループプロフィールの変更通知 | デフォルトでは、グループ名、グループ通知、グループ紹介、グループプロフィール画像、グループ所有者の変更時に通知が送信され、ローミングデータが保存される。グループ発言禁止、グループ参加申請方法の変更については、デフォルトで通知が無効。コンソール(https://console.tencentcloud.com/im/qun-setting)による設定をサポート | デフォルトでは、グループ名、グループ通知、グループ紹介、グループプロフィール画像、グループ所有者の変更時に通知が送信され、ローミングデータが保存される。グループ発言禁止、グループ参加申請方法の変更については、デフォルトで通知が無効。コンソール(https://console.tencentcloud.com/im/qun-setting)による設定をサポート | デフォルトでは、グループ名、グループ通知、グループ紹介、グループプロフィール画像、グループ所有者の変更時に通知が送信され、ローミングデータが保存される。グループ発言禁止、グループ参加申請方法の変更については、デフォルトで通知が無効。コンソール(https://console.tencentcloud.com/im/qun-setting)による設定をサポート | グループ名、グループ通知、グループ紹介、グループプロフィール画像、グループ所有者の変更時に通知が送信されるが、ローミングデータが保存されない。グループ発言禁止、グループ参加申請方法の変更通知が無効 | デフォルトでは、グループ名、グループ通知、グループ紹介、グループプロフィール画像、グループ所有者の変更時に通知が送信され、ローミングデータが保存される。グループ発言禁止の変更については、デフォルトで通知が無効。コンソール(https://console.tencentcloud.com/im/qun-setting)による設定をサポート。コミュニティのグループ参加申請方法の変更は未サポートのため、通知なし |
グループメンバーの変更通知 | デフォルトでは、グループメンバーの発言禁止、グループ管理者の変更時に通知が送信され、ローミングデータが保存される。コンソール(https://console.tencentcloud.com/im/qun-setting)による設定をサポート | デフォルトでは、グループメンバーの発言禁止、グループ管理者の変更時に通知が送信され、ローミングデータが保存される。コンソール(https://console.tencentcloud.com/im/qun-setting)による設定をサポート | デフォルトでは、グループメンバーの発言禁止、グループ管理者の変更通知が無効。コンソール(https://console.tencentcloud.com/im/qun-setting)による設定をサポート | デフォルトでは、グループメンバーの発言禁止、グループ管理者の変更通知が無効。コンソール(https://console.tencentcloud.com/im/qun-setting)による設定をサポート | デフォルトでは、グループメンバーの発言禁止、グループ管理者の変更時に通知が送信され、ローミングデータが保存される。コンソール(https://console.tencentcloud.com/im/qun-setting)による設定をサポート |
グループ作成後のメッセージ送信によるアクティブ化の必要の有無 | 必要 | 不要 | 不要 | 不要 | 不要 |
デフォルトのメッセージ受信選択項目 | オンラインプッシュメッセージとオフラインプッシュの受信 | オンラインプッシュメッセージとオフラインプッシュの受信 | オンラインプッシュメッセージのみ受信 | オンラインプッシュメッセージのみ受信 | オンラインプッシュメッセージとオフラインプッシュの受信 |
ご注意:
アクティブ化が必要なグループは、グループマスターのメッセージ送信前に非アクティブ状態であると、グループマスター以外のその他グループ参加者は見ることができません。アクティブ化が不要なグループは、作成後にすべてのグループ参加者が見ることができます。
オフラインプッシュは現在Android(Androidオフラインプッシュ)とiOS(APNsプッシュ)のみサポートしています。
一括インポートと自動回収の違い
機能項目 | フレンドワークグループ(Work)/ 知らない人とのソーシャルグループ(Public)/ 臨時ミーティンググループ(Meeting)/コミュニティ(Community) | ライブストリーミンググループ(AVChatRoom) |
グループ、グループ参加者、グループメッセージのインポートの許可 | グループ、グループ参加者、グループメッセージのインポートを許可し、サードパーティプラットフォームからグループ履歴をIMに移行して使用する時に適用します | グループ、グループ参加者、グループメッセージの一括インポートが許可されず、既存のグループ、グループ参加者、グループメッセージのみ使用できます |
グループの自動回収時間(秒) | グループマスターがグループを解散するか、すべての参加者がグループを退出しない限り、グループはバックグラウンドで回収されません(グループの解散について:グループマスターが解散しない限り、バックグラウンドでグループは回収されず、または自動回収設定後に、不定期にグループをトラバースし、n秒経過しても誰も発言せず、もしくはグループ情報が変更されたことが判明した場合は、グループを解散します)。 | グループマスターがグループを解散するか、すべての参加者がグループを退出しない限り、グループはバックグラウンドで回収されません |
ご注意:
グループ回収機能を有効にする必要がある場合、[チケットテンプレート](構成変更要求チケット | Tencent Cloud (tencentcloud.com)#.E8.87.AA.E5.8A.A8.E5.9B.9E.E6.94.B6.E7.BE.A4.E7.BB.84)でチケットを提出して申請できます。設定すると、グループタイプによって非アクティブグループがクリアされます(非アクティブグループとは、グループで参加者が発言せず、参加者の変更もないグループを指します)。
グループデータ構造の紹介
グループ基本プロファイル
フィールド名 | タイプ | 説明 | 備考 |
GroupId | String | グループの一意性ID | 読み取り専用 グループIDは、App内での一意性が保証され、その形式はプレフィックスが@TGS#となります。また、AppでのカスタムグループIDの設定が可能です。 |
Type | String | グループタイプ | 読み取り専用 デフォルトで次のグループタイプをサポートします:フレンドワークグループ(Work)、知らない人とのソーシャルグループ(Public)、臨時ミーティンググループ(Meeting)、ライブストリーミンググループ(AVChatRoom)、コミュニティ(Community)。詳細については、グループタイプの説明をご参照ください。 旧バージョンのSDKには、Private、ChatRoomおよびBChatRoomタイプも含まれていますが、使用を推奨しません |
Name | String | グループ名 | 読み取り/書き込み可能。最大30文字、変更不可 |
Introduction | String | グループ概要 | 読み取り/書き込み可能。最大240文字、変更不可 |
Notification | String | グループ公告 | 読み取り/書き込み可能。最大300文字、変更不可 |
FaceUrl | String | グループプロフィール画像URL | 読み取り/書き込み可能。最大100文字、変更不可 |
Owner_Account | String | グループマスターID | 読み取り専用 |
CreateTime | Integer | グループの作成時間 | 読み取り専用 |
InfoSeq | Integer | グループプロファイルを変更する度にこの値が増加 | 読み取り専用 |
LastInfoTime | Integer | グループの最後の情報変更時間 | 読み取り専用 |
LastMsgTime | Integer | グループ内の最後のメッセージ送信時間 | 読み取り専用 |
NextMsgSeq | Integer | グループ内の次のメッセージのSeq | 読み取り専用 グループ内の1件ごとのメッセージに一意のメッセージSeqがつき、かつそのSeqは、メッセージ送信順に連続した番号になります。1から始まり、グループ内でメッセージが1件増えるごとに、NextMsgSeqも1増えます(デフォルトでは、グループの参加/退会通知などのシステムメッセージもメッセージとなるため、NextMsgSeqが1増えます) |
MemberNum | Integer | 現在の参加者数 | 読み取り専用 |
MaxMemberNum | Integer | 最大参加者数 | 省略時のデフォルト値:課金上限。例えば、体験版であれば20です。アップグレードした場合、変更するグループ基本プロファイルに従ってこのフィールドを対応する数値に変更する必要があります |
ApplyJoinOption | String | グループ参加申請の選択項目 | グループ参加申請の選択項目には以下の種類があります。 DisableApplyは、いかなる人の参加申請も禁止することを表します。 NeedPermissionは、グループマスターまたは管理者による審査承認が必要なことを表します。 FreeAccessは、審査承認が不要でグループへの自由な参加が許可されていることを表します。 |
ご注意:
グループ名、グループ概要、グループ公告、グループプロフィール画像URLのフィールド修正権限は以下のとおりです。
友だちワークグループ(Work)では、いずれのグループ参加者も修正が可能です。
その他のグループタイプでは、一般参加者以外のロールによる修正が必要です。
グループ参加者プロファイル
フィールド名 | タイプ | 説明 | 備考 |
Member_Account | String | グループメンバーID | 読み取り専用 |
Role | String | グループ内の身分 | グループ内の身分には、Owner(グループマスター)、Admin(グループ管理者)および Member(グループ参加者)があります |
JoinTime | Integer | グループ参加時間 | 読み取り専用 |
MsgSeq | Integer | 当該参加者の現在の既読メッセージSeq | 読み取り専用 |
MsgFlag | String | メッセージ受信の選択項目 | メッセージ受信の選択項目には以下の種類があります。 AcceptAndNotifyは、受信および表示を表します。 AcceptNotNotifyは、受信および非表示を表します(APNsリモートプッシュをトリガーしません)。 Discardは、グループメッセージのブロックを表します(クライアントにメッセージをプッシュしません)。 |
LastSendMsgTime | Integer | 最後のメッセージ送信時間 | 3つの一般グループはサポートあり。ライブストリーミンググループはサポートなし |
NameCard | String | グループネームカード | 読み取り/書き込み可能。最大50バイト、変更不可 |
MuteUntil | Integer | 発言禁止状態 | 0は発言禁止されていないことを表します。0以外の場合、発言禁止状態の締切タイムスタンプを表します |
カスタムグループID
デフォルトの状態では、Appでのグループ作成時、新規作成したグループにデフォルトのグループIDをIMがアサインします。このIDは@TGS#で始まり、App内での一意性が保証されます。
グループIDをより簡単にして、記憶し伝播しやすくするため、IMでは、AppでREST APIによってグループを作成する時にグループIDをカスタマイズする機能をサポートしています。カスタムグループIDは、ASCII文字(0x20-0x7e)で出力できる必要があり、最大48文字、かつプレフィックスを@TGS#にすることはできません(デフォルトでアサインしたグループIDとの混同を避けるため)。
ご注意:
コミュニティ(Community)のプレフィックスは@TGS#_とする必要があります。
カスタムトピックス ID
デフォルトの状態では、Appでのトピックス作成時に、IMは新規に作成したトピックスにデフォルトのトピックスIDを割り当てます。このIDは
GroupId+@TOPIC#_
で始まり、グループ内で一意性が確保されています。簡単に広めるような覚えやすいトピックスIDにするために、IMでは、REST APIを使用しカスタムトピックスを作成する時にAppがカスタムトピックスIDを割り当てることがサポートされています。カスタムトピックスIDの形式として、
GroupId+@TOPIC#_+カスタム内容
です。そのうち、カスタム内容には、@TGS#_和@TOPIC#_@TOPIC#
を使用できず(デフォルトで割り当てたグループIDと間違えたことを回避するため)、印刷可能なASCII文字(0x20-0x7e
)を使用する必要があります。例えば、GroupIdが
@TGS#_@TGS#cQVLVHIM62CJ
で、カスタム内容がTestTopic
の場合、カスタムトピックスIDは@TGS#_@TGS#cQVLVHIM62CJ@TOPIC#_TestTopic
となります。カスタムトピックスIDの長さは96文字以内にする必要があります。カスタムフィールド
IMでは、Appで業務のニーズにもとづき、グループとグループメンバー(参加者)の2つのディメンションによってカスタムフィールドを設定する機能をサポートしています。グループディメンションでは最大10件のフィールドをサポートし、グループメンバーディメンションでは最大5件のフィールドをサポートします。カスタムフィールドを利用することで、Appで所定外のデータをグループに追加することができ、かつ既存のインターフェースを介して読み取り・書き込み操作を行うことができます。
特徴の紹介
各カスタムフィールドには以下の特性があります。
Key-Value形式になります。
KeyはString型、長さは16文字以内、命名にはアルファベット大文字・小文字、数字、アンダーバーのみサポートしています。
ValueはユーザーのカスタムBuffer、バイナリーデータにすることができます。グループディメンションのValueの長さは512文字以内、グループメンバーディメンションのValueの長さは64文字以内とします。
各Keyの最小読み取り権限、最小書き込み権限の設定をサポートしています。
各カスタムフィールドの読み取り/書き込み権限は上位から下位の順にそれぞれ次のようになります。
1. App管理者の読み取り/書き込みが可能。
2. グループマスターの読み取り/書き込みが可能。
3. グループ管理者の読み取り/書き込みが可能。
4. グループ参加者の読み取り/書き込みが可能。
5. いずれの人(非参加者を含む)も読み取り/書き込みが可能。
例えば、Appでグループ内にGroupLevelというフィールドを拡張する必要があり、そのValueが数字で、当該グループのレベル情報の記録に使用するとします。仮にレベル情報はAppバックエンドで計算する必要があるとしたならば、当該フィールドの最小書き込み権限は「App管理者が書き込み可能」でなければなりません。また当該フィールドはグループの公開プロファイルにする必要があるため、その最小読み取り権限は「いずれの人(非参加者を含む)も読み取り可能」でなければなりません。
C/C++の開発者に対しては、保存する必要があるValueが数字である場合、それを文字列形式の数字として保存し、バイナリー形式としないことを推奨します(例えば、保存する数字が1ならば、文字列“1”を保存し、バイナリーデータ0x01にはしません)。カスタムフィールドについては、IMによってこの後も更に多くの操作方式を拡張することになります。例えば、Valueに対する特定の数学的操作などですが、これらの演算では今後文字列形式にもとづき表示した数字によって操作が行われることになります。
設定方法
この2つのディメンションのカスタムフィールドは、IMコンソールで設定することができます。
グループメンバーディメンションのカスタムフィールドを設定する前に、先にグループタイプを指定する必要があります。ただしライブストリーミンググループ(AVChatRoom)およびそれを参照したグループタイプについては、全グループ参加者のプロファイルを保存しないため、グループメンバーディメンションのカスタムフィールドをサポートしていません。
「自分の読み取り/書き込み権限」とは、ユーザー本人のグループメンバーディメンションのカスタムフィールドの値に対して、自分が読み取り/書き込み権限を有するか否かを指します。例えば、グループメンバーディメンションのカスタムフィールド「MemberLevel」は、参加者のグループ内でのレベル表示に使用され、本人は自分のレベルを読み取ることはできますが、自分のレベルを修正する権限はありません。したがってこのフィールドの「自分の読み取り/書き込み権限」は「読み取り可能/書き込み不可」となります。
注意:
設定されたカスタムフィールドは削除または変更できませんので、ご注意ください。
カスタムコールバック
サードパーティコールバックは、Appで特殊なニーズを実現するための重要な方式の1つであり、アクションをカスタマイズする能力をユーザーに提供します。
IMのグループシステムでは、多様なコールバックをサポートしています。詳細内容は、サードパーティによるコールバックの概要およびコールバックコマンドリストをご参照ください。