# 手机微信呼叫设备(云代理)

需插件 2.4.3 版本

如果要获取通话过程的各类事件,可以使用插件的 onVoipEvent 接口。

# 1. 手机微信端发起通话

发起通话前,一般需要用户在小程序中选择拨打的设备和通话的类型(音频/视频)。

发起通话时,开发者需要并在小程序中调用插件的 callDevice 接口获取 roomId ( isCloud 参数设置为 true ),然后跳转到插件的发起通话页面。

const wmpfVoip = requirePlugin('wmpf-voip').default

try {
  const { roomId } = await wmpfVoip.callDevice({
    roomType: 'video', // 房间类型。voice: 音频房间;video: 视频房间
    sn: '设备 SN',
    modelId: '设备 modelId',
    nickName: '设备端显示的微信用户名称',
    deviceName: '我的学习机',
    isCloud: true,
  })

  if (/* 当前不在插件页面 */) {
    wx.redirectTo({
      url: wmpfVoip.CALL_PAGE_PATH,
    })
  }
} catch (e) {
  console.error('callDevice failed:', e)
  wx.showToast({
    title: '呼叫失败',
    icon: 'error',
  })
}

# 2. 推送通话提醒

手机微信内发起通话后,开发者云端能够收到消息提醒。

# 3. 设备端展示

开发者云端收到消息通知后,需要先对此通通话的合理性进行判断,如果认为此通通话异常,返回非 0 的 errcode 值,否则返回 errcode = 0。 接下来需要将来电消息流转到设备端,设备端展示接听/拒绝界面。

# 4. 设备端接听通话

服务端收到接听通知后,可以调用 wx_cloudvoip_session_cloud_call_join 加入通话,实现正常接听。

# 5. 设备端拒绝通话

服务端收到拒绝通知后,可以调用 wx_cloudvoip_listener_hangup结束通话,实现忙线或拒接。