添加发送消息的示例
This commit is contained in:
-19
@@ -1,19 +0,0 @@
|
||||
package cn.wildfirechat.messagecontentbuilder;
|
||||
|
||||
import cn.wildfirechat.pojos.MessagePayload;
|
||||
|
||||
abstract public class MediaMessageContentBuilder extends MessageContentBuilder{
|
||||
private String remoteMediaUrl;
|
||||
|
||||
public MediaMessageContentBuilder remoteMediaUrl(String remoteMediaUrl) {
|
||||
this.remoteMediaUrl = remoteMediaUrl;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected MessagePayload encodeBase() {
|
||||
MessagePayload payload = super.encodeBase();
|
||||
payload.setRemoteMediaUrl(remoteMediaUrl);
|
||||
return payload;
|
||||
}
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
package cn.wildfirechat.messagecontentbuilder;
|
||||
|
||||
import cn.wildfirechat.pojos.MessagePayload;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public abstract class MessageContentBuilder {
|
||||
private int mentionedType;
|
||||
private List<String> mentionedTargets;
|
||||
private String extra;
|
||||
public MessageContentBuilder mentionedType(int mentionedType) {
|
||||
this.mentionedType = mentionedType;
|
||||
return this;
|
||||
}
|
||||
public MessageContentBuilder mentionedTargets(List<String> mentionedTargets) {
|
||||
this.mentionedTargets = mentionedTargets;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MessageContentBuilder extra(String extra) {
|
||||
this.extra = extra;
|
||||
return this;
|
||||
}
|
||||
|
||||
protected MessagePayload encodeBase() {
|
||||
MessagePayload payload = new MessagePayload();
|
||||
payload.setMentionedType(mentionedType);
|
||||
payload.setMentionedTarget(mentionedTargets);
|
||||
payload.setExtra(extra);
|
||||
return payload;
|
||||
}
|
||||
abstract public MessagePayload build();
|
||||
}
|
||||
-88
@@ -1,88 +0,0 @@
|
||||
package cn.wildfirechat.messagecontentbuilder;
|
||||
|
||||
import cn.wildfirechat.pojos.MessagePayload;
|
||||
import cn.wildfirechat.proto.ProtoConstants;
|
||||
import io.netty.util.internal.StringUtil;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Base64;
|
||||
|
||||
public class RichNotificationContentBuilder extends MessageContentBuilder{
|
||||
private String title;
|
||||
private String desc;
|
||||
private String remark;
|
||||
private JSONArray datas;
|
||||
private String exName;
|
||||
private String exPortrait;
|
||||
private String exUrl;
|
||||
private String appId;
|
||||
|
||||
public static RichNotificationContentBuilder newBuilder(String title, String desc, String exUrl) {
|
||||
RichNotificationContentBuilder builder = new RichNotificationContentBuilder();
|
||||
builder.title = title;
|
||||
builder.desc = desc;
|
||||
builder.exUrl = exUrl;
|
||||
return builder;
|
||||
}
|
||||
|
||||
public RichNotificationContentBuilder remark(String remark) {
|
||||
this.remark = remark;
|
||||
return this;
|
||||
}
|
||||
public RichNotificationContentBuilder exName(String exName) {
|
||||
this.exName = exName;
|
||||
return this;
|
||||
}
|
||||
public RichNotificationContentBuilder exPortrait(String exPortrait) {
|
||||
this.exPortrait = exPortrait;
|
||||
return this;
|
||||
}
|
||||
public RichNotificationContentBuilder appId(String appId) {
|
||||
this.appId = appId;
|
||||
return this;
|
||||
}
|
||||
public RichNotificationContentBuilder addItem(String key, String value) {
|
||||
return addItem(key, value, null);
|
||||
}
|
||||
public RichNotificationContentBuilder addItem(String key, String value, String color) {
|
||||
if(this.datas == null) {
|
||||
this.datas = new JSONArray();
|
||||
}
|
||||
JSONObject item = new JSONObject();
|
||||
item.put("key", key);
|
||||
item.put("value", value == null ? "" : value);
|
||||
if(!StringUtil.isNullOrEmpty(color)) {
|
||||
item.put("color", color);
|
||||
}
|
||||
this.datas.add(item);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MessagePayload build() {
|
||||
MessagePayload payload = encodeBase();
|
||||
payload.setType(ProtoConstants.ContentType.Rich_Notification);
|
||||
payload.setPersistFlag(ProtoConstants.PersistFlag.Persist_And_Count);
|
||||
payload.setPushContent(title);
|
||||
payload.setContent(desc);
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
if(!StringUtil.isNullOrEmpty(remark))
|
||||
jsonObject.put("remark", remark);
|
||||
if(!StringUtil.isNullOrEmpty(exName))
|
||||
jsonObject.put("exName", exName);
|
||||
if(!StringUtil.isNullOrEmpty(exPortrait))
|
||||
jsonObject.put("exPortrait", exPortrait);
|
||||
if(!StringUtil.isNullOrEmpty(exUrl))
|
||||
jsonObject.put("exUrl", exUrl);
|
||||
if(!StringUtil.isNullOrEmpty(appId))
|
||||
jsonObject.put("appId", appId);
|
||||
if(datas != null && !datas.isEmpty())
|
||||
jsonObject.put("datas", datas);
|
||||
|
||||
payload.setBase64edData(Base64.getEncoder().encodeToString(jsonObject.toJSONString().getBytes(StandardCharsets.UTF_8)));
|
||||
|
||||
return payload;
|
||||
}
|
||||
}
|
||||
-25
@@ -1,25 +0,0 @@
|
||||
package cn.wildfirechat.messagecontentbuilder;
|
||||
|
||||
import cn.wildfirechat.pojos.MessagePayload;
|
||||
import cn.wildfirechat.proto.ProtoConstants;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public class SoundMessageContentBuilder extends MediaMessageContentBuilder {
|
||||
private int duration;
|
||||
public static SoundMessageContentBuilder newBuilder(int duration) {
|
||||
SoundMessageContentBuilder builder = new SoundMessageContentBuilder();
|
||||
builder.duration = duration;
|
||||
return builder;
|
||||
}
|
||||
@Override
|
||||
public MessagePayload build() {
|
||||
MessagePayload payload = encodeBase();
|
||||
payload.setType(ProtoConstants.ContentType.Voice);
|
||||
payload.setMediaType(ProtoConstants.MessageMediaType.VOICE);
|
||||
payload.setPersistFlag(ProtoConstants.PersistFlag.Persist_And_Count);
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("duration", duration);
|
||||
payload.setContent(jsonObject.toJSONString());
|
||||
return payload;
|
||||
}
|
||||
}
|
||||
-48
@@ -1,48 +0,0 @@
|
||||
package cn.wildfirechat.messagecontentbuilder;
|
||||
|
||||
import cn.wildfirechat.pojos.MessagePayload;
|
||||
import cn.wildfirechat.proto.ProtoConstants;
|
||||
import com.google.gson.Gson;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Base64;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class StreamingTextMessageContentBuilder extends MessageContentBuilder{
|
||||
private String text;
|
||||
private String streamId;
|
||||
private boolean generating;
|
||||
public static StreamingTextMessageContentBuilder newBuilder(String streamId) {
|
||||
StreamingTextMessageContentBuilder builder = new StreamingTextMessageContentBuilder();
|
||||
builder.generating = false;
|
||||
builder.streamId = streamId;
|
||||
return builder;
|
||||
}
|
||||
public StreamingTextMessageContentBuilder text(String text) {
|
||||
this.text = text;
|
||||
return this;
|
||||
}
|
||||
|
||||
public StreamingTextMessageContentBuilder generating(boolean generating) {
|
||||
this.generating = generating;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MessagePayload build() {
|
||||
MessagePayload payload = encodeBase();
|
||||
payload.setSearchableContent(text);
|
||||
payload.setContent(streamId);
|
||||
if(generating) {
|
||||
//正在生成消息的类型是14,存储标记位为透传为4。
|
||||
payload.setType(14);
|
||||
payload.setPersistFlag(4);
|
||||
} else {
|
||||
//已经生成消息的类型是15,存储标记位为透传为3。
|
||||
payload.setType(15);
|
||||
payload.setPersistFlag(3);
|
||||
}
|
||||
return payload;
|
||||
}
|
||||
}
|
||||
-21
@@ -1,21 +0,0 @@
|
||||
package cn.wildfirechat.messagecontentbuilder;
|
||||
|
||||
import cn.wildfirechat.pojos.MessagePayload;
|
||||
import cn.wildfirechat.proto.ProtoConstants;
|
||||
|
||||
public class TextMessageContentBuilder extends MessageContentBuilder{
|
||||
private String text;
|
||||
public static TextMessageContentBuilder newBuilder(String text) {
|
||||
TextMessageContentBuilder builder = new TextMessageContentBuilder();
|
||||
builder.text = text;
|
||||
return builder;
|
||||
}
|
||||
@Override
|
||||
public MessagePayload build() {
|
||||
MessagePayload payload = encodeBase();
|
||||
payload.setType(ProtoConstants.ContentType.Text);
|
||||
payload.setPersistFlag(ProtoConstants.PersistFlag.Persist_And_Count);
|
||||
payload.setSearchableContent(text);
|
||||
return payload;
|
||||
}
|
||||
}
|
||||
@@ -97,6 +97,10 @@ public class ProtoConstants {
|
||||
int Composited = 11;
|
||||
int Rich_Notification = 12;
|
||||
int Articles = 13;
|
||||
int StreamingText_Generationg = 14;
|
||||
int StreamingText_Generated = 15;
|
||||
int Not_Delivered = 16;
|
||||
int Ptt_Voice = 23;
|
||||
int Enter_Channel_Chat = 71;
|
||||
int Leave_Channel_Chat = 72;
|
||||
int Recall = 80;
|
||||
@@ -126,6 +130,12 @@ public class ProtoConstants {
|
||||
int Quit_Group_Visible_Notification = 121;
|
||||
int Modify_Group_Extra = 122;
|
||||
int Modify_Group_Member_Extra = 123;
|
||||
|
||||
int Call_Start = 400;
|
||||
int Call_Accept = 401;
|
||||
int Call_End = 402;
|
||||
int Call_Add_Participant = 406;
|
||||
int Call_Multi_Call_Ongoing = 416;
|
||||
}
|
||||
|
||||
public interface MessagePersistFlag {
|
||||
|
||||
Reference in New Issue
Block a user