/** * 发送聊天室消广播消息方法(一个用户向聊天室发送消息,单条消息最大 128k。每秒钟限 100 次。) * * @param message:发送消息内容,参考融云消息类型表.示例说明;如果 objectName 为自定义消息类型,该参数可自定义格式。融云消息类型在messages下,自定义消息继承BaseMessage即可(必传) * * @return ResponseResult * @throws Exception **/ public async Task <ResponseResult> Broadcast(ChatroomMessage message) { string code = CommonUtil.CheckFiled(message, PATH, CheckMethod.BROADCAST); if (null != code) { return(RongJsonUtil.JsonStringToObj <ResponseResult>(code)); } StringBuilder sb = new StringBuilder(); sb.Append("&fromUserId=").Append(HttpUtility.UrlEncode(message.SenderId, UTF8)); sb.Append("&objectName=").Append(HttpUtility.UrlEncode(message.Content.GetType(), UTF8)); sb.Append("&content=").Append(HttpUtility.UrlEncode(message.Content.ToString(), UTF8)); string body = sb.ToString(); if (body.IndexOf("&", StringComparison.OrdinalIgnoreCase) == 0) { body = body.Substring(1, body.Length - 1); } string result = await RongHttpClient.ExecutePost(AppKey, AppSecret, body, RongCloud.ApiHostType.Type + "/message/chatroom/broadcast.json", "application/x-www-form-urlencoded"); return(RongJsonUtil.JsonStringToObj <ResponseResult>( CommonUtil.GetResponseByCode(PATH, CheckMethod.BROADCAST, result))); }
/** * 加入聊天室方法 * * @param userId:要加入聊天室的用户 Id,可提交多个,最多不超过 50 个。(必传) * @param chatroomId:要加入的聊天室 Id。(必传) * * @return CodeSuccessReslut **/ public CodeSuccessReslut join(String[] userId, String chatroomId) { if (userId == null) { throw new ArgumentNullException("Paramer 'userId' is required"); } if (chatroomId == null) { throw new ArgumentNullException("Paramer 'chatroomId' is required"); } String postStr = ""; for (int i = 0; i < userId.Length; i++) { String child = userId[i]; postStr += "userId=" + HttpUtility.UrlEncode(child, Encoding.UTF8) + "&"; } postStr += "chatroomId=" + HttpUtility.UrlEncode(chatroomId == null ? "" : chatroomId, Encoding.UTF8) + "&"; postStr = postStr.Substring(0, postStr.LastIndexOf('&')); return((CodeSuccessReslut)RongJsonUtil.JsonStringToObj <CodeSuccessReslut>(RongHttpClient.ExecutePost(appKey, appSecret, RongCloud.RONGCLOUDURI + "/chatroom/join.json", postStr, "application/x-www-form-urlencoded"))); }
/** * 设置用户某会话接收新消息时是否进行消息提醒。 * * @param conversation 会话信息 其中type(必传) * @return ResponseResult **/ public async Task <ResponseResult> UnMute(ConversationModel conversation) { string message = CommonUtil.CheckFiled(conversation, PATH, CheckMethod.UNMUTE); if (null != message) { return(RongJsonUtil.JsonStringToObj <ResponseResult>(message)); } StringBuilder sb = new StringBuilder(); sb.Append("&conversationType=").Append(HttpUtility.UrlEncode(conversation.Type, UTF8)); sb.Append("&requestId=").Append(HttpUtility.UrlEncode(conversation.UserId, UTF8)); sb.Append("&targetId=").Append(HttpUtility.UrlEncode(conversation.TargetId, UTF8)); sb.Append("&isMuted=").Append(HttpUtility.UrlEncode("0", UTF8)); string body = sb.ToString(); if (body.IndexOf("&", StringComparison.OrdinalIgnoreCase) == 0) { body = body.Substring(1, body.Length - 1); } string result = await RongHttpClient.ExecutePost(AppKey, AppSecret, body, RongCloud.ApiHostType.Type + "/conversation/notification/set.json", "application/x-www-form-urlencoded"); return(RongJsonUtil.JsonStringToObj <ResponseResult>( CommonUtil.GetResponseByCode(PATH, CheckMethod.UNMUTE, result))); }
/** * 获取被封禁用户方法(每秒钟限 100 次) * * * @return QueryBlockUserReslut **/ public async Task <QueryBlockUserReslut> queryBlockAsync() { String postStr = ""; var rongClient = new RongHttpClient(); return((QueryBlockUserReslut)RongJsonUtil.JsonStringToObj <QueryBlockUserReslut>(await rongClient.ExecutePostAsync(appKey, appSecret, RongCloud.RONGCLOUDURI + "/user/block/query.json", postStr, "application/x-www-form-urlencoded"))); }
/** * 查询聊天室内用户方法 * * @param chatroomId:要查询的聊天室 ID。(必传) * @param count:要获取的聊天室成员数,上限为 500 ,超过 500 时最多返回 500 个成员。(必传) * @param order:加入聊天室的先后顺序, 1 为加入时间正序, 2 为加入时间倒序。(必传) * * @return ChatroomUserQueryReslut **/ public ChatroomUserQueryReslut queryUser(String chatroomId, String count, String order) { if (chatroomId == null) { throw new ArgumentNullException("Paramer 'chatroomId' is required"); } if (count == null) { throw new ArgumentNullException("Paramer 'count' is required"); } if (order == null) { throw new ArgumentNullException("Paramer 'order' is required"); } String postStr = ""; postStr += "chatroomId=" + HttpUtility.UrlEncode(chatroomId == null ? "" : chatroomId, Encoding.UTF8) + "&"; postStr += "count=" + HttpUtility.UrlEncode(count == null ? "" : count, Encoding.UTF8) + "&"; postStr += "order=" + HttpUtility.UrlEncode(order == null ? "" : order, Encoding.UTF8) + "&"; postStr = postStr.Substring(0, postStr.LastIndexOf('&')); return((ChatroomUserQueryReslut)RongJsonUtil.JsonStringToObj <ChatroomUserQueryReslut>(RongHttpClient.ExecutePost(appKey, appSecret, RongCloud.RONGCLOUDURI + "/chatroom/user/query.json", postStr, "application/x-www-form-urlencoded"))); }
/** * 批量移除敏感词方法(从敏感词列表中,移除某一敏感词。) * * @param words:敏感词数组,一次最多移除 50 个敏感词(必传) * * @return ResponseResult **/ public async Task <ResponseResult> BatchDelete(string[] words) { string message = CommonUtil.CheckParam("keyword", words, PATH, CheckMethod.BATCH_DELETE); if (null != message) { return(RongJsonUtil.JsonStringToObj <ResponseResult>(message)); } StringBuilder sb = new StringBuilder(); foreach (var word in words) { sb.Append("&words=").Append(HttpUtility.UrlEncode(word, UTF8)); } string body = sb.ToString(); if (body.IndexOf("&", StringComparison.OrdinalIgnoreCase) == 0) { body = body.Substring(1, body.Length - 1); } string result = await RongHttpClient.ExecutePost(AppKey, AppSecret, body, RongCloud.ApiHostType.Type + "/sensitiveword/batch/delete.json", "application/x-www-form-urlencoded"); return(RongJsonUtil.JsonStringToObj <ResponseResult>( CommonUtil.GetResponseByCode(PATH, CheckMethod.BATCH_DELETE, result))); }
/** * 移除应用内聊天室降级消息 * * @param objectNames:要销毁消息类型表。(必传) * * @return ResponseResult **/ public async Task <ResponseResult> Remove(string[] objectNames) { string message = CommonUtil.CheckParam("type", objectNames, PATH, CheckMethod.REMOVE); if (null != message) { return(RongJsonUtil.JsonStringToObj <ResponseResult>(message)); } StringBuilder sb = new StringBuilder(); for (int i = 0; i < objectNames.Length; i++) { string child = objectNames[i]; sb.Append("&objectName=").Append(HttpUtility.UrlEncode(child, UTF8)); } string body = sb.ToString(); if (body.IndexOf("&", StringComparison.OrdinalIgnoreCase) == 0) { body = body.Substring(1, body.Length - 1); } string result = await RongHttpClient.ExecutePost(AppKey, AppSecret, body, RongCloud.ApiHostType.Type + "/chatroom/message/priority/remove.json", "application/x-www-form-urlencoded"); return(RongJsonUtil.JsonStringToObj <ResponseResult>( CommonUtil.GetResponseByCode(PATH, CheckMethod.REMOVE, result))); }
/// <summary> /// 获取问卷列表 /// </summary> /// <param name="rowNum"></param> /// <returns></returns> public ReturnValueModel GetQuestionList(MeetInfoSubscribeDto dto, string body) { ReturnValueModel rvm = new ReturnValueModel(); var rowNum = RongJsonUtil.JsonStringToObj <RowNumModel <QuestionModel> >(body); string loginSecretkey = ConfigurationManager.AppSettings["ThirdPartyKey"]; string signature = RongHttpClient.GetHash(loginSecretkey + dto.Nonce + dto.SignTimestamp); if (signature.ToUpper() != dto.Signature.ToUpper()) { var massage = string.Format("Error:input={0}==>service={1},{2}", dto.Signature, signature, RongJsonUtil.ObjToJsonString(dto)); LoggerHelper.Error(massage); rvm.Success = false; rvm.Msg = massage; return(rvm); } var list = _rep.Where <QuestionModel>(s => s.IsDeleted != 1 && string.IsNullOrEmpty(s.MeetId)).Where(rowNum.SearchParams); var total = list.Count(); var rows = list.OrderByDescending(s => s.CreateTime).ToPaginationList(rowNum.PageIndex, rowNum.PageSize); rvm.Msg = "success"; rvm.Success = true; rvm.Result = new { total = total, rows = rows }; return(rvm); }
/** * 撤回群组消息。 * * @param message * * @return ResponseResult * @throws Exception **/ public async Task <Result> Recall(RecallMessage message) { //需要校验的字段 string errMsg = CommonUtil.CheckFiled(message, RECAL_PATH, CheckMethod.RECALL); if (null != errMsg) { return(RongJsonUtil.JsonStringToObj <ResponseResult>(errMsg)); } StringBuilder sb = new StringBuilder(); sb.Append("&conversationType=").Append(HttpUtility.UrlEncode("3", UTF8)); sb.Append("&fromUserId=").Append(HttpUtility.UrlEncode(message.SenderId, UTF8)); sb.Append("&targetId=").Append(HttpUtility.UrlEncode(message.TargetId, UTF8)); sb.Append("&messageUID=").Append(HttpUtility.UrlEncode(message.UId, UTF8)); sb.Append("&sentTime=").Append(HttpUtility.UrlEncode(message.SentTime, UTF8)); string body = sb.ToString(); if (body.IndexOf("&", StringComparison.OrdinalIgnoreCase) == 0) { body = body.Substring(1, body.Length - 1); } string result = await RongHttpClient.ExecutePost(AppKey, AppSecret, body, RongCloud.ApiHostType.Type + "/message/recall.json", "application/x-www-form-urlencoded"); return(RongJsonUtil.JsonStringToObj <ResponseResult>( CommonUtil.GetResponseByCode(PATH, CheckMethod.RECALL, result))); }
/** * 添加聊天室白名单成员方法 * * @param chatroom:聊天室.Id,memberIds 聊天室中白名单成员最多不超过 5 个。(必传) * * @return ResponseResult **/ public async Task <ResponseResult> Remove(ChatroomModel chatroom) { if (chatroom == null) { return(new ResponseResult(1002, "Paramer 'chatroom' is required")); } string message = CommonUtil.CheckFiled(chatroom, PATH, CheckMethod.REMOVE); if (null != message) { return(RongJsonUtil.JsonStringToObj <ResponseResult>(message)); } StringBuilder sb = new StringBuilder(); sb.Append("&chatroomId=").Append(HttpUtility.UrlEncode(chatroom.Id, UTF8)); ChatroomMember[] members = chatroom.Members; foreach (var member in members) { sb.Append("&userId=").Append(HttpUtility.UrlEncode(member.Id, UTF8)); } string body = sb.ToString(); if (body.IndexOf("&") == 0) { body = body.Substring(1, body.Length - 1); } string result = await RongHttpClient.ExecutePost(AppKey, AppSecret, body, RongCloud.ApiHostType.Type + "/chatroom/user/whitelist/remove.json", "application/x-www-form-urlencoded"); return(RongJsonUtil.JsonStringToObj <ResponseResult>(CommonUtil.GetResponseByCode(PATH, CheckMethod.REMOVE, result))); }
/** * 刷新用户信息方法 * url "/user/refresh" * docs "http://www.rongcloud.cn/docs/server.html#user_refresh" * * @param user 用户信息 id name portrait(必传) * * @return ResponseResult **/ public Result Update(UserModel user) { //需要校验的字段 String message = CommonUtil.CheckFiled(user, PATH, CheckMethod.UPDATE); if (null != message) { return((ResponseResult)RongJsonUtil.JsonStringToObj <ResponseResult>(message)); } StringBuilder sb = new StringBuilder(); sb.Append("&userId=").Append(HttpUtility.UrlEncode(user.id.ToString(), UTF8)); if (user.name != null) { sb.Append("&name=").Append(HttpUtility.UrlEncode(user.name.ToString(), UTF8)); } if (user.portrait != null) { sb.Append("&portraitUri=").Append(HttpUtility.UrlEncode(user.portrait.ToString(), UTF8)); } String body = sb.ToString(); if (body.IndexOf("&") == 0) { body = body.Substring(1, body.Length - 1); } String result = RongHttpClient.ExecutePost(appKey, appSecret, body, RongCloud.ApiHostType.Type + "/user/refresh.json", "application/x-www-form-urlencoded"); return((ResponseResult)RongJsonUtil.JsonStringToObj <ResponseResult>(CommonUtil.GetResponseByCode(PATH, CheckMethod.UPDATE, result))); }
/** * 获取用户标签 */ public async Task <Result> Get(string[] userIds) { if (userIds.Length < 1) { return(new Result(20005, "用户 Id 不能为空")); } StringBuilder sb = new StringBuilder(); foreach (string userId in userIds) { sb.Append("&userIds=").Append(HttpUtility.UrlEncode(userId, UTF8)); } string body = sb.ToString(); if (body.IndexOf("&", StringComparison.OrdinalIgnoreCase) == 0) { body = body.Substring(1, body.Length - 1); } string result = await RongHttpClient.ExecutePost(appKey, appSecret, body, RongCloud.ApiHostType.Type + "/user/tags/get.json", "application/x-www-form-urlencoded"); return(RongJsonUtil.JsonStringToObj <TagListResult>( CommonUtil.GetResponseByCode(PATH, CheckMethod.TAG_GET, result))); }
/** * 从黑名单中移除用户方法(每秒钟限 100 次) * * @param user:用户 Id,blacklist(必传) * * @return ResponseResult **/ public async Task <Result> Remove(UserModel user) { string message = CommonUtil.CheckFiled(user, PATH, CheckMethod.REMOVE); if (null != message) { return(RongJsonUtil.JsonStringToObj <ResponseResult>(message)); } StringBuilder sb = new StringBuilder(); sb.Append("&userId=").Append(HttpUtility.UrlEncode(user.Id, UTF8)); foreach (UserModel blackUser in user.GetBlacklist()) { sb.Append("&blackUserId=").Append(HttpUtility.UrlEncode(blackUser.Id, UTF8)); } string body = sb.ToString(); if (body.IndexOf("&", StringComparison.OrdinalIgnoreCase) == 0) { body = body.Substring(1, body.Length - 1); } string result = await RongHttpClient.ExecutePost(appKey, appSecret, body, RongCloud.ApiHostType.Type + "/user/blacklist/remove.json", "application/x-www-form-urlencoded"); return(RongJsonUtil.JsonStringToObj <BlackListResult>( CommonUtil.GetResponseByCode(PATH, CheckMethod.REMOVE, result))); }
/** * 添加敏感词方法(设置敏感词后,App 中用户不会收到含有敏感词的消息内容,默认最多设置 50 个敏感词。) * * @param word:敏感词,最长不超过 32 个字符。(必传) * * @return ResponseResult **/ public async Task <ResponseResult> Add(string word) { string message = CommonUtil.CheckParam("keyword", word, PATH, CheckMethod.ADD); if (null != message) { return(RongJsonUtil.JsonStringToObj <ResponseResult>(message)); } StringBuilder sb = new StringBuilder(); sb.Append("&word=").Append(HttpUtility.UrlEncode(word, UTF8)); string body = sb.ToString(); if (body.IndexOf("&", StringComparison.OrdinalIgnoreCase) == 0) { body = body.Substring(1, body.Length - 1); } string result = await RongHttpClient.ExecutePost(AppKey, AppSecret, body, RongCloud.ApiHostType.Type + "/wordfilter/add.json", "application/x-www-form-urlencoded"); return(RongJsonUtil.JsonStringToObj <ResponseResult>( CommonUtil.GetResponseByCode(PATH, CheckMethod.ADD, result))); }
/** * 解除用户封禁方法(每秒钟限 100 次) * * @param userId:用户 Id。(必传) * * @return ResponseResult **/ public async Task <ResponseResult> Remove(string userId) { //参数校验 string message = CommonUtil.CheckParam("id", userId, PATH, CheckMethod.REMOVE); if (null != message) { return(RongJsonUtil.JsonStringToObj <ResponseResult>(message)); } StringBuilder sb = new StringBuilder(); sb.Append("&userId=").Append(HttpUtility.UrlEncode(userId, UTF8)); string body = sb.ToString(); if (body.IndexOf("&", StringComparison.OrdinalIgnoreCase) == 0) { body = body.Substring(1, body.Length - 1); } string result = await RongHttpClient.ExecutePost(appKey, appSecret, body, RongCloud.ApiHostType.Type + "/user/unblock.json", "application/x-www-form-urlencoded"); return(RongJsonUtil.JsonStringToObj <ResponseResult>( CommonUtil.GetResponseByCode(PATH, CheckMethod.REMOVE, result))); }
/** * 移除禁言群成员方法 * * @param group:群组(必传) * * @return ResponseResult **/ public async Task <Result> Remove(GroupModel group) { //参数校验 string message = CommonUtil.CheckFiled(group, PATH, CheckMethod.REMOVE); if (null != message) { return(RongJsonUtil.JsonStringToObj <ResponseResult>(message)); } StringBuilder sb = new StringBuilder(); GroupMember[] members = group.Members; foreach (var member in members) { sb.Append("&userId=").Append(HttpUtility.UrlEncode(member.Id, UTF8)); } sb.Append("&groupId=").Append(HttpUtility.UrlEncode(@group.Id, UTF8)); string body = sb.ToString(); if (body.IndexOf("&", StringComparison.OrdinalIgnoreCase) == 0) { body = body.Substring(1, body.Length - 1); } string result = await RongHttpClient.ExecutePost(AppKey, AppSecret, body, RongCloud.ApiHostType.Type + "/group/user/gag/rollback.json", "application/x-www-form-urlencoded"); return(RongJsonUtil.JsonStringToObj <ListGagGroupUserResult>( CommonUtil.GetResponseByCode(PATH, CheckMethod.REMOVE, result))); }
/** * 添加聊天室消息白名单成员方法 * * @param objectNames:消息类型列表 * * @return ResponseResult **/ public async Task <ResponseResult> Add(string[] objectNames) { if (objectNames == null) { return(new ResponseResult(1002, "Paramer 'objectNames' is required")); } string errMsg = CommonUtil.CheckParam("objectNames", objectNames, PATH, CheckMethod.ADD); if (null != errMsg) { return(RongJsonUtil.JsonStringToObj <ResponseResult>(errMsg)); } StringBuilder sb = new StringBuilder(); for (int i = 0; i < objectNames.Length; i++) { string child = objectNames[i]; sb.Append("&objectnames=").Append(HttpUtility.UrlEncode(child, UTF8)); } string body = sb.ToString(); if (body.IndexOf("&", StringComparison.OrdinalIgnoreCase) == 0) { body = body.Substring(1, body.Length - 1); } string result = await RongHttpClient.ExecutePost(AppKey, AppSecret, body, RongCloud.ApiHostType.Type + "/chatroom/whitelist/add.json", "application/x-www-form-urlencoded"); return(RongJsonUtil.JsonStringToObj <ResponseResult>( CommonUtil.GetResponseByCode(PATH, CheckMethod.ADD, result))); }
/** * 添加封禁聊天室成员方法 * * @param chatroom:聊天室信息,memberIds(必传支持多个最多20个),minute:封禁时长,以分钟为单位,最大值为43200分钟。(必传) * * @return ResponseResult **/ public async Task <ResponseResult> Add(ChatroomModel chatroom) { string message = CommonUtil.CheckFiled(chatroom, PATH, CheckMethod.ADD); if (null != message) { return(RongJsonUtil.JsonStringToObj <ResponseResult>(message)); } StringBuilder sb = new StringBuilder(); ChatroomMember[] members = chatroom.Members; foreach (var member in members) { sb.Append("&userId=").Append(HttpUtility.UrlEncode(member.Id, UTF8)); } sb.Append("&chatroomId=").Append(HttpUtility.UrlEncode(chatroom.Id, UTF8)); sb.Append("&minute=").Append(HttpUtility.UrlEncode(chatroom.Minute.ToString(), UTF8)); string body = sb.ToString(); if (body.IndexOf("&", StringComparison.OrdinalIgnoreCase) == 0) { body = body.Substring(1, body.Length - 1); } string result = await RongHttpClient.ExecutePost(AppKey, AppSecret, body, RongCloud.ApiHostType.Type + "/chatroom/user/block/add.json", "application/x-www-form-urlencoded"); return(RongJsonUtil.JsonStringToObj <ResponseResult>( CommonUtil.GetResponseByCode(PATH, CheckMethod.ADD, result))); }
/** * 删除聊天室保活方法 * * @param chatroom: 聊天室信息,id(必传) * * @return ResponseResult **/ public async Task <ResponseResult> Remove(ChatroomModel chatroom) { string message = CommonUtil.CheckFiled(chatroom, PATH, CheckMethod.REMOVE); if (null != message) { return(RongJsonUtil.JsonStringToObj <ResponseResult>(message)); } StringBuilder sb = new StringBuilder(); sb.Append("&chatroomId=").Append(HttpUtility.UrlEncode(chatroom.Id, UTF8)); string body = sb.ToString(); if (body.IndexOf("&", StringComparison.OrdinalIgnoreCase) == 0) { body = body.Substring(1, body.Length - 1); } string result = await RongHttpClient.ExecutePost(AppKey, AppSecret, body, RongCloud.ApiHostType.Type + "/chatroom/keepalive/remove.json", "application/x-www-form-urlencoded"); return(RongJsonUtil.JsonStringToObj <ResponseResult>( CommonUtil.GetResponseByCode(PATH, CheckMethod.REMOVE, result))); }
/** * 查询被封禁聊天室成员方法 * * @param chatroomId:聊天室 Id。(必传) * * @return ListBlockChatroomUserResult **/ public async Task <ListBlockChatroomUserResult> GetList(string chatroomId) { string message = CommonUtil.CheckParam("id", chatroomId, PATH, CheckMethod.GETLIST); if (null != message) { return(RongJsonUtil.JsonStringToObj <ListBlockChatroomUserResult>(message)); } StringBuilder sb = new StringBuilder(); sb.Append("&chatroomId=").Append(HttpUtility.UrlEncode(chatroomId, UTF8)); string body = sb.ToString(); if (body.IndexOf("&", StringComparison.OrdinalIgnoreCase) == 0) { body = body.Substring(1, body.Length - 1); } string result = await RongHttpClient.ExecutePost(AppKey, AppSecret, body, RongCloud.ApiHostType.Type + "/chatroom/user/block/list.json", "application/x-www-form-urlencoded"); return(RongJsonUtil.JsonStringToObj <ListBlockChatroomUserResult>( CommonUtil.GetResponseByCode(PATH, CheckMethod.GETLIST, result))); }
/** * 同步用户所属群组方法(当第一次连接融云服务器时,需要向融云服务器提交 userId 对应的用户当前所加入的所有群组,此接口主要为防止应用中用户群信息同融云已知的用户所属群信息不同步。) * * @param userId:被同步群信息的用户 Id。(必传) * @param groupInfo:该用户的群信息,如群 Id 已经存在,则不会刷新对应群组名称,如果想刷新群组名称请调用刷新群组信息方法。 * * @return CodeSuccessReslut **/ public CodeSuccessReslut sync(String userId, GroupInfo[] groupInfo) { if (userId == null) { throw new ArgumentNullException("Paramer 'userId' is required"); } if (groupInfo == null) { throw new ArgumentNullException("Paramer 'groupInfo' is required"); } String postStr = ""; postStr += "userId=" + HttpUtility.UrlEncode(userId == null ? "" : userId, Encoding.UTF8) + "&"; if (groupInfo != null) { for (int i = 0; i < groupInfo.Length; i++) { String id = HttpUtility.UrlEncode(groupInfo[i].getId(), Encoding.UTF8); String name = HttpUtility.UrlEncode(groupInfo[i].getName(), Encoding.UTF8); postStr += "group[" + id + "]=" + name + "&"; } } postStr = postStr.Substring(0, postStr.LastIndexOf('&')); return((CodeSuccessReslut)RongJsonUtil.JsonStringToObj <CodeSuccessReslut>(RongHttpClient.ExecutePost(appKey, appSecret, RongCloud.RONGCLOUDURI + "/group/sync.json", postStr, "application/x-www-form-urlencoded"))); }
/** * 添加用户到黑名单方法(每秒钟限 100 次) * * @param user:用户 Id,blacklist(必传) * * @return ResponseResult **/ public Result Add(UserModel user) { String message = CommonUtil.CheckFiled(user, PATH, CheckMethod.ADD); if (null != message) { return((ResponseResult)RongJsonUtil.JsonStringToObj <ResponseResult>(message)); } StringBuilder sb = new StringBuilder(); sb.Append("&userId=").Append(HttpUtility.UrlEncode(user.Id.ToString(), UTF8)); foreach (UserModel blackUser in user.GetBlacklist()) { sb.Append("&blackUserId=").Append(HttpUtility.UrlEncode(blackUser.Id.ToString(), UTF8)); } String body = sb.ToString(); if (body.IndexOf("&") == 0) { body = body.Substring(1, body.Length - 1); } String result = RongHttpClient.ExecutePost(appKey, appSecret, body, RongCloud.ApiHostType.Type + "/user/blacklist/add.json", "application/x-www-form-urlencoded"); return((ResponseResult)RongJsonUtil.JsonStringToObj <ResponseResult>(CommonUtil.GetResponseByCode(PATH, CheckMethod.ADD, result))); }
/** * 获取 Token 方法 * * @param userId:用户 Id,最大长度 64 字节.是用户在 App 中的唯一标识码,必须保证在同一个 App 内不重复,重复的用户 Id 将被当作是同一用户。(必传) * @param name:用户名称,最大长度 128 字节.用来在 Push 推送时显示用户的名称.用户名称,最大长度 128 字节.用来在 Push 推送时显示用户的名称。(必传) * @param portraitUri:用户头像 URI,最大长度 1024 字节.用来在 Push 推送时显示用户的头像。(必传) * * @return TokenReslut **/ public async Task <TokenReslut> getTokenAsync(String userId, String name, String portraitUri) { if (userId == null) { throw new ArgumentNullException("Paramer 'userId' is required"); } if (name == null) { throw new ArgumentNullException("Paramer 'name' is required"); } if (portraitUri == null) { throw new ArgumentNullException("Paramer 'portraitUri' is required"); } String postStr = ""; postStr += "userId=" + HttpUtility.UrlEncode(userId == null ? "" : userId) + "&"; postStr += "name=" + HttpUtility.UrlEncode(name == null ? "" : name) + "&"; postStr += "portraitUri=" + HttpUtility.UrlEncode(portraitUri == null ? "" : portraitUri) + "&"; postStr = postStr.Substring(0, postStr.LastIndexOf('&')); var rongClient = new RongHttpClient(); string result = await rongClient.ExecutePostAsync(appKey, appSecret, RongCloud.RONGCLOUDURI + "/user/getToken.json", postStr, "application/x-www-form-urlencoded"); return((TokenReslut)RongJsonUtil.JsonStringToObj <TokenReslut>(result)); }
/// <summary> /// 融云-删除-聊天室保活服务 /// </summary> /// <returns></returns> public ReturnValueModel ChatroomKeepaliveRemove(ChatroomInputDto inputDto, WorkUser workUser) { ReturnValueModel rvm = new ReturnValueModel(); string body = $"chatroomId={HttpUtility.UrlEncode(inputDto.Id, Encoding.UTF8)}"; string appKey = ConfigurationManager.AppSettings["RongCloudAppKey"]; string appSecret = ConfigurationManager.AppSettings["RongCloudAppSecret"]; string _host = ConfigurationManager.AppSettings["RongCloudUrl"]; string url = $"{_host}/chatroom/keepalive/remove.json"; String result = RongHttpClient.ExecutePost(appKey, appSecret, body, url, "application/x-www-form-urlencoded"); var res = (ResponseResult)RongJsonUtil.JsonStringToObj <ResponseResult>(result); if (res.Code == 200) { rvm.Msg = "success"; rvm.Success = true; rvm.Result = res; return(rvm); } else { rvm.Msg = "删除聊天室保活失败"; rvm.Success = false; rvm.Result = result; return(rvm); } }
/** * 添加封禁聊天室成员方法 * * @param userId:用户 Id。(必传) * @param chatroomId:聊天室 Id。(必传) * @param minute:封禁时长,以分钟为单位,最大值为43200分钟。(必传) * * @return CodeSuccessReslut **/ public CodeSuccessReslut addBlockUser(String userId, String chatroomId, String minute) { if (userId == null) { throw new ArgumentNullException("Paramer 'userId' is required"); } if (chatroomId == null) { throw new ArgumentNullException("Paramer 'chatroomId' is required"); } if (minute == null) { throw new ArgumentNullException("Paramer 'minute' is required"); } String postStr = ""; postStr += "userId=" + HttpUtility.UrlEncode(userId == null ? "" : userId, Encoding.UTF8) + "&"; postStr += "chatroomId=" + HttpUtility.UrlEncode(chatroomId == null ? "" : chatroomId, Encoding.UTF8) + "&"; postStr += "minute=" + HttpUtility.UrlEncode(minute == null ? "" : minute, Encoding.UTF8) + "&"; postStr = postStr.Substring(0, postStr.LastIndexOf('&')); return((CodeSuccessReslut)RongJsonUtil.JsonStringToObj <CodeSuccessReslut>(RongHttpClient.ExecutePost(appKey, appSecret, RongCloud.RONGCLOUDURI + "/chatroom/user/block/add.json", postStr, "application/x-www-form-urlencoded"))); }
/// <summary> /// 融云-获取聊天室保活 /// </summary> /// <returns></returns> public ReturnValueModel ChatroomKeepaliveGetList() { ReturnValueModel rvm = new ReturnValueModel(); string appKey = ConfigurationManager.AppSettings["RongCloudAppKey"]; string appSecret = ConfigurationManager.AppSettings["RongCloudAppSecret"]; string _host = ConfigurationManager.AppSettings["RongCloudUrl"]; string url = $"{_host}/chatroom/keepalive/query.json"; String result = RongHttpClient.ExecutePost(appKey, appSecret, "", url, "application/x-www-form-urlencoded"); var res = (ChatroomKeepaliveResult)RongJsonUtil.JsonStringToObj <ChatroomKeepaliveResult>(result); if (res.Code == 200) { rvm.Msg = "success"; rvm.Success = true; rvm.Result = res; return(rvm); } else { rvm.Msg = "success"; rvm.Success = false; rvm.Result = result; return(rvm); } }
/** * 发送短信验证码方法。 * * @param mobile:接收短信验证码的目标手机号,每分钟同一手机号只能发送一次短信验证码,同一手机号 1 小时内最多发送 3 次。(必传) * @param templateId:短信模板 Id,在开发者后台->短信服务->服务设置->短信模版中获取。(必传) * @param region:手机号码所属国家区号,目前只支持中图区号 86) * @param verifyId:图片验证标识 Id ,开启图片验证功能后此参数必传,否则可以不传。在获取图片验证码方法返回值中获取。 * @param verifyCode:图片验证码,开启图片验证功能后此参数必传,否则可以不传。 * * @return SMSSendCodeReslut **/ public SMSSendCodeReslut sendCode(String mobile, String templateId, String region, String verifyId, String verifyCode) { if (mobile == null) { throw new ArgumentNullException("Paramer 'mobile' is required"); } if (templateId == null) { throw new ArgumentNullException("Paramer 'templateId' is required"); } if (region == null) { throw new ArgumentNullException("Paramer 'region' is required"); } String postStr = ""; postStr += "mobile=" + HttpUtility.UrlEncode(mobile == null ? "" : mobile, Encoding.UTF8) + "&"; postStr += "templateId=" + HttpUtility.UrlEncode(templateId == null ? "" : templateId, Encoding.UTF8) + "&"; postStr += "region=" + HttpUtility.UrlEncode(region == null ? "" : region, Encoding.UTF8) + "&"; postStr += "verifyId=" + HttpUtility.UrlEncode(verifyId == null ? "" : verifyId, Encoding.UTF8) + "&"; postStr += "verifyCode=" + HttpUtility.UrlEncode(verifyCode == null ? "" : verifyCode, Encoding.UTF8) + "&"; postStr = postStr.Substring(0, postStr.LastIndexOf('&')); return((SMSSendCodeReslut)RongJsonUtil.JsonStringToObj <SMSSendCodeReslut>(RongHttpClient.ExecutePost(appKey, appSecret, RongCloud.RONGCLOUDSMSURI + "/sendCode.json", postStr, "application/x-www-form-urlencoded"))); }
/** * 检查用户在线状态 方法(每秒钟限100次) * 请不要频繁循环调用此接口,而是选择合适的频率和时机调用,此接口设置了一定的频率限制。 * * url /user/checkOnline * docs http://www.rongcloud.cn/docs/server.html#user_check_online * * @param user:用户 id(必传) * * @return CheckOnlineResult **/ public async Task <CheckOnlineResult> Check(UserModel user) { //参数校验 string message = CommonUtil.CheckFiled(user, PATH, CheckMethod.CHECK); if (null != message) { return(RongJsonUtil.JsonStringToObj <CheckOnlineResult>(message)); } StringBuilder sb = new StringBuilder(); sb.Append("&userId=").Append(HttpUtility.UrlEncode(user.id, UTF8)); string body = sb.ToString(); if (body.IndexOf("&", StringComparison.OrdinalIgnoreCase) == 0) { body = body.Substring(1, body.Length); } string result = await RongHttpClient.ExecutePost(appKey, appSecret, body, RongCloud.ApiHostType.Type + "/user/checkOnline.json", "application/x-www-form-urlencoded"); return(RongJsonUtil.JsonStringToObj <CheckOnlineResult>( CommonUtil.GetResponseByCode(PATH, CheckMethod.CHECK, result))); }
/** * 发送广播消息方法(发送消息给一个应用下的所有注册用户,如用户未在线会对满足条件(绑定手机终端)的用户发送 Push 信息,单条消息最大 128k,会话类型为 SYSTEM。每小时只能发送 1 次,每天最多发送 3 次。) * * @param fromUserId:发送人用户 Id。(必传) * @param txtMessage:文本消息。 * @param pushContent:定义显示的 Push 内容,如果 objectName 为融云内置消息类型时,则发送后用户一定会收到 Push 信息. 如果为自定义消息,则 pushContent 为自定义消息显示的 Push 内容,如果不传则用户不会收到 Push 通知.(可选) * @param pushData:针对 iOS 平台为 Push 通知时附加到 payload 中,Android 客户端收到推送消息时对应字段名为 pushData。(可选) * @param os:针对操作系统发送 Push,值为 iOS 表示对 iOS 手机用户发送 Push ,为 Android 时表示对 Android 手机用户发送 Push ,如对所有用户发送 Push 信息,则不需要传 os 参数。(可选) * * @return CodeSuccessReslut **/ public CodeSuccessReslut broadcast(String fromUserId, TxtMessage message, String pushContent, String pushData, String os) { if (fromUserId == null) { throw new ArgumentNullException("Paramer 'fromUserId' is required"); } if (message.getType() == null) { throw new ArgumentNullException("Paramer 'ObjectName' is required"); } if (message.toString() == null) { throw new ArgumentNullException("Paramer 'Content' is required"); } String postStr = ""; postStr += "fromUserId=" + HttpUtility.UrlEncode(fromUserId == null ? "" : fromUserId, Encoding.UTF8) + "&"; postStr += "objectName=" + HttpUtility.UrlEncode(message.getType(), Encoding.UTF8) + "&"; postStr += "content=" + HttpUtility.UrlEncode(message.toString(), Encoding.UTF8) + "&"; postStr += "pushContent=" + HttpUtility.UrlEncode(pushContent == null ? "" : pushContent, Encoding.UTF8) + "&"; postStr += "pushData=" + HttpUtility.UrlEncode(pushData == null ? "" : pushData, Encoding.UTF8) + "&"; postStr += "os=" + HttpUtility.UrlEncode(os == null ? "" : os, Encoding.UTF8) + "&"; postStr = postStr.Substring(0, postStr.LastIndexOf('&')); return((CodeSuccessReslut)RongJsonUtil.JsonStringToObj <CodeSuccessReslut>(RongHttpClient.ExecutePost(appKey, appSecret, RongCloud.RONGCLOUDURI + "/message/broadcast.json", postStr, "application/x-www-form-urlencoded"))); }
/** * 查询被聊天室全局禁言用户方法 * * @return ListGagChatroomUserResult **/ public async Task <ListGagChatroomUserResult> GetList() { string result = await RongHttpClient.ExecutePost(AppKey, AppSecret, "", RongCloud.ApiHostType.Type + "/chatroom/user/ban/query.json", "application/x-www-form-urlencoded"); return(RongJsonUtil.JsonStringToObj <ListGagChatroomUserResult>(CommonUtil.GetResponseByCode(PATH, CheckMethod.GETLIST, result))); }