微信VoIP通话命令
微信VoIP通话场景下,设备与探鸽云平台在已建立的 TiRTC 连接上通过
接通(cmdw=0x2000 )
cmdw=0x2000当设备与微信小程序的微信VoIP通话会话建立完成后,探鸽云平台会通过命令通道发送命令字cmdw=0x2000、data=NULL的接通指令。设备收到后,就可以通过TiRTC连接hconn进行双向音视频流传输了。
c
static void on_command(tirtc_conn_t hconn, uint32_t cmdw, const void *data, uint32_t len) {
if (cmdw == 0x2000) {
// 在此异步开始向hconn接收和发送音视频流。
// 注意:不要在该回调函数内部执行耗时操作。
}
}挂断(cmdw=0x2001 )
cmdw=0x2001当对方挂断会话的时候,探鸽云平台会通过命令通道发送命令字cmdw=0x2001的通知,data会带上挂断的原因数据。设备端收到后,应该关闭对应的连接,释放相关资源。
注意,挂断可能有多种原因,包拒绝通话(未进入通话即挂断),详见下方挂断原因
c
static void on_command(tirtc_conn_t hconn, uint32_t cmdw, const void *data, uint32_t len) {
if (cmdw == 0x2001) {
// 在此异步关闭对应的连接,释放相关资源。
// data 为 JSON 字符串,格式为 {"reason":<int>}
// data 解析出错建议直接忽略
// 注意:不要在该回调函数内部执行耗时操作。
}
}当设备端需要主动挂断会话的时候,可通过命令通道向探鸽云平台发送命令字cmdw=0x2001的通知,并且在data中带上挂断原因。
c
// 本机主动挂断
// data 为 JSON 字符串,格式为 {"reason":<int>}
static int wxvoip_send_hangup(tirtc_conn_t hconn, int reason)
{
char data[16];
uint32_t n = snprintf(data, sizeof(data), "{\"reason\":%d}", reason);
return TiRtcSendCommand(hconn, 0x2001, data, n);
}挂断原因
| 值 | 含义(收到时) | 含义(发送时) |
|---|---|---|
0 | 未知 | 未知 |
1 | 微信用户手动挂断 | 设备主动挂断 |
2 | 被系统电话挂断 | -(不建议使用) |
3 | 被其他应用挂断 | 被其他应用挂断 |
4 | 采集 / 播放设备启动失败 | 采集 / 播放设备启动失败 |
5 | 忙线 | -(不建议使用) |
6 | 超时未接听 | -(不建议使用) |
7 | 拒绝通话(未进入通话即挂断) | -(不建议使用) |
8 | 会话异常中止 | 会话异常中止 |
| 其他值 | 保留,供后续扩展 | 保留,供后续扩展 |