Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface MsgServiceInterface

调用方式:

nim.msg.sendTextMsg(options)

Hierarchy

  • MsgServiceInterface

Index

Methods

  • 转发消息给其它用户。转发消息的消息是原消息的副本,其内部内容是一样的。

    影响范围

    • 消息接收方、以及发送方多端同步账号收到 msg 事件
    • 消息发送方,接收方、以及发送方多端同步账号收到 updateSession 事件
    example
    const prevMsg = await nim.msg.sendTextMsg({
    scene: 'p2p',
    to: 'test1',
    body: 'text'
    })

    // 转发消息给 test2
    const newMsg = await nim.msg.forwardMsg({
    msg: prevMsg,
    scene: 'p2p',
    to: 'test2'
    })

    Parameters

    Returns Promise<IMMessage>

  • 获取群消息已读,以及未读账号列表。

    • 仅当发送消息时,设置 teamSpecializationInfo.needACK 为 true,才能获取到已读列表。否则会报 414 参数错误

    示例场景

    example
    const msg = await nim.msg.send({
    scene: "team",
    to: teamId,
    body: "text",
    teamSpecializationInfo: {
    needACK: true
    }
    })

    const res = await nim.msg.getTeamMsgReadAccounts({
    teamMsgReceipt: {
    teamId: msg.to,
    idClient: msg.idClient,
    idServer: msg.idServer
    }
    })

    Parameters

    Returns Promise<GetTeamMsgReadAccountsResult>

  • 获取群消息已读/未读成员数量。该接口可以批量查询。

    • 仅当发送消息时,设置了 teamSpecializationInfo.needACK 为 true,才能获取到已读列表。否则对应消息的结果会在返回数组中被删掉

    示例场景

    example
    const msg = await nim.msg.send({
    scene: "team",
    to: teamId,
    body: "text",
    teamSpecializationInfo: {
    needACK: true
    }
    })

    const res = await nim.msg.getTeamMsgReads({
    // 参数为数组,可以批量查询
    teamMsgReceipts: [
    {
    teamId: msg.to,
    idClient: msg.idClient,
    idServer: msg.idServer
    }
    ]
    })

    Parameters

    Returns Promise<GetTeamMsgReadsResult>

  • 撤回消息

    • 撤回消息后,消息对于所有人都不可见
    • 不能通过漫游消息、或者历史消息拉取到被撤回的消息

    影响范围

    • 接收方、以及发送方多端同步账号收到 recallMsgP2precallMsgTeamrecallMsgSuperTeam 系统通知
    • 消息发送方,接收方、以及发送方多端同步账号收到 updateSession 事件

    示例场景

    example
    const msg = await nim.msg.sendTextMsg({
    scene: 'p2p',
    to: 'test1',
    body: 'text'
    })

    // 撤回消息
    const recalledMsg = await nim.msg.recallMsg({
    msg
    })

    Parameters

    Returns Promise<IMMessage>

  • 重发某条消息。

    • 与直接发送消息的区别在于,重发消息不会修改消息的 idClient
    • 消息发送失败后,可以使用该函数重发消息
    • 常见发送失败原因:网络问题、被拉黑

    影响范围

    • 消息接收方、以及发送方多端同步账号收到 msg 事件
    • 消息发送方,接收方、以及发送方多端同步账号收到 updateSession 事件
    example
    try {
    let tempMsg
    await nim.msg.sendTextMsg({
    scene: 'p2p',
    to: 'test',
    body: 'message',
    onSendBefore: (msg) => {
    // 发送消息前,通过该回调临时存储消息
    tempMsg = msg
    }
    })
    } catch(err) {
    // 发送失败
    tempMsg.status = 'sendFailed'
    }

    // 如果发送失败,调用 resendMsg 重发消息
    nim.msg.resendMsg({
    msg: tempMsg
    })

    Parameters

    Returns Promise<IMMessage>

  • 发送音频消息。该函数有以下三种使用方式:

      1. 调用 sendAudioMsg 上传并发送消息
      1. 先调用 uploadFile 上传文件,然后调用 sendAudioMsg 发送文件消息
      1. 调用第三方存储上传文件,然后调用 sendAudioMsg 发送文件消息

    另注:

    • 若要在取消上传文件,可以调用 onUploadStart 回调参数的 abort 函数

    影响范围

    • 消息接收方、以及发送方多端同步账号收到 msg 事件
    • 消息发送方,接收方、以及发送方多端同步账号收到 updateSession 事件
    example
    // 上传并发送消息
    const file = document.getElementById('file-input').files[0]

    nim.msg.sendAudioMsg({
    scene: 'p2p',
    to: 'test',
    file: file
    })
    example
    // 先上传文件,再发送文件消息
    const file = document.getElementById('file-input').files[0]

    const uploadFileRes = await nim.cloudStorage.uploadFile({
    type: 'audio'
    file: file
    })

    nim.msg.sendAudioMsg({
    scene: 'p2p',
    to: 'test',
    attach: uploadFileRes
    })
    example
    // 取消上传
    const file = document.getElementById('file-input').files[0]

    nim.msg.sendAudioMsg({
    scene: 'p2p',
    to: 'test',
    file: file,
    onUploadStart: (task) => {
    // 调用 abort 取消上传
    task.abort()
    }
    })

    Parameters

    Returns Promise<IMMessage>

  • 发送自定义消息。用户可以使用自定义消息发送一些特殊的内容,比如 emoji,猜拳游戏等

    和普通消息相比,自定义消息有以下区别:

    1. 增加 attach 字段。建议该字段设置为 字符串化的 JSON 结构
    2. 消息的类型为 'custom'
    3. 反垃圾字段: antiSpamContent 仅对自定义消息有效

    影响范围

    • 消息接收方、以及发送方多端同步账号收到 msg 事件
    • 消息发送方,接收方、以及发送方多端同步账号收到 updateSession 事件

    示例场景

    Parameters

    Returns Promise<IMMessage>

  • 发送文件消息。该函数有以下三种使用方式:

      1. 调用 sendFileMsg 上传并发送消息
      1. 先调用 uploadFile 上传文件,然后调用 sendFileMsg 发送文件消息
      1. 调用第三方存储上传文件,然后调用 sendFileMsg 发送文件消息

    另注:

    • 若要在取消上传文件,可以调用 onUploadStart 回调参数的 abort 函数

    影响范围

    • 消息接收方、以及发送方多端同步账号收到 msg 事件
    • 消息发送方,接收方、以及发送方多端同步账号收到 updateSession 事件
    example
    // 上传并发送消息
    const file = document.getElementById('file-input').files[0]

    nim.msg.sendFileMsg({
    scene: 'p2p',
    to: 'test',
    file: file
    })
    example
    // 先上传文件,再发送文件消息
    const file = document.getElementById('file-input').files[0]

    const uploadFileRes = await nim.cloudStorage.uploadFile({
    type: 'file'
    file: file
    })

    nim.msg.sendFileMsg({
    scene: 'p2p',
    to: 'test',
    attach: uploadFileRes
    })
    example
    // 取消上传
    const file = document.getElementById('file-input').files[0]

    nim.msg.sendFileMsg({
    scene: 'p2p',
    to: 'test',
    file: file,
    onUploadStart: (task) => {
    // 调用 abort 取消上传
    task.abort()
    }
    })

    Parameters

    Returns Promise<IMMessage>

  • 发送地理位置信息。具体的位置应该通过 attach 属性发送。接收方收到的消息类型为 'geo'

    影响范围

    • 消息接收方、以及发送方多端同步账号收到 msg 事件
    • 消息发送方,接收方、以及发送方多端同步账号收到 updateSession 事件
    example
    nim.msg.sendGeoLocationMsg({
    scene: 'p2p',
    to: 'test',
    attach: {
    lat: 39.9042,
    lng: 116.4074,
    title: 'BeiJing'
    }
    })

    Parameters

    Returns Promise<IMMessage>

  • 发送图片消息。该函数有以下三种使用方式:

    • 调用 sendImageMsg 上传并发送消息
    • 先调用 uploadFile 上传文件,然后调用 sendImageMsg 发送文件消息
    • 调用第三方存储上传文件,然后调用 sendImageMsg 发送文件消息

    另注:

    • 若要在取消上传文件,可以调用 onUploadStart 回调参数的 abort 函数

    影响范围

    • 消息接收方、以及发送方多端同步账号收到 msg 事件
    • 消息发送方,接收方、以及发送方多端同步账号收到 updateSession 事件

    示例场景

    example
    // 上传并发送消息
    const file = document.getElementById('file-input').files[0]

    nim.msg.sendImageMsg({
    scene: 'p2p',
    to: 'test',
    file: file
    })
    example
    // 先上传文件,再发送文件消息
    const file = document.getElementById('file-input').files[0]

    const uploadFileRes = await nim.cloudStorage.uploadFile({
    type: 'image'
    file: file
    })

    nim.msg.sendImageMsg({
    scene: 'p2p',
    to: 'test',
    attach: uploadFileRes
    })
    example
    // 取消上传
    const file = document.getElementById('file-input').files[0]

    nim.msg.sendImageMsg({
    scene: 'p2p',
    to: 'test',
    file: file,
    onUploadStart: (task) => {
    // 调用 abort 取消上传
    task.abort()
    }
    })

    Parameters

    Returns Promise<IMMessage>

  • 发送群信息的已读回执

    • 发送消息时,必须设置 teamSpecializationInfo.needACK 为 true,接收方才能够发送群已读回执
    • 群已读回执是针对每条消息的回执记录。阅读多条消息时,应该调用接口设置每条消息的已读回执

    影响范围

    示例场景

    // 示例,收到消息后,立即发送已读回执
    nim.on('msg', (msg) => {
    if (msg.scene === 'team') {
    nim.msg.sendTeamMsgReceipt({
    teamMsgReceipts: [
    {
    idClient: msg.idClient,
    idServer: msg.idServer,
    teamId: msg.to
    }
    ]
    })
    }
    })

    Parameters

    Returns Promise<void>

  • 发送提醒消息

    提醒消息用于会话内的状态提醒,如进入会话时出现的欢迎消息,或者会话命中敏感词后的提示消息等等。接收消息的类型为 tip

    影响范围

    • 消息接收方、以及发送方多端同步账号收到 msg 事件
    • 消息发送方,接收方、以及发送方多端同步账号收到 updateSession 事件

    Parameters

    Returns Promise<IMMessage>

  • 发送视频消息。该函数有以下三种使用方式:

      1. 调用 sendVideoMsg 上传并发送消息
      1. 先调用 uploadFile 上传文件,然后调用 sendVideoMsg 发送文件消息
      1. 调用第三方存储上传文件,然后调用 sendVideoMsg 发送文件消息

    另注:

    • 若要在取消上传文件,可以调用 onUploadStart 回调参数的 abort 函数

    影响范围

    • 消息接收方、以及发送方多端同步账号收到 msg 事件
    • 消息发送方,接收方、以及发送方多端同步账号收到 updateSession 事件
    example
    // 上传并发送消息
    const file = document.getElementById('file-input').files[0]

    nim.msg.sendVideoMsg({
    scene: 'p2p',
    to: 'test',
    file: file
    })
    example
    // 先上传文件,再发送文件消息
    const file = document.getElementById('file-input').files[0]

    const uploadFileRes = await nim.cloudStorage.uploadFile({
    type: 'video'
    file: file
    })

    nim.msg.sendVideoMsg({
    scene: 'p2p',
    to: 'test',
    attach: uploadFileRes
    })
    example
    // 取消上传
    const file = document.getElementById('file-input').files[0]

    nim.msg.sendVideoMsg({
    scene: 'p2p',
    to: 'test',
    file: file,
    onUploadStart: (task) => {
    // 调用 abort 取消上传
    task.abort()
    }
    })

    Parameters

    Returns Promise<IMMessage>