メッセージ転送

機能説明

まとめて転送する機能を実装する場合は、次の手順を実行する必要があります:
1. 元のメッセージリストからまとめるメッセージを作成します。
2. まとめたメッセージをピアに送信します。
3. まとめたメッセージを受信した後、ピアは元のメッセージリストを解析します。
下図に示すように、まとめたメッセージを表示させるには、タイトルと概要情報も必要です:
まとめて転送
まとめたメッセージを表示させる
まとめたメッセージをクリックして、まとめたメッセージの一覧表示をダウンロード










メッセージをまとめて転送

まとめて転送するメッセージの作成・送信

まとめるメッセージを作成する場合、まとめるメッセージのリストを設定するだけでなく、タイトルと概要情報も設定する必要があります。実装プロセスは次のとおりです:
1. まとめるメッセージを作成します。まとめるメッセージを作成するとき、元のメッセージリスト、まとめるメッセージのタイトル、まとめるメッセージの概要などの情報を設定する必要があります。


プロパティ
意味
説明
merge_elem_message_array
元のメッセージリスト
まとめて転送する元のメッセージリスト
merge_elem_title
タイトル
まとめるメッセージのタイトル。たとえば、上記の図に示す「XixiyahとHelloのチャット履歴」です。
merge_elem_abstract_array
概要リスト
まとめるメッセージの概要情報。上記の図に示すように、まとめるメッセージは元のメッセージの概要情報を事前に表示させる必要があり、ユーザーがCellをクリックした後にのみ完全なメッセージの内容が表示されます。
merge_elem_compatible_text
対応のテキスト情報
低バージョンのSDKが統合メッセージをサポートしていない場合は、デフォルトでテキストメッセージを受信します。テキストメッセージの内容はmerge_elem_compatible_textです。
2. まとめるメッセージを作成して送信するためのサンプルコードを以下に示します:
// 転送する必要のあるメッセージリスト。メッセージリストには統合メッセージを含めることができますが、グループTipsメッセージを含めることはできません
var message = new Message
{
message_conv_id = conv_id,
message_conv_type = TIMConvType.kTIMConv_Group,
message_elem_array = new List<Elem>{
new Elem
{
elem_type = TIMElemType.kTIMElem_Merge,
merge_elem_title = "user1とuser2のチャット", // まとめるメッセージのタイトル
merge_elem_message_array = new List<Message>
{
message1,
message2
},
merge_elem_abstract_array = new List<string>
{
"user1:hello", "user2:こんにちは" // まとめるメッセージの概要リスト
},
merge_elem_compatible_text = "現在のバージョンではこのメッセージがサポートされていません" // まとめるメッセージの対応テキスト。低バージョンのSDKがまとめるメッセージをサポートしていない場合は、デフォルトでテキストメッセージを受信します。テキストメッセージの内容はcompatibleTextです
}},
};
StringBuilder messageId = new StringBuilder(128);
TIMResult res = TencentIMSDK.MsgSendMessage(conv_id, TIMConvType.kTIMConv_Group, message, messageId, (int code, string desc, string json_param, string user_data)=>{
// メッセージの非同期送信の結果
});


まとめて転送するメッセージの受信

リスナーの追加

受信者からAddRecvNewMsgCallback(クリックして詳細を表示)を呼び出すことで、セッションリスナーを追加できます。 一般に、アプリが時間内にメッセージを確実に受信できるように、チャットメッセージのインターフェースが初期化された後など、比較的早い時点で呼び出すことをお勧めします。
サンプルコードは次のとおりです:
TencentIMSDK.AddRecvNewMsgCallback((List<Message> messages, string user_data)=>{
foreach(Message message in messages)
{
foreach (Elem elem in message.message_elem_array)
{
// 次のメッセージがある
if (elem.elem_type == TIMElemType.kTIMElem_Merge)
{
}
}
}
})

メッセージの解析

リスナーを追加すると、受信者はRecvNewMsgCallbackでまとめたメッセージのMessageを受信します。 まとめるメッセージの要素を使用して、先にmerge_elem_titlemerge_elem_abstract_arrayのUI 表示を取得できます。 ユーザーがまとめたメッセージをクリックすると、MsgDownloadMergerMessage(クリックして詳細を表示)インターフェースを呼び出して、まとめたメッセージリストのUI表示をダウンロードします。
サンプルコードは次のとおりです:
if(elem.TIMElemType == TIMElemType.kTIMElem_Merge){
elem.merge_elem_abstract_array;
elem.merge_elem_layer_over_limit;
elem.merge_elem_title;
TIMResult res = TencentIMSDK.MsgDownloadMergerMessage(message, (int code, string desc, List<Message> messages, string user_data)=>{
// 非同期処理のロジック
});
}

メッセージを1つずつ転送

単一のメッセージを転送する必要がある場合は、先に元のメッセージとまったく同じ内容の転送メッセージを作成してから、MsgSendMessage (クリックして詳細を表示)インターフェースを呼び出して転送メッセージを送信できます。