中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

遼寧做網(wǎng)站的公司網(wǎng)站外包公司有哪些

遼寧做網(wǎng)站的公司,網(wǎng)站外包公司有哪些,電影網(wǎng)站做淘寶聯(lián)盟,建設(shè)銀行網(wǎng)站鏈接在前面我們已經(jīng)對(duì)接好了騰訊多人音視頻房間相關(guān)內(nèi)容:Java對(duì)接騰訊多人音視頻房間示例 為了完善業(yè)務(wù)邏輯,我們還需要對(duì)接它的一些回調(diào)接口 官方文檔地址 主要就下面這些 這里因?yàn)楸容^簡(jiǎn)單直接上代碼 里面有些工具類(lèi)和上一章一樣這里就沒(méi)貼,需要…

在前面我們已經(jīng)對(duì)接好了騰訊多人音視頻房間相關(guān)內(nèi)容:Java對(duì)接騰訊多人音視頻房間示例
為了完善業(yè)務(wù)邏輯,我們還需要對(duì)接它的一些回調(diào)接口 官方文檔地址
主要就下面這些

在這里插入圖片描述

這里因?yàn)楸容^簡(jiǎn)單直接上代碼
里面有些工具類(lèi)和上一章一樣這里就沒(méi)貼,需要的看下我上一章Java對(duì)接騰訊多人音視頻房間示例


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: 騰訊會(huì)議回調(diào)* @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;//    // 實(shí)例參數(shù)
//    {
//        "address": "https://www.zscloud.work:29000/api/txcloud/callback/listener",
//        "actions": ["createRoom", "destroyRoom", "updateRoomInfo", "enterRoom", "exitRoom", "updateUserRole", "takeSeat", "leaveSeat"]
//    }/*** @Description: 配置回調(diào)地址* @Author: Sakura* @Date: 2023/12/18 14:52*/@PostMapping("/create")public Result createCallback(@RequestBody CreateCallbackRequest createCallbackRequest) {return txCallbackService.createCallback(createCallbackRequest);}/** * @Description: 修改回調(diào)地址配置* @Author: Sakura* @Date: 2023/12/19 15:55*/@PostMapping("/update")public Result updateCallback(@RequestBody CreateCallbackRequest createCallbackRequest) {return txCallbackService.updateCallback(createCallbackRequest);}/*** @Description: 回調(diào)監(jiān)聽(tīng)* @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("回調(diào)監(jiān)聽(tīng):" + "sdkappid:" + sdkappid + "  command:" + command + "  " + callbackRoomInfoRequest.toString());// 目前只能校驗(yàn)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: 回調(diào)管理* @Author: Sakura* @Date: 2023/12/18 14:52
*/
@Log
@Service
public class TxCallbackServiceImpl implements TxCallbackService {@AutowiredRoomctlUtil roomctlUtil;/*** @Description: 預(yù)約會(huì)議* @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();}}

下面是請(qǐng)求參數(shù)的封裝類(lèi)


import lombok.Data;
import lombok.EqualsAndHashCode;import java.util.List;/** * @Description: 創(chuàng)建回調(diào)參數(shù)* @Author: Sakura* @Date: 2023/12/18 14:50
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class CreateCallbackRequest extends PageRequest {private static final long serialVersionUID = 1L;// 回調(diào)的地址,需要以 http/https 開(kāi)頭,建議使用更為安全的 httpsprivate String address;// 需要觸發(fā)回調(diào)的情景,列表請(qǐng)參考 回調(diào)命令字private List<String> actions;}

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;import java.io.Serializable;/** * @Description: 回調(diào)房間詳細(xì)信息 * @Author: Sakura* @Date: 2023/12/19 13:43
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class CallbackRoomInfoRequest implements Serializable {private static final long serialVersionUID = 1L;// 操作的用戶(hù) ID@JsonProperty("UserId")private String UserId;// 角色類(lèi)型:0為房主,1為管理員,2為普通成員@JsonProperty("UserRole")private Integer UserRole;// 操作的房間 ID@JsonProperty("RoomId")private String RoomId;// 當(dāng)前房間成員數(shù)量@JsonProperty("MemberCount")private Integer MemberCount;// 用戶(hù)退出的原因@JsonProperty("ExitReason")private String ExitReason;// 當(dāng)前的麥位數(shù)量@JsonProperty("SeatCount")private Integer SeatCount;// 房間詳情@JsonProperty("RoomInfo")private RoomInfoRequest RoomInfo;// 事件觸發(fā)時(shí)間戳@JsonProperty("EventTime")private Long EventTime;
}

import lombok.Data;
import lombok.EqualsAndHashCode;import java.io.Serializable;/*** @Description: 回調(diào)房間信息* @Author: Sakura* @Date: 2023/12/19 13:41*/
@Data
@EqualsAndHashCode(callSuper = false)
public class RoomInfoRequest implements Serializable {private static final long serialVersionUID = 1L;// 最大麥位數(shù)量,默認(rèn)為套餐包上限,(直播最大16個(gè) 默認(rèn)16)@JsonProperty("MaxSeatCount")private Integer MaxSeatCount;// 房間名稱(chēng)。默認(rèn)為房間 ID@JsonProperty("RoomName")private String RoomName;// 房間類(lèi)型:1為會(huì)議,2為直播\n 默認(rèn)為:會(huì)議1@JsonProperty("RoomType")private Integer RoomType;// 麥控模式:1為自由發(fā)言模式,2為舉手發(fā)言模式,3為就座后發(fā)言(搶麥位)\n默認(rèn)為:自由發(fā)言模式1@JsonProperty("SpeechMode")private Integer SpeechMode;// 全體禁畫(huà) 默認(rèn) false@JsonProperty("DisableVideo")private Boolean DisableVideo;// 全體靜音 默認(rèn) false@JsonProperty("DisableAudio")private Boolean DisableAudio;// 禁止所有成員發(fā)送文本消息 默認(rèn) false@JsonProperty("DisableMessage")private Boolean DisableMessage;}

再就是回調(diào)這塊,因?yàn)榛卣{(diào)的都是一個(gè)方法,通過(guò)command來(lái)區(qū)分,所以這里用策略模式來(lái)處理


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的方法存儲(chǔ)Map<String, Function<CallbackRoomInfoRequest, CallbackResponse>> strategyContextMap = new HashMap<>();@ResourceCallbackListenerService callbackListenerService;@PostConstruct@SneakyThrowspublic void setStrategyMap() {// 配置回調(diào)方法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){// 根據(jù)command獲取對(duì)應(yīng)的方法返回策略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 {// 此處用來(lái)統(tǒng)一處理多人視頻房間回調(diào)++++++++++++++++++++++++++++++++++++++++++++// 創(chuàng)建房間回調(diào)public CallbackResponse createRoom(CallbackRoomInfoRequest callbackRoomInfoRequest){log.info("創(chuàng)建房間回調(diào)" + callbackRoomInfoRequest.toString());return CallbackResponse.success();}// 銷(xiāo)毀房間回調(diào)public CallbackResponse destroyRoom(CallbackRoomInfoRequest callbackRoomInfoRequest){log.info("銷(xiāo)毀房間回調(diào)" + callbackRoomInfoRequest.toString());return CallbackResponse.success();}// 更新房間回調(diào)public CallbackResponse updateRoomInfo(CallbackRoomInfoRequest callbackRoomInfoRequest){log.info("更新房間回調(diào)" + callbackRoomInfoRequest.toString());return CallbackResponse.success();}// 用戶(hù)進(jìn)房回調(diào)public CallbackResponse enterRoom(CallbackRoomInfoRequest callbackRoomInfoRequest){log.info("用戶(hù)進(jìn)房回調(diào)" + callbackRoomInfoRequest.toString());return CallbackResponse.success();}// 用戶(hù)退房回調(diào)public CallbackResponse exitRoom(CallbackRoomInfoRequest callbackRoomInfoRequest){log.info("用戶(hù)退房回調(diào)" + callbackRoomInfoRequest.toString());return CallbackResponse.success();}// 用戶(hù)上麥回調(diào)public CallbackResponse takeSeat(CallbackRoomInfoRequest callbackRoomInfoRequest){log.info("用戶(hù)上麥回調(diào)" + callbackRoomInfoRequest.toString());return CallbackResponse.success();}// 用戶(hù)下麥回調(diào)public CallbackResponse leaveSeat(CallbackRoomInfoRequest callbackRoomInfoRequest){log.info("用戶(hù)下麥回調(diào)" + callbackRoomInfoRequest.toString());return CallbackResponse.success();}
}

返回對(duì)象


import lombok.Data;
import lombok.EqualsAndHashCode;import java.io.Serializable;/** * @Description: 回調(diào)返回信息* @Author: Sakura* @Date: 2023/12/19 13:41
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class CallbackResponse implements Serializable {private static final long serialVersionUID = 1L;// 當(dāng)前房間成員數(shù)量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;}}

我們需要先調(diào)用配置回調(diào)地址的接口把我們的接口配置上去

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

在這里插入圖片描述

注意address換成自己的域名,actions可以照著寫(xiě)

這樣就能收到回調(diào)信息了

http://www.risenshineclean.com/news/5846.html

相關(guān)文章:

  • 如何做webgis網(wǎng)站優(yōu)化關(guān)鍵詞是什么意思
  • 網(wǎng)站排名優(yōu)化服務(wù)商全網(wǎng)營(yíng)銷(xiāo)平臺(tái)
  • 網(wǎng)站默認(rèn)樣式表愛(ài)站網(wǎng)seo
  • 做招商網(wǎng)站百度關(guān)鍵詞seo
  • 做視頻網(wǎng)站視頻文件都存放在哪里網(wǎng)絡(luò)優(yōu)化工程師工作內(nèi)容
  • wordpress 頁(yè)面全屏優(yōu)化設(shè)計(jì)
  • 用vb做網(wǎng)站seo挖關(guān)鍵詞
  • 科技資訊網(wǎng)站有哪些seo優(yōu)化的內(nèi)容有哪些
  • 做淘寶推廣開(kāi)網(wǎng)站合適近期的新聞消息
  • 北京市工程建設(shè)信息網(wǎng)官網(wǎng)寧波網(wǎng)站推廣優(yōu)化哪家正規(guī)
  • 江蘇網(wǎng)站建設(shè)網(wǎng)絡(luò)公司百度愛(ài)采購(gòu)官網(wǎng)
  • 一個(gè)外貿(mào)網(wǎng)站要多大的空間比較好建網(wǎng)站要多少錢(qián)
  • 無(wú)錫做網(wǎng)站seo湘潭關(guān)鍵詞優(yōu)化服務(wù)
  • 做仿站如何獲取網(wǎng)站源碼百度競(jìng)價(jià)推廣托管
  • 廣州官方網(wǎng)站建設(shè)百度競(jìng)價(jià)品牌廣告
  • 百度網(wǎng)站是用什么軟件做的網(wǎng)絡(luò)營(yíng)銷(xiāo)方法有什么
  • 常用wap網(wǎng)站開(kāi)發(fā)工具 手機(jī)網(wǎng)站制如何優(yōu)化企業(yè)網(wǎng)站
  • 如何查詢(xún)網(wǎng)站建站時(shí)間百度seo優(yōu)化哪家好
  • 做網(wǎng)站東莞太原網(wǎng)站建設(shè)優(yōu)化
  • 網(wǎng)站建設(shè)哪些公司推廣軟文范文800字
  • 上海人力資源網(wǎng)官方網(wǎng)知乎seo優(yōu)化
  • 如何做網(wǎng)站賺錢(qián)6快速seo關(guān)鍵詞優(yōu)化方案
  • 怎么做營(yíng)銷(xiāo)網(wǎng)站推廣搜索引擎優(yōu)化的實(shí)驗(yàn)結(jié)果分析
  • 紀(jì)檢監(jiān)察工作 網(wǎng)站建設(shè)軟文寫(xiě)作營(yíng)銷(xiāo)
  • 做58同城網(wǎng)站需要多少錢(qián)企業(yè)網(wǎng)站seo排名優(yōu)化
  • 中國(guó)建設(shè)銀行陜西分行官方網(wǎng)站騰訊云域名注冊(cè)
  • 網(wǎng)站建設(shè)近五年出版的書(shū)籍微信上如何投放廣告
  • 網(wǎng)站的滾屏切換是怎么做的網(wǎng)絡(luò)推廣具體內(nèi)容
  • 公司網(wǎng)站應(yīng)該包括哪些內(nèi)容求職seo
  • 成品網(wǎng)站開(kāi)發(fā)手機(jī)百度提交入口