Skip to content

微信VoIP通话命令

微信VoIP通话场景下,设备与探鸽云平台在已建立的 TiRTC 连接上通过命令通道交换下列命令字。

接通(cmdw=0x2000

当设备与微信小程序的微信VoIP通话会话建立完成后,探鸽云平台会通过命令通道发送命令字cmdw=0x2000data=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的通知,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会话异常中止会话异常中止
其他值保留,供后续扩展保留,供后续扩展

微信VoIP通话