设备呼叫小程序

更新时间不可用

通过该接口实现设备端向微信小程序发起呼叫。

POST
https://api.sd-rtn.com/v2/miniapp/{appId}/voip/call/miniapp

鉴权

Basic Auth

发送 HTTP 请求时,你需要通过 Basic HTTP 认证,并将生成的凭证填入 HTTP 请求头部的 Authorization 字段。具体生成 Authorization 字段的方法请参考实现 HTTP 基本认证。

路径参数

appIdstring
必填

你的声网项目使用的 App ID。

请求 Body

设备呼叫小程序请求体。

字段

声网相关配置。

appIdstring
必填

你的声网项目使用的 App ID。

channelNamestring
必填

设备端加入的 RTC 频道名。

robotUIDstring
必填

微呼叫服务加入 RTC 频道时使用的 UID。

deviceUIDstring
必填

设备端加入 RTC 频道时使用的 UID。

tokenstring
必填

微呼叫服务加入 RTC 频道时使用的 Token。

licensestring
必填

License 值,用于校验呼叫是否合法,校验结果会通过 NCS 事件 98 返回。详见获取并使用 License。

encryptionModestring
必填

加密模式。可以设为如下值:

  • AES_128_XTS: 128 位 AES 加密,XTS 模式
  • AES_128_ECB: 128 位 AES 加密,ECB 模式
  • AES_256_XTS: 256 位 AES 加密,XTS 模式
  • SM4_128_ECB: 128 位 SM4 加密,ECB 模式
  • AES_128_GCM: 128 位 AES 加密,GCM 模式
  • AES_256_GCM: 256 位 AES 加密,GCM 模式
  • AES_128_GCM2:(默认)128 位 AES 加密,GCM 模式。该加密模式需要设置盐(encryptionKdfSalt)
  • AES_256_GCM2: 256 位 AES 加密,GCM 模式。该加密模式需要设置盐(encryptionKdfSalt)

如果不想启用加密,可以设置为 NONE。

encryptionKeystring

加密的 Key 值,与设备端对应,encryptionMode 为 NONE 时,可以不填。

encryptionKdfSaltstring

盐值,encryptionMode 为 NONE 时,可以不填。

从设备端向小程序端发送的视频祯属性。agora.source 和 wechat.sink 为对应关系,你可以参考 设置 Source 和 Sink了解更多细节。

设备端接收小程序端的视频祯属性。agora.sink 和 wechat.source 为对应关系,你可以参考 设置 Source 和 Sink了解更多细节。

微信小程序相关配置。

openIdstring
必填

小程序用户的唯一 ID。该 ID 需要用户授权。

appIdstring
必填

微信小程序的 App ID。

deviceIdstring
必填

设备 ID。

modelIdstring
必填

设备的 Model ID。

encodeVideoRotationinteger

设备端接收的视频旋转信息,适用于没有画面旋转能力的设备。可以设为如下值:

  • 1:设备端看到的微信小程序画面永远保持正向
  • 2:保留原有的旋转方向

更多信息可以参考微信小程序 VoIP 视频流指南。

landscapeboolean
必填

设备端接收小程序推流是否为 4:3 的流。

  • true: SDK 收到的流为横屏,即宽高比为 4:3。该宽高比下,视频分辨率可以设为 320 × 240、480 × 352、640 × 480、1280 × 720、1920 × 1080
  • false: SDK 收到的流为竖屏,即宽高比为 3:4。该宽高比下,视频分辨率可以设为 240 × 320、352 × 480、480 × 640、720 × 1080、1080 × 1920
subscribeVideoLengthinteger
必填

设备端订阅视频分辨率的固定长边值。适用于不希望收到可变分辨率视频流的设备。如果不使用此功能,SDK 收到的视频流在不同的网络环境下会有不同的分辨率。如果想开通该功能,需要同时向微信提交 App ID,待开通订阅机制后才生效。支持设为如下值:

  • 320: video_landscape = true 时收到的是 320 × 240,video_landscape = false 时收到的是 240 × 320
  • 640: 不支持 video_landscape = true 模式,video_landscape = false 时收到的是 480 × 640
roomTypestring
必填

房间类型,支持设为如下值:

  • video:视频通话
  • voice:音频通话
listenerNamestring
必填

微信端显示呼入名字,在小程序授权设备时指定。该参数设置不生效,可以填写任意字符串,如 "m"。

versionTypeinteger
必填

接听方小程序的类型:

  • 0:正式版
  • 1:开发版
  • 2:体验版
querystring
必填

小程序页面自定义参数。

callerCameraStatusinteger
必填

小程序是否打开远端视图,以便看到拨打方:

  • 0:打开
  • 1:关闭
listenerCameraStatusinteger
必填

小程序是否打开本地视图,以便看到接听方:

  • 0:打开
  • 1:关闭

从小程序端向设备端发送的视频祯属性。wechat.source 和 agora.sink 为对应关系,你可以参考 Source 和 Sink 对应关系了解更多细节。

小程序端接收设备端发送的视频祯属性。wechat.sink 和 agora.source 为对应关系,你可以参考 Source 和 Sink 对应关系了解更多细节。

响应

请求成功。

响应 Body

标准响应格式。

codeinteger
必填

状态码。

msgstring
必填

提示信息。

taskIdstring

本次请求的唯一标识符。该字段的值和 NCS 事件中返回的 sid 一致,你可以使用该字段定位出现异常的请求,然后排查问题。

请求示例

Example Request
curl --request POST \
  --url "https://api.sd-rtn.com/v2/miniapp/:appId/voip/call/miniapp" \
  --header 'Authorization: Basic <credentials>' \
  -H 'Content-Type: application/json' \
  -d '{
  "agora": {
    "channelName": "voip123456",
    "robotUID": "123",
    "deviceUID": "456",
    "token": "aabxxxxxxxxxxxx63",
    "license": "sdfjiojefkkglekr",
    "appId": "aabxxxxxxxxxxxx63",
    "encryptionMode": "NONE",
    "encryptionKey": "test123",
    "encryptionKdfSalt": "qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq",
    "source": {
      "videoCodec": "H264",
      "videoWidth": 640,
      "videoHeight": 480,
      "videoFrameRate": 15
    },
    "sink": {
      "audioCodec": "PCMA",
      "videoTranscode": false,
      "videoCodec": "H264",
      "videoWidth": 640,
      "videoHeight": 480,
      "videoFrameRate": 15
    }
  },
  "wechat": {
    "openId": "ox-xxxxxxxxxxxxA",
    "appId": "wxxxxxxxxxxd6",
    "deviceId": "test_sn_1",
    "modelId": "axxxxxxxxw",
    "encodeVideoRotation": 1,
    "landscape": true,
    "subscribeVideoLength": 320,
    "roomType": "video",
    "listenerName": "m",
    "versionType": 1,
    "query": "a=b",
    "callerCameraStatus": 0,
    "listenerCameraStatus": 0,
    "source": {
      "videoCodec": "H264",
      "videoWidth": 1920,
      "videoHeight": 1080,
      "videoFrameRate": 15
    },
    "sink": {
      "videoTranscode": false,
      "videoCodec": "H264",
      "videoWidth": 640,
      "videoHeight": 480,
      "videoFrameRate": 15
    }
  }
}'

响应示例

{
  "code": 200,
  "msg": "ok",
  "taskId": "1NxxxxxxxxxxxxxxxxxV"
}