当前位置:   article > 正文

微信小程序音视频通话(for硬件)组件的使用_wmpf-voip

wmpf-voip

1、产品介绍

借助微信小程序音视频通话(for 硬件)组件,开发者可以实现智能设备和手机微信端的一对一音视频通话,满足实时触达场景,提升通话体验。具体的介绍和说明,可参考微信官方的使用手册:微信小程序音视频通话(for 硬件) 使用手册 | 微信开放社区

2、微信小程序音视频通话(for硬件)接入流程

3、微信小程序接入VoIP通话插件

VoIP插件主要用于提供「小程序音视频通话(for 硬件)」的部分基础能力和统一的通话界面。具体说明可参考官方文档:VoIP 通话插件 | 微信开放文档

微信小程序要使用VoIP通话插件,第一步是在小程序的app.json文件声明插件:

  1. "plugins": {
  2. "wmpf-voip": {
  3. "version": "latest", // latest 表示自动使用最新版本
  4. "provider": "wxf830863afde621eb", // 固定写死
  5. "genericsImplementation": {
  6. "call-page-plugin": { // 开启呼叫时运行跳转自定义界面
  7. "custombox": "/pages/components/test/test"
  8. }
  9. }
  10. }
  11. }

在设备呼叫小程序用户之前,需要先将小程序用户对设备进行授权,即允许设备发起语音和视频通话邀请

小程序授权设备相关文档:用户授权设备 | 微信开放文档

授权的具体实现代码:

  1. wx.requestDeviceVoIP({
  2. sn: 'xxxxxx', // 向用户发起通话的设备 sn(需要与设备注册时一致)
  3. snTicket: 'xxxxxx', // 获取的 snTicket
  4. modelId: 'xxxxxx', // 「设备接入」从微信公众平台获取的 model_id
  5. deviceName: 'xxx', // 设备名称,用于授权时显示给用户
  6. success(res) {
  7. console.log(`requestDeviceVoIP success:`, res)
  8. },
  9. fail(err) {
  10. console.error(`requestDeviceVoIP fail:`, err)
  11. },
  12. })

  1. /**
  2. * 根据deviceId 和 modelId 获取票据
  3. * @param deviceId
  4. * @param modelId
  5. */
  6. public static String getSnTicket(String deviceId, String modelId) {
  7. //1、 拿到 access_token 参数
  8. String accessToken = getAccessToken();
  9. // 创建RestTemplate对象
  10. RestTemplate restTemplate = new RestTemplate();
  11. // 设置请求头信息
  12. HttpHeaders headers = new HttpHeaders();
  13. headers.setContentType(MediaType.APPLICATION_JSON);
  14. headers.set("Authorization", "Bearer your_token_here");
  15. // 设置请求参数 access_token、 sn、 model_id
  16. String url = "https://api.weixin.qq.com/wxa/getsnticket?access_token=" + accessToken;
  17. String requestBody = "{\"sn\":\"" + deviceId + "\",\"model_id\":\"" + modelId + "\"}";
  18. // 创建HttpEntity对象
  19. HttpEntity<String> requestEntity = new HttpEntity<>(requestBody, headers);
  20. // 发送POST请求
  21. ResponseEntity<String> responseEntity =
  22. restTemplate.postForEntity(url, requestEntity, String.class);
  23. // 获取响应结果
  24. HttpStatus statusCode = responseEntity.getStatusCode();
  25. String responseBody = responseEntity.getBody();
  26. // 使用JsonParser解析字符串为JsonObject
  27. JsonObject jsonObject = JsonParser.parseString(responseBody).getAsJsonObject();
  28. // 获取sn_ticket对应的值
  29. String snTicket = null;
  30. if (jsonObject.has("sn_ticket")) {
  31. snTicket = jsonObject.get("sn_ticket").getAsString();
  32. }
  33. return snTicket;
  34. }
  35. /**
  36. * 获取接口凭证 access_token
  37. */
  38. private static String getAccessToken() {
  39. String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=your_appid&secret=your_secret";
  40. RestTemplate restTemplate = new RestTemplate();
  41. String result = restTemplate.getForObject(url, String.class);
  42. String s = result.replaceAll("[{}\"]", "");
  43. String[] strings = s.split(",");
  44. String[] b = strings[0].split(":");
  45. return b[1];
  46. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/686960
推荐阅读
相关标签
  

闽ICP备14008679号