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

发起单聊通话

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

复制

signalingInvite() 向一个用户发起通话邀请。应用应为每次通话生成新的 roomID,并保留本次完整邀请,供取消、挂断等后续操作复用。

参数说明

参数类型是否必填说明
invitationOpenIMSignalingInvitationInfo本次通话邀请。
invitation.inviterUserIDstring建议填写当前登录用户 ID。
invitation.inviteeUserIDListstring[]单聊只填写对方一个用户 ID。
invitation.groupIDstring建议填写单聊传空字符串。
invitation.roomIDstring本次通话的唯一房间 ID。
invitation.timeoutnumber等待接听时长,单位为秒。
invitation.mediaTypestring业务约定的媒体类型,例如 audiovideo
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。非空结果可能包含 invitationroomIDtokenliveURLbusyLineUserIDList;取得有效 roomIDtoken 后再连接媒体房间。

成功只表示邀请请求完成并可能取得房间凭据,不表示对方已经接听。后续状态见处理通话事件