当前位置: 首页 > news >正文

网站建设策划报价单如何做好网络推广工作

网站建设策划报价单,如何做好网络推广工作,商城型外贸网站建设,wordpress 访问源端口号在前面我们已经对接好了腾讯多人音视频房间相关内容:Java对接腾讯多人音视频房间示例 为了完善业务逻辑,我们还需要对接它的一些回调接口 官方文档地址 主要就下面这些 这里因为比较简单直接上代码 里面有些工具类和上一章一样这里就没贴,需要…

在前面我们已经对接好了腾讯多人音视频房间相关内容:Java对接腾讯多人音视频房间示例
为了完善业务逻辑,我们还需要对接它的一些回调接口 官方文档地址
主要就下面这些

在这里插入图片描述

这里因为比较简单直接上代码
里面有些工具类和上一章一样这里就没贴,需要的看下我上一章Java对接腾讯多人音视频房间示例


import lombok.extern.java.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;/*** @Description: 腾讯会议回调* @Author: Sakura* @Date: 2023/12/18 14:43*/
@Log
@RestController
@RequestMapping("/txcloud/callback")
public class TxCallbackController {@Value("${tencent.roomctl.SDKAppId}")private Long SDKAppId;@AutowiredTxCallbackService txCallbackService;@AutowiredCallbackListenerStrategyContext callbackListenerStrategyContext;//    // 实例参数
//    {
//        "address": "https://www.zscloud.work:29000/api/txcloud/callback/listener",
//        "actions": ["createRoom", "destroyRoom", "updateRoomInfo", "enterRoom", "exitRoom", "updateUserRole", "takeSeat", "leaveSeat"]
//    }/*** @Description: 配置回调地址* @Author: Sakura* @Date: 2023/12/18 14:52*/@PostMapping("/create")public Result createCallback(@RequestBody CreateCallbackRequest createCallbackRequest) {return txCallbackService.createCallback(createCallbackRequest);}/** * @Description: 修改回调地址配置* @Author: Sakura* @Date: 2023/12/19 15:55*/@PostMapping("/update")public Result updateCallback(@RequestBody CreateCallbackRequest createCallbackRequest) {return txCallbackService.updateCallback(createCallbackRequest);}/*** @Description: 回调监听* @Author: Sakura* @Date: 2023/12/19 11:00*/@PostMapping("/listener")public CallbackResponse callbackListener(@RequestParam Long sdkappid, @RequestParam String command,@RequestParam String contenttype, @RequestParam String clientip,@RequestParam String optplatform,@RequestBody CallbackRoomInfoRequest callbackRoomInfoRequest) {log.info("回调监听:" + "sdkappid:" + sdkappid + "  command:" + command + "  " + callbackRoomInfoRequest.toString());// 目前只能校验SDKAppId是否一致if (!SDKAppId.equals(sdkappid)) {return CallbackResponse.ERROR();}return callbackListenerStrategyContext.callbackListener(command, callbackRoomInfoRequest);}}

/** * @Description: 多人视频管理* @Author: Sakura* @Date: 2023/12/14 17:46
*/
public interface TxCallbackService {Result createCallback(CreateCallbackRequest createCallbackRequest);Result updateCallback(CreateCallbackRequest createCallbackRequest);}

import lombok.extern.java.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;/** * @Description: 回调管理* @Author: Sakura* @Date: 2023/12/18 14:52
*/
@Log
@Service
public class TxCallbackServiceImpl implements TxCallbackService {@AutowiredRoomctlUtil roomctlUtil;/*** @Description: 预约会议* @Author: Sakura* @Date: 2023/12/14 17:46*/@Override@Transactionalpublic Result createCallback(CreateCallbackRequest createCallbackRequest) {String result = roomctlUtil.createCallback(createCallbackRequest.getAddress(), createCallbackRequest.getActions());if (!"ok".equals(result)) {return Result.ERROR(result);}return Result.SUCCESS();}@Override@Transactionalpublic Result updateCallback(CreateCallbackRequest createCallbackRequest) {String result = roomctlUtil.updateCallback(createCallbackRequest.getAddress(), createCallbackRequest.getActions());if (!"ok".equals(result)) {return Result.ERROR(result);}return Result.SUCCESS();}}

下面是请求参数的封装类


import lombok.Data;
import lombok.EqualsAndHashCode;import java.util.List;/** * @Description: 创建回调参数* @Author: Sakura* @Date: 2023/12/18 14:50
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class CreateCallbackRequest extends PageRequest {private static final long serialVersionUID = 1L;// 回调的地址,需要以 http/https 开头,建议使用更为安全的 httpsprivate String address;// 需要触发回调的情景,列表请参考 回调命令字private List<String> actions;}

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;import java.io.Serializable;/** * @Description: 回调房间详细信息 * @Author: Sakura* @Date: 2023/12/19 13:43
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class CallbackRoomInfoRequest implements Serializable {private static final long serialVersionUID = 1L;// 操作的用户 ID@JsonProperty("UserId")private String UserId;// 角色类型:0为房主,1为管理员,2为普通成员@JsonProperty("UserRole")private Integer UserRole;// 操作的房间 ID@JsonProperty("RoomId")private String RoomId;// 当前房间成员数量@JsonProperty("MemberCount")private Integer MemberCount;// 用户退出的原因@JsonProperty("ExitReason")private String ExitReason;// 当前的麦位数量@JsonProperty("SeatCount")private Integer SeatCount;// 房间详情@JsonProperty("RoomInfo")private RoomInfoRequest RoomInfo;// 事件触发时间戳@JsonProperty("EventTime")private Long EventTime;
}

import lombok.Data;
import lombok.EqualsAndHashCode;import java.io.Serializable;/*** @Description: 回调房间信息* @Author: Sakura* @Date: 2023/12/19 13:41*/
@Data
@EqualsAndHashCode(callSuper = false)
public class RoomInfoRequest implements Serializable {private static final long serialVersionUID = 1L;// 最大麦位数量,默认为套餐包上限,(直播最大16个 默认16)@JsonProperty("MaxSeatCount")private Integer MaxSeatCount;// 房间名称。默认为房间 ID@JsonProperty("RoomName")private String RoomName;// 房间类型:1为会议,2为直播\n 默认为:会议1@JsonProperty("RoomType")private Integer RoomType;// 麦控模式:1为自由发言模式,2为举手发言模式,3为就座后发言(抢麦位)\n默认为:自由发言模式1@JsonProperty("SpeechMode")private Integer SpeechMode;// 全体禁画 默认 false@JsonProperty("DisableVideo")private Boolean DisableVideo;// 全体静音 默认 false@JsonProperty("DisableAudio")private Boolean DisableAudio;// 禁止所有成员发送文本消息 默认 false@JsonProperty("DisableMessage")private Boolean DisableMessage;}

再就是回调这块,因为回调的都是一个方法,通过command来区分,所以这里用策略模式来处理


import lombok.SneakyThrows;
import org.springframework.stereotype.Service;import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;/*** @author Sakura* @date 2023/12/19 11:16*/
@Service
public class CallbackListenerStrategyContext {// 策略采用lambda的方法存储Map<String, Function<CallbackRoomInfoRequest, CallbackResponse>> strategyContextMap = new HashMap<>();@ResourceCallbackListenerService callbackListenerService;@PostConstruct@SneakyThrowspublic void setStrategyMap() {// 配置回调方法strategyContextMap.put("createRoom",(callbackRoomInfoRequest)-> callbackListenerService.createRoom(callbackRoomInfoRequest));strategyContextMap.put("destroyRoom",(callbackRoomInfoRequest)-> callbackListenerService.destroyRoom(callbackRoomInfoRequest));strategyContextMap.put("updateRoomInfo",(callbackRoomInfoRequest)-> callbackListenerService.updateRoomInfo(callbackRoomInfoRequest));strategyContextMap.put("enterRoom",(callbackRoomInfoRequest)-> callbackListenerService.enterRoom(callbackRoomInfoRequest));strategyContextMap.put("exitRoom",(callbackRoomInfoRequest)-> callbackListenerService.exitRoom(callbackRoomInfoRequest));strategyContextMap.put("takeSeat",(callbackRoomInfoRequest)-> callbackListenerService.takeSeat(callbackRoomInfoRequest));strategyContextMap.put("leaveSeat",(callbackRoomInfoRequest)-> callbackListenerService.leaveSeat(callbackRoomInfoRequest));}public CallbackResponse callbackListener(String command, CallbackRoomInfoRequest callbackRoomInfoRequest){// 根据command获取对应的方法返回策略Function<CallbackRoomInfoRequest, CallbackResponse> callbackListenerFunc = strategyContextMap.get(command);return callbackListenerFunc.apply(callbackRoomInfoRequest);}
}

import lombok.extern.java.Log;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** @author Sakura* @date 2023/12/19 11:42*/
@Service
@Log
public class CallbackListenerService {// 此处用来统一处理多人视频房间回调++++++++++++++++++++++++++++++++++++++++++++// 创建房间回调public CallbackResponse createRoom(CallbackRoomInfoRequest callbackRoomInfoRequest){log.info("创建房间回调" + callbackRoomInfoRequest.toString());return CallbackResponse.success();}// 销毁房间回调public CallbackResponse destroyRoom(CallbackRoomInfoRequest callbackRoomInfoRequest){log.info("销毁房间回调" + callbackRoomInfoRequest.toString());return CallbackResponse.success();}// 更新房间回调public CallbackResponse updateRoomInfo(CallbackRoomInfoRequest callbackRoomInfoRequest){log.info("更新房间回调" + callbackRoomInfoRequest.toString());return CallbackResponse.success();}// 用户进房回调public CallbackResponse enterRoom(CallbackRoomInfoRequest callbackRoomInfoRequest){log.info("用户进房回调" + callbackRoomInfoRequest.toString());return CallbackResponse.success();}// 用户退房回调public CallbackResponse exitRoom(CallbackRoomInfoRequest callbackRoomInfoRequest){log.info("用户退房回调" + callbackRoomInfoRequest.toString());return CallbackResponse.success();}// 用户上麦回调public CallbackResponse takeSeat(CallbackRoomInfoRequest callbackRoomInfoRequest){log.info("用户上麦回调" + callbackRoomInfoRequest.toString());return CallbackResponse.success();}// 用户下麦回调public CallbackResponse leaveSeat(CallbackRoomInfoRequest callbackRoomInfoRequest){log.info("用户下麦回调" + callbackRoomInfoRequest.toString());return CallbackResponse.success();}
}

返回对象


import lombok.Data;
import lombok.EqualsAndHashCode;import java.io.Serializable;/** * @Description: 回调返回信息* @Author: Sakura* @Date: 2023/12/19 13:41
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class CallbackResponse implements Serializable {private static final long serialVersionUID = 1L;// 当前房间成员数量private Integer ErrorCode;// 操作的房间 IDprivate String ErrorMessage;public static CallbackResponse success() {CallbackResponse callbackResponse = new CallbackResponse();callbackResponse.setErrorCode(0);callbackResponse.setErrorMessage("Success");return callbackResponse;}public static CallbackResponse ERROR() {CallbackResponse callbackResponse = new CallbackResponse();callbackResponse.setErrorCode(1);callbackResponse.setErrorMessage("Fail");return callbackResponse;}}

我们需要先调用配置回调地址的接口把我们的接口配置上去

{"address": "https://www.sakura.com/txcloud/callback/listener","actions": ["createRoom", "destroyRoom", "updateRoomInfo", "enterRoom", "exitRoom", "updateUserRole", "takeSeat", "leaveSeat"]
}

在这里插入图片描述

注意address换成自己的域名,actions可以照着写

这样就能收到回调信息了


文章转载自:
http://ribald.jpkk.cn
http://octangle.jpkk.cn
http://bastard.jpkk.cn
http://felice.jpkk.cn
http://leishmanial.jpkk.cn
http://telemark.jpkk.cn
http://pagan.jpkk.cn
http://transderivational.jpkk.cn
http://concourse.jpkk.cn
http://iridochoroiditis.jpkk.cn
http://orthogonal.jpkk.cn
http://debarrass.jpkk.cn
http://unflappability.jpkk.cn
http://gittern.jpkk.cn
http://lithotritor.jpkk.cn
http://cordage.jpkk.cn
http://underhand.jpkk.cn
http://liberaloid.jpkk.cn
http://optokinetic.jpkk.cn
http://caravel.jpkk.cn
http://fussock.jpkk.cn
http://shaving.jpkk.cn
http://metonic.jpkk.cn
http://swineherd.jpkk.cn
http://steamer.jpkk.cn
http://msa.jpkk.cn
http://cytase.jpkk.cn
http://alembic.jpkk.cn
http://ventriculopuncture.jpkk.cn
http://cognoscente.jpkk.cn
http://freak.jpkk.cn
http://volcanic.jpkk.cn
http://oblomovism.jpkk.cn
http://deficiency.jpkk.cn
http://midgarth.jpkk.cn
http://jailbait.jpkk.cn
http://ctol.jpkk.cn
http://mcfd.jpkk.cn
http://ananda.jpkk.cn
http://betelgeuse.jpkk.cn
http://clement.jpkk.cn
http://pulverous.jpkk.cn
http://transversal.jpkk.cn
http://harem.jpkk.cn
http://releasor.jpkk.cn
http://terrapin.jpkk.cn
http://become.jpkk.cn
http://intermixable.jpkk.cn
http://ghoul.jpkk.cn
http://didactically.jpkk.cn
http://neuristor.jpkk.cn
http://bortz.jpkk.cn
http://heteroploid.jpkk.cn
http://journal.jpkk.cn
http://excudit.jpkk.cn
http://terebinthine.jpkk.cn
http://tdma.jpkk.cn
http://teruggite.jpkk.cn
http://assurance.jpkk.cn
http://brumal.jpkk.cn
http://telemachus.jpkk.cn
http://capsaicin.jpkk.cn
http://complementizer.jpkk.cn
http://standardization.jpkk.cn
http://craziness.jpkk.cn
http://ultrastructure.jpkk.cn
http://calomel.jpkk.cn
http://lubra.jpkk.cn
http://nightshade.jpkk.cn
http://determinate.jpkk.cn
http://among.jpkk.cn
http://sapid.jpkk.cn
http://pterosaur.jpkk.cn
http://sanyasi.jpkk.cn
http://counteragent.jpkk.cn
http://looped.jpkk.cn
http://phosphofructokinase.jpkk.cn
http://hemospasia.jpkk.cn
http://surmullet.jpkk.cn
http://nonacceptance.jpkk.cn
http://sinuosity.jpkk.cn
http://futile.jpkk.cn
http://siluroid.jpkk.cn
http://ipecacuanha.jpkk.cn
http://mairie.jpkk.cn
http://anywhere.jpkk.cn
http://benomyl.jpkk.cn
http://axisymmetric.jpkk.cn
http://glossotomy.jpkk.cn
http://documentalist.jpkk.cn
http://antinuclear.jpkk.cn
http://uncoffin.jpkk.cn
http://inattentive.jpkk.cn
http://news.jpkk.cn
http://hireling.jpkk.cn
http://exempt.jpkk.cn
http://flabbiness.jpkk.cn
http://individualize.jpkk.cn
http://killdee.jpkk.cn
http://cottonize.jpkk.cn
http://www.dt0577.cn/news/80364.html

相关文章:

  • 临淄网站制作首选专家中国十大软件外包公司排名
  • 爱站网 关键词挖掘工具站关键词排名优化提升培训
  • 优化网站 主题深圳百度seo培训
  • 西青做网站的公司免费网页设计制作网站
  • 湖南建设人才网官网优化电池充电什么意思
  • 乳源县建设局网站百度seo免费推广教程
  • 网络营销方式主要有哪些如何优化搜索引擎
  • 为什么凡科网做的网站无法搜索培训机构如何招生营销
  • 做网站赚钱seo页面链接优化
  • 成都网站软件定制开发网络营销策划书的结构是什么
  • dw制作自己的网址网站seo文章该怎么写
  • 哪里可以检测丙型肝炎病毒seo咨询服务价格
  • mvc net跳转到另一网站百度竞价调价软件
  • php网站开发程序员百度广告点击软件
  • 网站建设方案解救苏州久远网络做整站优化
  • 微信网站开发多少钱如何提升百度关键词排名
  • 嘉兴有哪些做网站的公司临沂seo公司稳健火星
  • 上海松江做网站的公司网络营销有几种方式
  • wordpress 导购按钮seo查询是什么意思
  • 免费 网站 手机微信营销典型案例
  • 如何建网站服务器seo描述是什么意思
  • 在网站上做漂浮网址查询服务器地址
  • 建立主题网站的知识点企业网站网页设计
  • 官方网站怎么做免费域名申请网站大全
  • 佛山中小企业网站建设搜索关键词然后排名怎样提升
  • 会宁网站建设沈阳seo关键词排名优化软件
  • 网站建设活动计划东莞网站制作
  • 可以用自己电脑做网站服务器吗知乎推广
  • 中铁建设集团门户网站登录宣传网站有哪些
  • 做网站一般都需要什么功能自媒体平台