最近我们在做机器人业务,机器人进来会随机聊天,聊天功能要集成sdk推给融云,融云再把结果推给app,app解析展示在直播里或者其他聊天自己设定场景里。
首先主播开播的聊天室创建我们是由app创建的,所以我的机器人的逻辑就是要调用融云的推送用户信息和聊天信息,其实我们都是聊天室消息的服务,因为怎么推送app已经定义好,哪个类型传过去就会放到聊天内容,哪个类型传过去就会对应展示用户都是已经定义好的。
当然想要测试调通融云的服务也可使用融云通过的api调用测试。
调用融云sdk推送消息代码
/*
* 发送聊天室消息
* @Author df
* @Date 2020/9/10 16:10
*/
public void chatroomSendMsg(ChatroomMsg chatroomMsg) {
RongCloud rongCloud = RongCloud.getInstance(chatroomMsg.getAppKey(), chatroomMsg.getAppSecret());
try {
TxtMessage txtMessage = new TxtMessage(chatroomMsg.getContent(), chatroomMsg.getExtra());
Chatroom chatroom = rongCloud.message.chatroom;
ChatroomMessage chatroomMessage = new ChatroomMessage()
// 发送人
.setSenderId("admin")
// 目标id,开播主播的通道id,融云那边能够知道的id
.setTargetId(chatroomMsg.getChatroomIds())
// 推送类型,文本类型
.setObjectName(chatroomMsg.getObjectName())
// 内容
.setContent(txtMessage);
ResponseResult chatroomResult = chatroom.send(chatroomMessage);
System.out.println("send chatroom message: " + chatroomResult.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
@Data
@Accessors(chain = true)
public class ChatroomMsg {
private String type;
private String content;
private String extra;
private String[] chatroomIds;
private String objectName = "RC:TxtMsg";
private String appKey;
private String appSecret;
}
测试一下,type:203,hot:值,的意思是直播间推送热度,这个都是自定义的信息
public static void main(String[] args) {
String[] chatroomIds = {"957"};
String extraHot = "{\"type\":203,\"hot\":30000}";
ChatroomMsg chatroomMsg = new ChatroomMsg().
setChatroomIds(chatroomIds).
setExtra(extraHot).setAppKey("app").setAppSecret("secret");
ChatroomHelper chatroomHelper = new ChatroomHelper();
chatroomHelper.chatroomSendMsg(chatroomMsg);
}
app端定义的type=2,msg_type=1,text="" 就是推送聊天信息
public static void main(String[] args) {
String extra = "{\"avatar_img\":\"member_head/1597922870808738.png\",\"hot\":0,\"liveID\":\"919\",\"msg_type\":1,\"nickname\":\"那又怎样\",\"text\":\"融云测试\",\"times\":0,\"total_num\":0,\"type\":\"2\",\"user_id\":\"957\"}";
String[] chatroomIds = {"957"};
ChatroomMsg chatroomMsg = new ChatroomMsg().
setChatroomIds(chatroomIds).
setExtra(extra).setAppKey("app").setAppSecret("secret");
ChatroomHelper chatroomHelper = new ChatroomHelper();
chatroomHelper.chatroomSendMsg(chatroomMsg);
}
上一个之前测试图
再把获取融云token和创建聊天室等代码发出来!
public class ChatroomHelper {
@Value("${rongcloud.appKey}")
private String appKey;
@Value("${rongcloud.appSecret}")
private String appSecret;
/*
* 创建聊天室
* @Author df
* @Date 2020/9/9 15:52
*/
public void chatroomCreate(ChatroomMsg chatroomMsg) {
RongCloud rongCloud = RongCloud.getInstance(chatroomMsg.getAppKey(), chatroomMsg.getAppSecret());
io.rong.methods.chatroom.Chatroom chatroom = rongCloud.chatroom;
ChatroomModel[] chatrooms = {
new ChatroomModel().setId("chatroomId1").setName("chatroomName1")
};
ResponseResult result = null;
try {
result = chatroom.create(chatrooms);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("create: " + result.toString());
}
/*
* 销毁聊天室
* @Author df
* @Date 2020/9/9 15:52
*/
public void chatroomDestroy(ChatroomMsg chatroomMsg) {
RongCloud rongCloud = RongCloud.getInstance(chatroomMsg.getAppKey(), chatroomMsg.getAppSecret());
io.rong.methods.chatroom.Chatroom chatroom = rongCloud.chatroom;
try {
ChatroomModel chatroomModel = new ChatroomModel()
.setId("chatroomId2");
ResponseResult chatroomDestroyResult = chatroom.destroy(chatroomModel);
System.out.println("destroy: " + chatroomDestroyResult.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* 发送聊天室消息
* @Author df
* @Date 2020/9/10 16:10
*/
public void chatroomSendMsg(ChatroomMsg chatroomMsg) {
RongCloud rongCloud = RongCloud.getInstance(chatroomMsg.getAppKey(), chatroomMsg.getAppSecret());
try {
TxtMessage txtMessage = new TxtMessage(chatroomMsg.getContent(), chatroomMsg.getExtra());
Chatroom chatroom = rongCloud.message.chatroom;
ChatroomMessage chatroomMessage = new ChatroomMessage()
.setSenderId("admin")
.setTargetId(chatroomMsg.getChatroomIds())
.setObjectName(chatroomMsg.getObjectName())
.setContent(txtMessage);
ResponseResult chatroomResult = chatroom.send(chatroomMessage);
System.out.println("send chatroom message: " + chatroomResult.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class UserHelper {
private String appKey = "appKey";
private String appSecret = "appSecret";
RongCloud rongCloud = RongCloud.getInstance(appKey, appSecret);
User user = rongCloud.user;
/*
* 获取融云token
* @Author df
* @Date 2020/9/9 15:30
*/
public TokenResult getToken() {
UserModel userModel = new UserModel()
.setId("100")
.setName("df")
.setPortrait("http://www.rongcloud.cn/images/logo.png");
TokenResult result = null;
try {
result = user.register(userModel);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("getToken: " + result.toString());
return result;
}
}
网上融云java SDK不太好找,我把找到的发给大家参考下:
https://docs.rongcloud.cn/im/server/sdk_api/index.html
https://www.rongcloud.cn/docs/server.html
https://github.com/rongcloud/server-sdk-java/tree/master/src/main/java/io/rong/example/user