NIM 跨平台 C++ SDK
|
聊天功能,主要包括消息收发、消息撤回、消息回复(Thread 场景)等功能 更多...
#include <nim_cpp_talk.h>
Public 类型 | |
typedef std::function< void(const SendMessageArc &)> | SendMsgAckCallback |
发送消息回执通知回调 | |
typedef std::function< void(const IMMessage &)> | ReceiveMsgCallback |
接收消息通知回调 | |
typedef std::function< void(const std::list< IMMessage > &)> | ReceiveMsgsCallback |
批量接收消息通知回调 | |
typedef std::function< void(int64_t, int64_t)> | FileUpPrgCallback |
发送多媒体消息文件上传过程回调 | |
typedef std::function< bool(const IMMessage &)> | TeamNotificationFilter |
群通知过滤器 | |
typedef std::function< void(const NIMResCode, const std::list< RecallMsgNotify > &)> | RecallMsgsCallback |
消息撤回通知回调 | |
typedef std::function< void(const BroadcastMessage &)> | ReceiveBroadcastMsgCallback |
接收广播消息通知回调 | |
typedef std::function< void(const std::list< BroadcastMessage > &)> | ReceiveBroadcastMsgsCallback |
批量接收广播消息通知回调 | |
typedef std::function< bool(const IMMessage &)> | MessageFilter |
消息过滤器 | |
静态 Public 成员函数 | |
static void | RegSendMsgCb (const SendMsgAckCallback &cb, const std::string &json_extension="") |
static void | SendMsg (const std::string &json_msg, const std::string &json_extension="", FileUpPrgCallback *pcb=nullptr) |
static void | SendMsg (const IMMessage &message, const std::string &json_extension="", FileUpPrgCallback *pcb=nullptr) |
static void | SendMsg (const IMMessage &message, const std::string &json_extension="", FileUpPrgCallback pcb=nullptr) |
static void | SendMessageWithOption (const IMMessage &message, const IMMessageSendOption &option, const FileUpPrgCallback &pcb=nullptr) |
发送消息并携带指定参数 | |
static bool | StopSendMsg (const std::string &client_msg_id, const NIMMessageType &type, const std::string &json_extension="") |
static void | RegReceiveCb (const ReceiveMsgCallback &cb, const std::string &json_extension="") |
static void | RegReceiveMessagesCb (const ReceiveMsgsCallback &cb, const std::string &json_extension="") |
static std::string | CreateTextMessage (const std::string &receiver_id, const NIMSessionType session_type, const std::string &client_msg_id, const std::string &content, const MessageSetting &msg_setting, int64_t timetag=0, int32_t sub_type=0) |
static std::string | CreateImageMessage (const std::string &receiver_id, const NIMSessionType session_type, const std::string &client_msg_id, const IMImage &image, const std::string &file_path, const MessageSetting &msg_setting, int64_t timetag=0, int32_t sub_type=0) |
static std::string | CreateFileMessage (const std::string &receiver_id, const NIMSessionType session_type, const std::string &client_msg_id, const IMFile &file, const std::string &file_path, const MessageSetting &msg_setting, int64_t timetag=0, int32_t sub_type=0) |
static std::string | CreateAudioMessage (const std::string &receiver_id, const NIMSessionType session_type, const std::string &client_msg_id, const IMAudio &audio, const std::string &file_path, const MessageSetting &msg_setting, int64_t timetag=0, int32_t sub_type=0) |
static std::string | CreateVideoMessage (const std::string &receiver_id, const NIMSessionType session_type, const std::string &client_msg_id, const IMVideo &video, const std::string &file_path, const MessageSetting &msg_setting, int64_t timetag=0, int32_t sub_type=0) |
static std::string | CreateLocationMessage (const std::string &receiver_id, const NIMSessionType session_type, const std::string &client_msg_id, const IMLocation &location, const MessageSetting &msg_setting, int64_t timetag=0, int32_t sub_type=0) |
static std::string | CreateTipMessage (const std::string &receiver_id, const NIMSessionType session_type, const std::string &client_msg_id, const std::string &tip, const MessageSetting &msg_setting, int64_t timetag=0, int32_t sub_type=0) |
static std::string | CreateBotRobotMessage (const std::string &receiver_id, const NIMSessionType session_type, const std::string &client_msg_id, const std::string &content, const IMBotRobot &bot_msg, const MessageSetting &msg_setting, int64_t timetag=0, int32_t sub_type=0) |
static std::string | CreateG2NetCallMessage (const std::string &receiver_id, const NIMSessionType session_type, const std::string &client_msg_id, const std::string &msg_attach, const MessageSetting &msg_setting, int64_t timetag=0, int32_t sub_type=0) |
static std::string | CreateRetweetMessage (const std::string &src_msg_json, const std::string &client_msg_id, const NIMSessionType retweet_to_session_type, const std::string &retweet_to_session_id, const MessageSetting &msg_setting, int64_t timetag=0) |
static bool | ParseIMMessage (const std::string &json_msg, IMMessage &msg) |
static bool | ParseImageMessageAttach (const IMMessage &msg, IMImage &image) |
static bool | ParseFileMessageAttach (const IMMessage &msg, IMFile &file) |
static bool | ParseAudioMessageAttach (const IMMessage &msg, IMAudio &audio) |
static bool | ParseVideoMessageAttach (const IMMessage &msg, IMVideo &video) |
static bool | ParseLocationMessageAttach (const IMMessage &msg, IMLocation &location) |
static bool | ParseBotRobotMessageAttach (const IMMessage &msg, IMBotRobot &robot_msg) |
static void | UnregTalkCb () |
static void | RegTeamNotificationFilter (const TeamNotificationFilter &filter, const std::string &json_extension="") |
static void | RegMessageFilter (const MessageFilter &filter, const std::string &json_extension="") |
static void | RegRecallMsgsCallback (const RecallMsgsCallback &cb, const std::string &json_extension="") |
static void | RecallMsg (const IMMessage &msg, const std::string ¬ify, const RecallMsgsCallback &cb, const std::string &json_extension="") |
static void | RecallMsg2 (const IMMessage &msg, const std::string ¬ify, const RecallMsgsCallback &cb, const std::string &apnstext="", const std::string &pushpayloadconst="", const std::string &json_extension="") |
static void | RecallMsgEx (const IMMessage &msg, const std::string ¬ify, const RecallMsgsCallback &cb, nim_talk_recall_extra_params &extra_param) |
static std::string | GetAttachmentPathFromMsg (const IMMessage &msg) |
static void | RegReceiveBroadcastMsgCb (const ReceiveBroadcastMsgCallback &cb, const std::string &json_extension="") |
static void | RegReceiveBroadcastMsgsCb (const ReceiveBroadcastMsgsCallback &cb, const std::string &json_extension="") |
static void | ReplyMessage (const IMMessage &msg, const std::string &json_reply_msg, FileUpPrgCallback *prg_cb=nullptr) |
static void | ReplyMessage (const IMMessage &former_msg, const IMMessage &reply_msg, FileUpPrgCallback *prg_cb=nullptr) |
static void | ReplyMessageWithOption (const IMMessage &former_msg, const IMMessage &reply_msg, const ReplyMessageOption &option, FileUpPrgCallback *prg_cb=nullptr) |
回复消息(Thread 聊天场景),携带回复消息的选项 | |
聊天功能,主要包括消息收发、消息撤回、消息回复(Thread 场景)等功能
typedef std::function<void(int64_t, int64_t)> nim::Talk::FileUpPrgCallback |
发送多媒体消息文件上传过程回调
typedef std::function<bool(const IMMessage&)> nim::Talk::MessageFilter |
消息过滤器
typedef std::function<void(const NIMResCode, const std::list<RecallMsgNotify>&)> nim::Talk::RecallMsgsCallback |
消息撤回通知回调
typedef std::function<void(const BroadcastMessage&)> nim::Talk::ReceiveBroadcastMsgCallback |
接收广播消息通知回调
typedef std::function<void(const std::list<BroadcastMessage>&)> nim::Talk::ReceiveBroadcastMsgsCallback |
批量接收广播消息通知回调
typedef std::function<void(const IMMessage&)> nim::Talk::ReceiveMsgCallback |
接收消息通知回调
typedef std::function<void(const std::list<IMMessage>&)> nim::Talk::ReceiveMsgsCallback |
批量接收消息通知回调
typedef std::function<void(const SendMessageArc&)> nim::Talk::SendMsgAckCallback |
发送消息回执通知回调
typedef std::function<bool(const IMMessage&)> nim::Talk::TeamNotificationFilter |
群通知过滤器
|
static |
生成语音消息内容,生成的字符串在调用 SendMsg 时直接传入即可发送语音消息
登录 IM 后调用该 API。如果需在群组或超大群中发送消息,用户需要已加入群组/超大群
[in] | receiver_id | 聊天对象的 ID
|
[in] | session_type | 会话类型,单聊、群组或超大群,详情参见 NIMSessionType |
[in] | client_msg_id | 客户端生成的消息 ID,建议采用 uuid |
[in] | audio | 语音文件信息,详情参见 IMAudio |
[in] | file_path | 文件本地绝对路径 |
[in] | msg_setting | 消息属性设置,包括离线推送、内容审核、未读计数等设置,详情参见 MessageSetting |
[in] | timetag | 消息时间 |
[in] | sub_type | 消息子类型( > 0 ),由开发者自定义,云信服务端只负责透传。SDK v7.8 起开始支持该参数 |
|
static |
生成机器人消息内容,生成的字符串在调用SendMsg时直接传入
[in] | receiver_id | 聊天对象的 ID,如果是单聊,为用户帐号,如果是群聊,为群组 ID |
[in] | session_type | NIMSessionType,聊天类型,单聊或群组 |
[in] | client_msg_id | 客户端消息id,建议uuid |
[in] | content | 内容 |
[in] | bot_msg | 机器人消息信息 |
[in] | msg_setting | 消息属性设置 |
[in] | timetag | 消息时间 |
[in] | sub_type | 消息子类型( > 0 ),由开发者自定义,服务端只负责透传 v7.8 |
|
static |
生成文件消息内容,生成的字符串在调用 SendMsg 时直接传入即可发送文件消息
登录 IM 后调用该 API。如果需在群组或超大群中发送消息,用户需要已加入群组/超大群
[in] | receiver_id | 聊天对象的 ID
|
[in] | session_type | 会话类型,单聊、群组或超大群,详情参见 NIMSessionType |
[in] | client_msg_id | 客户端生成的消息 ID,建议采用 uuid |
[in] | file | 文件信息,详情参见IMFile |
[in] | file_path | 文件本地绝对路径 |
[in] | msg_setting | 消息属性设置,包括离线推送、内容审核、未读计数等设置,详情参见 MessageSetting |
[in] | timetag | 消息时间 |
[in] | sub_type | 消息子类型( > 0 ),由开发者自定义,云信服务端只负责透传。SDK v7.8 起开始支持该参数 |
|
static |
生成话单(Android/iOS/Web)消息内容,生成的字符串在调用[SendMsg](nim::Talk::SendMsg)时直接传入即可发送话单消息
登录 IM 后调用该 API。如果需在群组或超大群中发送消息,用户需要已加入群组/超大群
[in] | receiver_id | 聊天对象的 ID
|
[in] | session_type | 会话类型,单聊、群组或超大群,详情参见 NIMSessionType |
[in] | client_msg_id | 客户端生成的消息 ID,建议采用 uuid |
[in] | msg_attach | 话单 JSON 体包含type、channel、status 以及 durations 数组 |
[in] | msg_setting | 消息属性设置,包括离线推送和未读计数等设置,详情参见 MessageSetting |
[in] | timetag | 消息时间 |
[in] | sub_type | 消息子类型( > 0 ),由开发者自定义,云信服务端只负责透传。SDK v7.8 起开始支持该参数 |
|
static |
生成图片消息内容,生成的字符串在调用 SendMsg 时直接传入即可发送图片消息
登录 IM 后调用该 API。如果需在群组或超大群中发送消息,用户需要已加入群组/超大群
[in] | receiver_id | 聊天对象的 ID
|
[in] | session_type | 会话类型,单聊、群组或超大群,详情参见 NIMSessionType |
[in] | client_msg_id | 客户端生成的消息 ID,建议采用 uuid |
[in] | image | 图片文件信息,详情参见 IMImage |
[in] | file_path | 文件本地绝对路径 |
[in] | msg_setting | 消息属性设置,包括离线推送、内容审核、未读计数等设置,详情参见 MessageSetting |
[in] | timetag | 消息时间 |
[in] | sub_type | 消息子类型( > 0 ),由开发者自定义,云信服务端只负责透传。SDK v7.8 起开始支持该参数 |
|
static |
生成地理位置消息的内容,生成的字符串在调用 SendMsg 时直接传入即可发送地理位置消息
登录 IM 后调用该 API。如果需在群组或超大群中发送消息,用户需要已加入群组/超大群
[in] | receiver_id | 聊天对象的 ID
|
[in] | session_type | 会话类型,单聊、群组或超大群,详情参见 NIMSessionType |
[in] | client_msg_id | 客户端生成的消息 ID,建议采用 uuid |
[in] | location | 位置信息,详情参见 IMLocation |
[in] | msg_setting | 消息属性设置,包括离线推送、内容审核、未读计数等设置,详情参见 MessageSetting |
[in] | timetag | 消息时间 |
[in] | sub_type | 消息子类型( > 0 ),由开发者自定义,云信服务端只负责透传。SDK v7.8 起开始支持该参数 |
|
static |
由其他消息生成转发消息,调用该 API 后还需要调用 SendMsg 将生成的转发消息发送至目标对象
登录 IM 后调用该 API。如果需在群组或超大群中发送消息,用户需要已加入群组/超大群
[in] | src_msg_json | 原消息 JSON 字符串 |
[in] | client_msg_id | 新的消息 ID(客户端生成的消息 ID),建议采用 uuid |
[in] | retweet_to_session_type | 转发至的目标会话类型,包括单聊、群组和超大群,详情参见 NIMSessionType |
[in] | retweet_to_session_id | 转发至的对象的 ID,
|
[in] | msg_setting | 消息属性设置,包括离线推送、内容审核、未读计数等设置,详情参见 MessageSetting |
[in] | timetag | 消息时间 |
|
static |
生成文字消息内容,生成的字符串在调用 SendMsg 时直接传入即可发送文本消息
登录 IM 后调用该 API。如果需在群组或超大群中发送消息,用户需要已加入群组/超大群
[in] | receiver_id | 聊天对象的 ID
|
[in] | session_type | 会话类型,单聊、群组或超大群,详情参见 NIMSessionType |
[in] | client_msg_id | 客户端生成的消息 ID,建议采用 uuid |
[in] | content | 文本内容 |
[in] | msg_setting | 消息属性设置,包括离线推送、内容审核、未读计数等设置,详情参见 MessageSetting |
[in] | timetag | 消息时间 |
[in] | sub_type | 消息子类型( > 0 ),由开发者自定义,云信服务端只负责透传。SDK v7.8 起开始支持该参数 |
|
static |
生成提示(Tips)消息内容,生成的字符串在调用 SendMsg 时直接传入即可发送提示消息
登录 IM 后调用该 API。如果需在群组或超大群中发送消息,用户需要已加入群组/超大群
[in] | receiver_id | 聊天对象的 ID
|
[in] | session_type | 会话类型,单聊、群组或超大群,详情参见 NIMSessionType |
[in] | client_msg_id | 客户端生成的消息 ID,建议采用 uuid |
[in] | tip | 提示消息的文本内容 |
[in] | msg_setting | 消息属性设置,包括离线推送、内容审核、未读计数等设置,详情参见 MessageSetting |
[in] | timetag | 消息时间 |
[in] | sub_type | 消息子类型( > 0 ),由开发者自定义,云信服务端只负责透传。SDK v7.8 起开始支持该参数 |
|
static |
生成视频消息内容,生成的字符串在调用 SendMsg 时直接传入即可发送视频消息
登录 IM 后调用该 API。如果需在群组或超大群中发送消息,用户需要已加入群组/超大群
[in] | receiver_id | 聊天对象的 ID
|
[in] | session_type | 会话类型,单聊、群组或超大群,详情参见 NIMSessionType |
[in] | client_msg_id | 客户端生成的消息 ID,建议采用 uuid |
[in] | video | 视频文件信息,详情参见 IMVideo |
[in] | file_path | 文件本地绝对路径 |
[in] | msg_setting | 消息属性设置,包括离线推送、内容审核、未读计数等设置,详情参见 MessageSetting |
[in] | timetag | 消息时间 |
[in] | sub_type | 消息子类型( > 0 ),由开发者自定义,云信服务端只负责透传。SDK v7.8 起开始支持该参数 |
|
static |
从消息体中获取附件(图片、语音、视频等)的本地路径
接收到消息时
[in] | msg | 消息 |
通过得到的消息获得语音信息
[in] | msg | 消息 |
[out] | audio | 语音信息 |
|
static |
通过得到的消息获得文件信息
[in] | msg | 消息 |
[out] | file | 文件信息 |
通过得到的消息获得图片信息
[in] | msg | 消息 |
[out] | image | 图片信息 |
解析消息 JSON 字符串
[in] | json_msg | 消息内容 JSON 字符串 |
[out] | msg | 消息内容 |
|
static |
通过得到的消息获得地理位置信息
[in] | msg | 消息 |
[out] | location | 位置信息 |
通过得到的消息获得视频信息
[in] | msg | 消息 |
[out] | video | 视频信息 |
|
static |
撤回消息
消息发送后的可撤回时长内(默认 2 分钟),用户撤回已发送的单聊消息或者群消息
单聊和群聊消息的撤回功能存在些许区别:
调用该方法将触发 RecallMsgsCallback 回调
[in] | msg | 待撤回的消息 |
[in] | notify | 自定义通知消息 |
[in] | json_extension | JSON 扩展参数(备用,目前不需要) |
[in] | cb | 回调 |
|
static |
撤回消息
消息发送后的可撤回时长内(默认 2 分钟),用户撤回已发送的单聊消息或者群消息
单聊和群聊消息的撤回功能存在些许区别:
调用该方法将触发 RecallMsgsCallback 回调
[in] | msg | 待撤回消息 |
[in] | notify | 自定义通知消息 |
[in] | cb | 回调 |
[in] | apnstext | 透传消息推送文本,不填则不推送 |
[in] | pushpayloadconst | 第三方自定义的推送属性,限制 JSON,长度 2048 |
[in] | json_extension | JSON 扩展参数(备用,目前不需要) |
|
static |
撤回消息
消息发送后的可撤回时长内(默认 2 分钟),用户撤回已发送的单聊消息或者群消息
单聊和群聊消息的撤回功能存在些许区别:
调用该方法将触发 RecallMsgsCallback 回调
[in] | msg | 待撤回的消息 | |||||||||
[in] | notify | 自定义通知消息 | |||||||||
[in] | cb | 回调 | |||||||||
[in] | extra_param | 额外的参数,包含:
开通与配置消息抄送功能的详情,请参见开通消息抄送,第三方回调相关详情,请参见第三方回调概述 | |
|
static |
(全局回调)注册消息过滤回调。注册后,接收到消息前将先触发本回调,开发者可自行决定是否过滤消息
登录 IM 前注册该回调
[in] | json_extension | JSON 扩展参数(备用,目前不需要) |
[in] | filter | 过滤接口 |
|
static |
(全局回调)注册消息撤回通知的回调
登录 IM 前注册该回调
[in] | json_extension | JSON 扩展参数(备用,目前不需要) |
[in] | cb | 回调 |
|
static |
(全局回调)注册接收在线广播消息的回调(全局注册)
登录 IM 前注册该回调
[in] | json_extension | JSON 扩展参数(备用,目前不需要) |
[in] | cb | 接收消息的回调函数 |
|
static |
(全局回调)注册批量接收离线广播消息的回调 (全局注册)
登录 IM 前注册该回调
[in] | json_extension | JSON 扩展参数(备用,目前不需要) |
[in] | cb | 接收消息的回调函数 |
|
static |
(全局回调)注册接收在线消息的回调
登录 IM 前注册该回调
[in] | json_extension | JSON 扩展参数(备用,目前不需要) |
[in] | cb | 接收消息的回调函数 |
|
static |
(全局回调)注册批量接收离线消息的回调
登录 IM 前注册该回调
[in] | json_extension | JSON 扩展参数(备用,目前不需要) |
[in] | cb | 接收消息的回调函数 |
|
static |
(全局回调)注册发送消息回调函数,可通过该回调判断消息是否发送成功
登录 IM 前注册该回调函数
[in] | json_extension | JSON 扩展参数(备用,目前不需要) |
[in] | cb | 发送消息的回调函数 |
void 无返回值
|
static |
(全局回调)注册群通知过滤回调。注册后,群通知触发前将先触发本回调,开发者可自行决定是否过滤群通知
登录 IM 前注册该回调
[in] | json_extension | JSON 扩展参数(备用,目前不需要) |
[in] | filter | 过滤接口 |
|
static |
|
static |
回复消息(Thread 聊天场景)
已在控制台开通会话消息回复功能。配置路径:选择应用,进入IM 免费版/专业版 > 功能权限开通 > 拓展配置 > 全局 > 会话消息回复
用户引用接收到的某一条消息进行针对性的回复(见如下示例图),形成起始于该消息的消息回复树状结构。通过该功能,用户可针对某一条消息进行提问、反馈或补充相关背景信息,且不会对会话内的消息流造成干扰。
调用该 API 将触发被回复方的ReceiveMsgCallback和[ReceiveMsgsCallback](nim::Talk::ReceiveMsgsCallback)回调
[in] | msg | 被回复消息的消息体 |
[in] | json_reply_msg | 回复消息的消息体,可通过各种 CreatexxxMessage 接口创建 |
[in] | prg_cb | 传进度的回调函数, 如果发送的消息里包含了文件资源,则通过此回调函数通知上传进度 |
|
static |
回复消息(Thread 聊天场景),携带回复消息的选项
former_msg | 被回复消息的消息体 |
reply_msg | 回复消息的消息体,可通过各种 CreatexxxMessage 接口创建 |
option | 回复消息的选项 |
prg_cb | 传进度的回调函数, 如果发送的消息里包含了文件资源,则通过此回调函数通知上传进度 |
|
static |
发送消息并携带指定参数
message | 消息体 |
option | 发送消息相关配置 |
pcb | 多媒体资源(语音、视频和文件)上传进度的回调函数 |
|
static |
发送消息
向目标用户、目标群组或目标超大群发送消息
已调用 CreateXXXMessage 方法创建消息体,具体的方法见如下列出的创建消息体相关 API
[in] | json_msg | 消息体 JSON 字符串,可以通过 CreateXXXMessage 方法自动创建 |
[in] | json_extension | json扩展参数(备用,目前不需要) |
[in] | pcb | 多媒体资源(语音、视频和文件)上传进度的回调函数, 如果发送的消息里包含了多媒体资源,则可通过此回调函数获取上传进度 |
|
static |
|
static |
发送消息
向目标用户、目标群组或目标超大群发送消息
已调用 CreateXXXMessage 方法创建消息体,具体的方法见如下列出的创建消息体相关 API
[in] | json_msg | 消息体 JSON 字符串,可以通过 CreateXXXMessage 方法自动创建 |
[in] | json_extension | JSON 扩展参数(备用,目前不需要) |
[in] | pcb | 多媒体资源(语音、视频和文件)上传进度的回调函数, 如果发送的消息里包含了多媒体资源,则可通过此回调函数获取上传进度 |
|
static |
停止正在发送中的消息
[in] | client_msg_id | 停止发送的消息的 ID(客户端生成的消息 ID) |
[in] | type | 停止发送的消息类型 |
[in] | json_extension | JSON 扩展参数(备用,目前不需要) |
|
static |
反注册 Talk 类中提供的所有回调