浏览 SDKs · uni-app / uni-app x
平台
SDKsuni-app / uni-app x商业版

发起单聊通话

向一个用户发起音频或视频通话邀请。

复制

向指定单聊用户发起音频或视频通话邀请。应用应为每次通话生成新的 roomID,并保留本次完整邀请,供后续取消、挂断等操作复用。

参数说明

参数类型是否必填说明
invitationOpenIMSignalingInvitationInfo是本次通话邀请。
invitation.inviterUserIDstring建议填写当前登录用户 ID。
invitation.inviteeUserIDListstring[]是单聊只填写对方一个用户 ID。
invitation.groupIDstring建议填写单聊传空字符串。
invitation.roomIDstring是本次通话的唯一房间 ID。
invitation.timeoutnumber是等待接听时长,单位为秒。
invitation.mediaTypestring是业务约定的媒体类型,例如 audio 或 video。
invitation.sessionTypeOpenIMSessionType是单聊使用 OpenIMSessionTypeSingle。
invitation.platformIDOpenIMPlatform建议填写当前 App 平台,应与初始化 SDK 时的平台一致。
invitation.customDatastring否随邀请发送的业务扩展字符串。
offlinePushInfoOpenIMSignalingOfflinePushInfo否被邀请人离线时使用的推送内容。
import {
  OpenIMSessionTypeSingle,
  signalingInvite,
} from '@/uni_modules/unix-openim-sdk'

const invitation = {
  inviterUserID: currentUserID,
  inviteeUserIDList: [peerUserID],
  customData: JSON.stringify({ source: 'contact-card' }),
  groupID: '',
  roomID: createCallRoomID(),
  timeout: 30,
  mediaType: 'video',
  sessionType: OpenIMSessionTypeSingle,
  platformID: currentOpenIMPlatform,
}

const result = await signalingInvite({
  invitation,
  offlinePushInfo: {
    title: '视频通话',
    desc: '你收到一个视频通话邀请',
    ex: '',
    iOSPushSound: 'default',
    iOSBadgeCount: true,
  },
})

Promise 成功后返回 OpenIMSignalingInviteResult | null。非空结果可能包含 invitation、roomID、token、liveURL 和 busyLineUserIDList;取得有效 roomID 与 token 后再连接媒体房间。

成功只表示邀请请求完成并可能取得房间凭据,不表示对方已经接听。客户端通话状态应按 roomID 建立和合并,后续状态变化见处理通话事件。