NIM 跨平台 C++ SDK
载入中...
搜索中...
未找到
nim_talk_helper.h
浏览该文件的文档.
1
7#ifndef _NIM_SDK_CPP_TALK_HELPER_H_
8#define _NIM_SDK_CPP_TALK_HELPER_H_
9
10#include <functional>
11#include <list>
12#include <string>
16#include "nim_define_include.h"
22namespace nim {
23
49 std::string push_content_;
53 std::string local_ext_;
57 std::list<std::string> force_push_ids_list_;
63 std::string anti_spam_content_;
65 std::string anti_apam_biz_id_;
81 std::string env_config_;
83 std::string anti_spam_ext;
85 std::string anti_spam_res;
86
89 : resend_flag_(BS_NOT_INIT)
90 , server_history_saved_(BS_NOT_INIT)
91 , roaming_(BS_NOT_INIT)
92 , self_sync_(BS_NOT_INIT)
93 , need_push_(BS_NOT_INIT)
94 , push_need_badge_(BS_NOT_INIT)
95 , push_need_prefix_(BS_NOT_INIT)
96 , routable_(BS_NOT_INIT)
97 , is_blacklisted_(BS_NOT_INIT)
98 , need_offline_(BS_NOT_INIT)
99 , is_force_push_(BS_NOT_INIT)
100 , anti_spam_enable_(BS_NOT_INIT)
101 , anti_apam_using_yidun_(1)
102 , client_anti_spam_hitting_(BS_NOT_INIT)
103 , team_msg_need_ack_(BS_NOT_INIT)
104 , team_msg_ack_sent_(BS_NOT_INIT)
105 , team_msg_unread_count_(-1)
106 , is_update_session_(BS_NOT_INIT) {}
107
114 if (server_history_saved_ != BS_NOT_INIT)
115 message[kNIMMsgKeyHistorySave] = server_history_saved_;
116 if (roaming_ != BS_NOT_INIT)
117 message[kNIMMsgKeyMsgRoaming] = roaming_;
118 if (self_sync_ != BS_NOT_INIT)
119 message[kNIMMsgKeyMsgSync] = self_sync_;
120 if (push_need_badge_ != BS_NOT_INIT)
121 message[kNIMMsgKeyPushNeedBadge] = push_need_badge_;
122 if (need_push_ != BS_NOT_INIT)
123 message[kNIMMsgKeyPushEnable] = need_push_;
124 if (push_need_prefix_ != BS_NOT_INIT)
125 message[kNIMMsgKeyPushNeedPrefix] = push_need_prefix_;
126 if (resend_flag_ != BS_NOT_INIT)
127 message[kNIMMsgKeyResendFlag] = resend_flag_;
128 if (routable_ != BS_NOT_INIT)
129 message[kNIMMsgKeyMsgRoutable] = routable_;
130 if (is_blacklisted_ != BS_NOT_INIT)
131 message[kNIMMsgKeyIsBlacklisted] = is_blacklisted_;
132 if (need_offline_ != BS_NOT_INIT)
133 message[kNIMMsgKeySetMsgOffline] = need_offline_;
134 if (!push_payload_.empty())
135 message[kNIMMsgKeyPushPayload] = GetJsonStringWithNoStyled(push_payload_);
136 if (!push_content_.empty())
137 message[kNIMMsgKeyPushContent] = push_content_;
138 if (!server_ext_.empty())
139 message[kNIMMsgKeyServerExt] = GetJsonStringWithNoStyled(server_ext_);
140 if (!local_ext_.empty())
141 message[kNIMMsgKeyLocalExt] = local_ext_;
142 if (is_force_push_ != BS_NOT_INIT)
143 message[kNIMMsgKeyIsForcePush] = is_force_push_ == BS_TRUE ? 1 : 0;
144 if (!force_push_content_.empty())
145 message[kNIMMsgKeyForcePushContent] = force_push_content_;
146 if (!force_push_ids_list_.empty()) {
147 std::string ids_json;
148 StrListToJsonString(force_push_ids_list_, ids_json);
149 message[kNIMMsgKeyForcePushList] = ids_json;
150 }
151 if (anti_spam_enable_ != BS_NOT_INIT)
152 message[kNIMMsgKeyAntiSpamEnable] = anti_spam_enable_ == BS_TRUE ? 1 : 0;
153 if (!anti_spam_content_.empty())
154 message[kNIMMsgKeyAntiSpamContent] = anti_spam_content_;
155 if (!anti_apam_biz_id_.empty())
156 message[kNIMMsgKeyAntiSpamBizId] = anti_apam_biz_id_;
157 message[kNIMMsgKeyAntiSpamUsingYiDun] = anti_apam_using_yidun_;
158 if (client_anti_spam_hitting_ != BS_NOT_INIT)
159 message[kNIMMsgKeyClientAntiSpam] = client_anti_spam_hitting_;
160 if (team_msg_need_ack_ != BS_NOT_INIT)
161 message[kNIMMsgKeyTeamMsgAck] = team_msg_need_ack_;
162 if (team_msg_ack_sent_ != BS_NOT_INIT)
163 message[kNIMMsgKeyLocalKeyTeamMsgAckSent] = team_msg_ack_sent_;
164 if (team_msg_unread_count_ > -1)
165 message[kNIMMsgKeyLocalKeyTeamMsgUnreadCount] = team_msg_unread_count_;
166 if (is_update_session_ != BS_NOT_INIT)
167 message[kNIMMsgKeyIsUpdateSession] = is_update_session_;
168 if (!yidun_anti_cheating_.empty())
169 message[kNIMMsgKeyAntiCheatingYiDun] = yidun_anti_cheating_;
170 if (!anti_spam_ext.empty())
171 message[kNIMMsgKeyAntiSpamExt] = anti_spam_ext;
172 if (!anti_spam_res.empty())
173 message[kNIMMsgKeyAntiSpamRes] = anti_spam_res;
174 if (!env_config_.empty())
175 message[kNIMMsgKeyEnv] = env_config_;
176 }
179 ToJsonValue(value);
180 return value;
181 }
182
189 if (message.isMember(kNIMMsgKeyHistorySave))
190 server_history_saved_ = message[kNIMMsgKeyHistorySave].asInt() == 1 ? BS_TRUE : BS_FALSE;
191 if (message.isMember(kNIMMsgKeyMsgRoaming))
192 roaming_ = message[kNIMMsgKeyMsgRoaming].asInt() == 1 ? BS_TRUE : BS_FALSE;
193 if (message.isMember(kNIMMsgKeyMsgSync))
194 self_sync_ = message[kNIMMsgKeyMsgSync].asInt() == 1 ? BS_TRUE : BS_FALSE;
196 push_need_badge_ = message[kNIMMsgKeyPushNeedBadge].asInt() == 1 ? BS_TRUE : BS_FALSE;
197 if (message.isMember(kNIMMsgKeyPushEnable))
198 need_push_ = message[kNIMMsgKeyPushEnable].asInt() == 1 ? BS_TRUE : BS_FALSE;
200 push_need_prefix_ = message[kNIMMsgKeyPushNeedPrefix].asInt() == 1 ? BS_TRUE : BS_FALSE;
201 if (message.isMember(kNIMMsgKeyResendFlag))
202 resend_flag_ = message[kNIMMsgKeyResendFlag].asInt() == 1 ? BS_TRUE : BS_FALSE;
203 if (message.isMember(kNIMMsgKeyMsgRoutable))
204 routable_ = message[kNIMMsgKeyMsgRoutable].asInt() == 1 ? BS_TRUE : BS_FALSE;
206 is_blacklisted_ = message[kNIMMsgKeyIsBlacklisted].asInt() == 1 ? BS_TRUE : BS_FALSE;
208 need_offline_ = message[kNIMMsgKeySetMsgOffline].asInt() == 1 ? BS_TRUE : BS_FALSE;
209 if (message.isMember(kNIMMsgKeyServerExt) && !message[kNIMMsgKeyServerExt].asString().empty()) {
210 nim::ParseJsonValue(message[kNIMMsgKeyServerExt].asString(), server_ext_);
211 }
212 if (message.isMember(kNIMMsgKeyPushPayload) && !message[kNIMMsgKeyPushPayload].asString().empty()) {
213 nim::ParseJsonValue(message[kNIMMsgKeyPushPayload].asString(), push_payload_);
214 }
215 local_ext_ = message[kNIMMsgKeyLocalExt].asString();
216 push_content_ = message[kNIMMsgKeyPushContent].asString();
217 if (message.isMember(kNIMMsgKeyIsForcePush))
218 is_force_push_ = message[kNIMMsgKeyIsForcePush].asInt() == 1 ? BS_TRUE : BS_FALSE;
219 force_push_content_ = message[kNIMMsgKeyForcePushContent].asString();
220 if (message[kNIMMsgKeyForcePushList].isString()) {
222 if (nim::ParseJsonValue(message[kNIMMsgKeyForcePushList].asString(), values) && values.isArray())
223 JsonStrArrayToList(values, force_push_ids_list_);
224 else {
225 // assert(0);
226 }
227 }
229 anti_spam_enable_ = message[kNIMMsgKeyAntiSpamEnable].asInt() == 1 ? BS_TRUE : BS_FALSE;
230 anti_spam_content_ = message[kNIMMsgKeyAntiSpamContent].asString();
232 client_anti_spam_hitting_ = message[kNIMMsgKeyClientAntiSpam].asInt() == 1 ? BS_TRUE : BS_FALSE;
233 if (message.isMember(kNIMMsgKeyTeamMsgAck))
234 team_msg_need_ack_ = message[kNIMMsgKeyTeamMsgAck].asInt() == 1 ? BS_TRUE : BS_FALSE;
236 team_msg_ack_sent_ = message[kNIMMsgKeyLocalKeyTeamMsgAckSent].asInt() == 1 ? BS_TRUE : BS_FALSE;
238 team_msg_unread_count_ = message[kNIMMsgKeyLocalKeyTeamMsgUnreadCount].asInt();
240 is_update_session_ = message[kNIMMsgKeyIsUpdateSession].asBool() ? BS_TRUE : BS_FALSE;
242 yidun_anti_cheating_ = message[kNIMMsgKeyAntiCheatingYiDun].asString();
243 if (message.isMember(kNIMMsgKeyAntiSpamExt))
244 anti_spam_ext = message[kNIMMsgKeyAntiSpamExt].asString();
245 if (message.isMember(kNIMMsgKeyAntiSpamRes))
246 anti_spam_res = message[kNIMMsgKeyAntiSpamRes].asString();
247 if (message.isMember(kNIMMsgKeyEnv))
248 env_config_ = message[kNIMMsgKeyEnv].asString();
249 }
250};
251
259 uint64_t reply_msg_time_{0};
261 uint64_t reply_msg_id_server_{0};
264
270 uint64_t thread_msg_time_{0};
272 uint64_t thread_msg_id_server_{0};
278 : reply_msg_from_account_("")
279 , reply_msg_to_account_("")
280 , reply_msg_time_(0)
281 , reply_msg_id_server_(0)
282 , reply_msg_id_client_("")
283 , thread_msg_from_account_("")
284 , thread_msg_to_account_("")
285 , thread_msg_time_(0)
286 , thread_msg_id_server_(0)
287 , thread_msg_id_client_("")
288 , deleted_(0) {}
289};
290
293 // 机器人 function
294 std::string function_;
295 // 机器人消息 topic
296 std::string topic_;
297 // 机器人自定义字段
298 std::string custom_content_;
299 // 机器人账号, 单聊忽略, 群聊需指定
300 std::string account_;
301};
302
306 std::string content_;
308 time_t message_time_{0};
310 time_t chunk_time_{0};
312 int type_{0};
314 uint32_t index_{0};
316 if (content_.empty())
317 return;
319 values[kNIMAICallKeyStreamingMessageChunkMessageTime] = static_cast<int64_t>(message_time_);
320 values[kNIMAICallKeyStreamingMessageChunkChunkTime] = static_cast<int64_t>(chunk_time_);
323 }
335 }
336};
337
339
343 std::string account_id_;
347 bool streaming_{false};
351 std::list<NIMAIMessageRAGInfo> rags_;
355 ai_config[kNIMAICallKeyAccountID] = account_id_;
356 ai_config[kNIMAICallKeyStatus] = ai_status_;
357 ai_config[kNIMAICallKeyStreaming] = streaming_;
358 ai_config[kNIMAICallKeyStreamingMessageStatus] = streaming_message_status_;
359 for (const auto& rag : rags_) {
361 rag.ToJsonValue(rag_info);
362 ai_config[kNIMAICallKeyAIRAGs].append(rag_info);
363 }
365 chunk_.ToJsonValue(chunks_values);
366 if (!chunks_values.isNull())
367 ai_config[kNIMAICallKeyStreamingMessageChunk] = chunks_values;
368 }
371 ToJsonValue(value);
372 return value;
373 }
375 account_id_ = ai_config[kNIMAICallKeyAccountID].asString();
376 ai_status_ = static_cast<NIMAIMessageStatus>(ai_config[kNIMAICallKeyStatus].asInt());
377 streaming_ = ai_config[kNIMAICallKeyStreaming].asBool();
378 streaming_message_status_ = static_cast<NIMAIStreamingMessageStatus>(ai_config[kNIMAICallKeyStreamingMessageStatus].asInt());
379 if (ai_config.isMember(kNIMAICallKeyAIRAGs) && ai_config[kNIMAICallKeyAIRAGs].isArray()) {
380 for (const auto& rag : ai_config[kNIMAICallKeyAIRAGs]) {
381 NIMAIMessageRAGInfo rag_info;
382 rag_info.FromJsonValue(rag);
383 rags_.emplace_back(rag_info);
384 }
385 }
388 }
389 }
390};
391
395 bool streaming_{false};
401 ai_config[kNIMAICallKeyStreaming] = streaming_;
402 ai_config[kNIMAICallKeyStreamingMessageStatus] = status_;
404 chunk_.ToJsonValue(chunks_values);
405 if (!chunks_values.isNull())
406 ai_config[kNIMAICallKeyStreamingMessageChunk] = chunks_values;
407 }
410 ToJsonValue(value);
411 return value;
412 }
414 streaming_ = streaming_config[kNIMAICallKeyStreaming].asBool();
415 status_ = static_cast<NIMStreamingMessageStatus>(streaming_config[kNIMAICallKeyStreamingMessageStatus].asInt());
416 if (streaming_config.isMember(kNIMAICallKeyStreamingMessageChunk))
417 chunk_.FromJsonValue(streaming_config[kNIMAICallKeyStreamingMessageChunk]);
418 }
419};
420
423
428 ai_config_.ToJsonValue(ai_config);
429 message_value[kNIMMsgKeyAIConfig] = ai_config;
430 }
433 ToJsonValue(value);
434 return value;
435 }
436};
437
439
448 std::string receiver_accid_;
450 std::string sender_accid_;
452 int64_t timetag_;
454 int64_t update_timetag_{0};
456 std::string update_accid_;
458 std::string content_;
462 std::string attach_;
464 std::string client_msg_id_;
470 int32_t sub_type_{0};
472 std::string local_res_path_;
474 std::string local_talk_id_;
476 std::string local_res_id_;
497
500 : rescode_((NIMResCode)0)
501 , feature_(kNIMMessageFeatureDefault)
502 , readonly_sender_client_type_(kNIMClientTypeDefault)
503 , readonly_server_id_(0)
504 , session_type_(kNIMSessionTypeP2P)
505 , timetag_(0)
507 , status_(nim::kNIMMsgLogStatusNone)
508 , sub_status_(nim::kNIMMsgLogSubStatusNone) {}
509
511 IMMessage(const std::string& json_msg)
512 : rescode_((NIMResCode)0)
513 , feature_(kNIMMessageFeatureDefault)
514 , readonly_sender_client_type_(kNIMClientTypeDefault)
515 , readonly_server_id_(0)
516 , session_type_(kNIMSessionTypeP2P)
517 , timetag_(0)
519 , status_(nim::kNIMMsgLogStatusNone)
520 , sub_status_(nim::kNIMMsgLogSubStatusNone) {
522 if (nim::ParseJsonValue(json_msg, values) && values.isObject()) {
523 session_type_ = (NIMSessionType)values[kNIMMsgKeyToType].asUInt();
524 receiver_accid_ = values[kNIMMsgKeyToAccount].asString();
525 sender_accid_ = values[kNIMMsgKeyFromAccount].asString();
526 readonly_sender_client_type_ = (NIMClientType)values[kNIMMsgKeyFromClientType].asUInt();
527 readonly_sender_device_id_ = values[kNIMMsgKeyFromDeviceId].asString();
528 readonly_sender_nickname_ = values[kNIMMsgKeyFromNick].asString();
529 timetag_ = values[kNIMMsgKeyTime].asUInt64();
530 update_timetag_ = values[kNIMMsgKeyUpdateTime].asUInt64();
531 update_accid_ = values[kNIMMsgKeyUpdateAccountID].asString();
532 type_ = (NIMMessageType)values[kNIMMsgKeyType].asUInt();
533 content_ = values[kNIMMsgKeyBody].asString();
534 attach_ = values[kNIMMsgKeyAttach].asString();
535 client_msg_id_ = values[kNIMMsgKeyClientMsgid].asString();
536 readonly_server_id_ = values[kNIMMsgKeyServerMsgid].asUInt64();
537 local_res_path_ = values[kNIMMsgKeyLocalFilePath].asString();
538 local_talk_id_ = values[kNIMMsgKeyLocalTalkId].asString();
539 local_res_id_ = values[kNIMMsgKeyLocalResId].asString();
540 status_ = (NIMMsgLogStatus)values[kNIMMsgKeyLocalLogStatus].asUInt();
541 sub_status_ = (NIMMsgLogSubStatus)values[kNIMMsgKeyLocalLogSubStatus].asUInt();
542 msg_setting_.ParseMessageSetting(values);
543 // v7.8 <--
544 third_party_callback_ext_ = values[kNIMMsgKeyThirdPartyCBEXT].asString();
545 sub_type_ = values[kNIMMsgKeySubType].asInt();
546 // --> v7.8
547 if (values.isMember(kNIMMsgKeyThreadInfo)) {
558 thread_info_.deleted_ = values[kNIMMsgKeyThreadInfo][kNIMMsgKeyDeleted].asInt();
559 }
560 if (values.isMember(kNIMMsgKeyRobotInfo)) {
565 }
566 if (values.isMember(kNIMMsgKeyAIConfig) && values[kNIMMsgKeyAIConfig].isObject()) {
567 ai_config_.ParseIMMessageAIConfig(values[kNIMMsgKeyAIConfig]);
568 }
571 }
572 }
573 }
574
581 values[kNIMMsgKeyLocalRescode] = rescode_;
582 values[kNIMMsgKeyToType] = session_type_;
583 values[kNIMMsgKeyToAccount] = receiver_accid_;
584 values[kNIMMsgKeyFromAccount] = sender_accid_;
585 values[kNIMMsgKeyTime] = timetag_;
586 values[kNIMMsgKeyType] = type_;
587 values[kNIMMsgKeyUpdateTime] = update_timetag_;
588 values[kNIMMsgKeyUpdateAccountID] = update_accid_;
589 values[kNIMMsgKeyBody] = content_;
590 values[kNIMMsgKeyAttach] = attach_;
591 values[kNIMMsgKeyClientMsgid] = client_msg_id_;
592 values[kNIMMsgKeyLocalFilePath] = local_res_path_;
593 values[kNIMMsgKeyLocalTalkId] = local_talk_id_;
594 values[kNIMMsgKeyLocalResId] = local_res_id_;
595 values[kNIMMsgKeyLocalLogStatus] = status_;
596 values[kNIMMsgKeyLocalLogSubStatus] = sub_status_;
597 values[kNIMMsgKeySubType] = sub_type_;
598 msg_setting_.ToJsonValue(values);
599 if (!use_to_send) {
600 values[kNIMMsgKeyFromClientType] = readonly_sender_client_type_;
601 values[kNIMMsgKeyFromDeviceId] = readonly_sender_device_id_;
602 values[kNIMMsgKeyFromNick] = readonly_sender_nickname_;
603 values[kNIMMsgKeyServerMsgid] = readonly_server_id_;
604 values[kNIMMsgKeyThirdPartyCBEXT] = third_party_callback_ext_;
605 }
616 values[kNIMMsgKeyThreadInfo][kNIMMsgKeyDeleted] = thread_info_.deleted_;
618 values[kNIMMsgKeyRobotInfo][kNIMMsgKeyRobotTopic] = robot_info_.topic_;
621 if (!ai_config_.account_id_.empty()) {
622 nim_cpp_wrapper_util::Json::Value ai_config = ai_config_.ToJsonValue();
623 values[kNIMMsgKeyAIConfig] = ai_config;
624 }
625 values[kNIMMsgKeyStreamingConfig] = streaming_config_.ToJsonValue();
626 return values;
627 }
628
633 std::string ToJsonString(bool use_to_send) const {
634 nim_cpp_wrapper_util::Json::Value values = ToJsonObject(use_to_send);
635 return GetJsonStringWithNoStyled(values);
636 }
637};
638
642 std::string md5_;
644 int64_t size_;
646 std::string url_;
648 std::string display_name_;
650 std::string file_extension_;
655 : size_(0)
656 , msg_attachment_tag_(kNIMNosDefaultTagIM) {}
657
664 // 以下客户端可以选填
665 if (!display_name_.empty())
666 attach[kNIMFileMsgKeyDisplayName] = display_name_;
667 if (!file_extension_.empty())
668 attach[kNIMFileMsgKeyExt] = file_extension_;
669 if (!md5_.empty())
670 attach[kNIMFileMsgKeyMd5] = md5_;
671 if (size_ > 0)
672 attach[kNIMFileMsgKeySize] = size_;
673 if (!url_.empty())
674 attach[kNIMMsgAttachKeyUrl] = url_;
675 if (!msg_attachment_tag_.empty())
676 attach[kNIMMsgAttachKeyTag] = msg_attachment_tag_;
677 return GetJsonStringWithNoStyled(attach);
678 }
679
684 std::string ToJsonString() const {
686 attach[kNIMFileMsgKeyDisplayName] = display_name_;
687 return ToJsonString(attach);
688 }
689
690 bool operator==(const IMFile& rhs) const {
691 return md5_ == rhs.md5_ && size_ == rhs.size_ && url_ == rhs.url_ && display_name_ == rhs.display_name_ &&
692 file_extension_ == rhs.file_extension_ && msg_attachment_tag_ == rhs.msg_attachment_tag_;
693 }
694};
695
702
705 : width_(0)
706 , height_(0) {}
707
712 std::string ToJsonString() const {
714 attach[kNIMImgMsgKeyWidth] = width_;
715 attach[kNIMImgMsgKeyHeight] = height_;
716
717 return IMFile::ToJsonString(attach); // remove the Visual C++ __super keyword.
718 }
719
720 bool operator==(const IMImage& rhs) const { return IMFile::operator==(rhs) && width_ == rhs.width_ && height_ == rhs.height_; }
721};
722
726 std::string description_;
728 double latitude_;
731
734 : latitude_(0)
735 , longitude_(0) {}
736
741 std::string ToJsonString() const {
743 attach[kNIMLocationMsgKeyTitle] = description_;
744 attach[kNIMLocationMsgKeyLatitude] = latitude_;
745 attach[kNIMLocationMsgKeyLongitude] = longitude_;
746
747 return GetJsonStringWithNoStyled(attach);
748 }
749
750 bool operator==(const IMLocation& rhs) const {
751 return description_ == rhs.description_ && latitude_ == rhs.latitude_ && longitude_ == rhs.longitude_;
752 }
753};
754
759
762 : duration_(0) {}
763
768 std::string ToJsonString() const {
770 attach[kNIMAudioMsgKeyDuration] = duration_;
771
772 return IMFile::ToJsonString(attach); // remove the Visual C++ __super keyword.
773 }
774
775 bool operator==(const IMAudio& rhs) const { return IMFile::operator==(rhs) && duration_ == rhs.duration_; }
776};
777
786
789 : duration_(0)
790 , width_(0)
791 , height_(0) {}
792
797 std::string ToJsonString() const {
799 attach[kNIMVideoMsgKeyWidth] = width_;
800 attach[kNIMVideoMsgKeyHeight] = height_;
801 attach[kNIMVideoMsgKeyDuration] = duration_;
802
803 return IMFile::ToJsonString(attach); // remove the Visual C++ __super keyword.
804 }
805
806 bool operator==(const IMVideo& rhs) const {
807 return IMFile::operator==(rhs) && duration_ == rhs.duration_ && width_ == rhs.width_ && height_ == rhs.height_;
808 }
809};
810
816 std::string robot_accid_;
819
821 std::string related_msg_id_;
823 std::string robot_msg_flag_;
826
829 : out_msg_(false) {}
830
835 std::string ToJsonString() const {
837 attach[kNIMBotRobotMsgKeyRobotID] = robot_accid_;
838 attach[kNIMBotRobotSentMsgKeyParam] = sent_param_;
839 attach[kNIMBotRobotReceivedMsgKeyMsgOut] = out_msg_;
840 attach[kNIMBotRobotReceivedMsgKeyClientMsgID] = related_msg_id_;
841 attach[kNIMBotRobotReceivedMsgKeyRobotMsgFlag] = robot_msg_flag_;
842 attach[kNIMBotRobotReceivedMsgKeyRobotMsgMessage] = robot_msg_content_;
843
844 return GetJsonStringWithNoStyled(attach);
845 }
846
847 bool operator==(const IMBotRobot& rhs) const {
848 return out_msg_ == rhs.out_msg_ && robot_accid_ == rhs.robot_accid_ && sent_param_ == rhs.sent_param_ &&
849 related_msg_id_ == rhs.related_msg_id_ && robot_msg_flag_ == rhs.robot_msg_flag_ && robot_msg_content_ == rhs.robot_msg_content_;
850 }
851};
852
855 std::string body_;
856 int64_t time_;
857 int64_t id_;
858 std::string from_id_;
859};
860
868 std::string update_content_;
869 std::string ToJsonString() const {
871 values[kNIMStopStreamingMessageOptType] = operation_type_;
872 if (operation_type_ == kNIMStopStreamingMessageOptTypeUpdate) {
873 values[kNIMStopStreamingMessageUpdateContent] = update_content_;
874 }
875 return GetJsonStringWithNoStyled(values);
876 }
877};
878
885 std::string ToJsonString() const {
887 values[kNIMStopStreamingMessageOptType] = operation_type_;
888 return GetJsonStringWithNoStyled(values);
889 }
890};
891
898NIM_SDK_CPPWRAPPER_DLL_API bool ParseMessage(const std::string& msg_json, IMMessage& message);
899
906NIM_SDK_CPPWRAPPER_DLL_API bool ParseReceiveMessage(const std::string& msg_json, IMMessage& message);
907
914NIM_SDK_CPPWRAPPER_DLL_API void ParseReceiveMessage(const nim_cpp_wrapper_util::Json::Value& msg_json_value, IMMessage& message);
915
922NIM_SDK_CPPWRAPPER_DLL_API void ParseMessage(const nim_cpp_wrapper_util::Json::Value& msg_json, IMMessage& message);
923
924} // namespace nim
925
926#endif //_NIM_SDK_CPP_TALK_HELPER_H_
Represents a JSON value.
Definition: value.h:196
bool isMember(const char *key) const
Definition: json_value.cpp:1241
bool isArray() const
Definition: json_value.cpp:1386
bool isObject() const
Definition: json_value.cpp:1390
UInt asUInt() const
Definition: json_value.cpp:684
Value & append(const Value &value)
Append value to array at the end.
Definition: json_value.cpp:1142
bool asBool() const
Definition: json_value.cpp:839
bool empty() const
Return true if empty array, empty object, or null; otherwise, false.
Definition: json_value.cpp:908
Int asInt() const
Definition: json_value.cpp:657
String asString() const
Embedded zeroes are possible.
Definition: json_value.cpp:632
bool isNull() const
Definition: json_value.cpp:1268
namespace nim
bool ParseMessage(const std::string &msg_json, IMMessage &message)
解析消息
Definition: nim_talk_helper.cpp:11
bool ParseJsonValue(const std::string &content, nim_cpp_wrapper_util::Json::Value &values)
解析JsonString
Definition: nim_json_util.cpp:70
bool StrListToJsonString(const std::list< std::string > &list, std::string &out)
将一个string类型的list组装成一个Json Array
Definition: nim_json_util.cpp:12
bool ParseReceiveMessage(const std::string &msg_json, IMMessage &message)
解析消息
Definition: nim_talk_helper.cpp:20
bool JsonStrArrayToList(const nim_cpp_wrapper_util::Json::Value &array_str, std::list< std::string > &out)
将一个string类型的Json Array解析成一个string类型的list
Definition: nim_json_util.cpp:30
std::string GetJsonStringWithNoStyled(const nim_cpp_wrapper_util::Json::Value &values)
获得非格式化的Json string,传入SDK的json string格式要求为非格式化的,如果是格式化的json string可能会影响功能
Definition: nim_json_util.cpp:89
static const char * kNIMAICallKeyStreamingMessageChunkType
AI 流式消息分片类型,当前仅支持 0 表示文本
Definition: nim_ai_def.h:43
static const char * kNIMAICallKeyStreamingMessageChunkContent
AI 流式消息分片内容
Definition: nim_ai_def.h:37
static const char * kNIMAICallKeyStreamingMessageChunk
AI 流式消息分片信息
Definition: nim_ai_def.h:35
static const char * kNIMAICallKeyStreamingMessageChunkIndex
AI 流式消息分片序号,从 0 开始
Definition: nim_ai_def.h:45
static const char * kNIMAICallKeyStreamingMessageChunkMessageTime
AI 流式消息分片消息时间,即消息创建占位时间
Definition: nim_ai_def.h:39
static const char * kNIMAICallKeyAIRAGs
JSON array AI RAG(Retrieval-Augmented Generation) 信息
Definition: nim_ai_def.h:21
static const char * kNIMAICallKeyStreaming
bool AI streaming message
Definition: nim_ai_def.h:17
static const char * kNIMAICallKeyStreamingMessageChunkChunkTime
AI 流式消息当前分片时间,chunkTime >= messageTime
Definition: nim_ai_def.h:41
static const char * kNIMAICallKeyStatus
int AI config status
Definition: nim_ai_def.h:15
static const char * kNIMAICallKeyAccountID
string AI account id
Definition: nim_ai_def.h:11
static const char * kNIMAICallKeyStreamingMessageStatus
int AI streaming message status
Definition: nim_ai_def.h:19
AI 辅助方法和数据结构定义
NIMClientType
Definition: nim_client_def.h:113
@ kNIMClientTypeDefault
Default, unset
Definition: nim_client_def.h:115
NIM 公共数据类型定义总的包含文件
JSON辅助方法
NIMMsgLogStatus
Definition: nim_msglog_def.h:351
@ kNIMMsgLogStatusNone
默认,不能当查询条件,意义太多
Definition: nim_msglog_def.h:353
NIMMessageType
Definition: nim_msglog_def.h:309
@ kNIMMessageTypeUnknown
未知类型消息,本地使用,发送时勿使用,作为默认值
Definition: nim_msglog_def.h:333
NIMAIMessageStatus
AI 数字人消息状态
Definition: nim_msglog_def.h:537
@ kNIMMessageAIStatusUnknown
默认
Definition: nim_msglog_def.h:539
NIMMsgLogSubStatus
Definition: nim_msglog_def.h:473
@ kNIMMsgLogSubStatusNone
默认状态
Definition: nim_msglog_def.h:475
NIMAIStreamingMessageStatus
AI 流式消息状态
Definition: nim_msglog_def.h:547
@ kNIMAIStreamingMessageNone
非流式状态
Definition: nim_msglog_def.h:551
@ kNIMAIStreamingMessageStreaming
流式过程中(本地状态,其他为服务器状态)
Definition: nim_msglog_def.h:549
NIMMessageFeature
Definition: nim_msglog_def.h:337
@ kNIMMessageFeatureDefault
默认
Definition: nim_msglog_def.h:339
static const char * kNIMNosDefaultTagIM
string im消息类文件上传tag 如图片、文件、音视频消息等, 可以通过 nim_nos_init_tags修改资源的过期时间
Definition: nim_nos_def.h:203
定义导出宏
#define NIM_SDK_CPPWRAPPER_DLL_API
Definition: nim_sdk_cpp_wrapper.h:38
加载 NIM SDK 的帮助类头文件
BoolStatus
Definition: nim_sdk_util.h:22
@ BS_TRUE
true
Definition: nim_sdk_util.h:28
@ BS_NOT_INIT
未初始化
Definition: nim_sdk_util.h:24
@ BS_FALSE
false
Definition: nim_sdk_util.h:26
NIMSessionType
Definition: nim_session_def.h:16
@ kNIMSessionTypeP2P
个人,即点对点
Definition: nim_session_def.h:18
static const char * kNIMMsgKeyRobotFunction
(可选)string, 机器人 function,后台配置
Definition: nim_talk_def.h:294
static const char * kNIMMsgKeyAttach
string,消息多媒体资源参数,不同类型多媒体参数不同,发送非多媒体消息时不需要填写,如需使用json string,必须为可以解析为json的非格式化的字符串
Definition: nim_talk_def.h:206
static const char * kNIMMsgKeyRobotCustomContent
(可选)string, 机器人消息的自定义字段,后台配置
Definition: nim_talk_def.h:298
static const char * kNIMLocationMsgKeyLatitude
double,纬度
Definition: nim_talk_def.h:460
static const char * kNIMMsgKeyFromDeviceId
string,消息发送方设备id,服务器填写,发送方不需要填写
Definition: nim_talk_def.h:192
static const char * kNIMMsgKeyReplyMsgToAccount
(可选)string,从属thread_info节点,被回复消息的消息接受者,群的话是tid
Definition: nim_talk_def.h:274
static const char * kNIMMsgKeyAIConfig
string AI config
Definition: nim_talk_def.h:341
NIMRedoAIMessageOptType
重新生成数字人消息操作类型,
Definition: nim_talk_def.h:119
@ kNIMRedoAIMessageOptTypeUpdate
更新消息
Definition: nim_talk_def.h:121
static const char * kNIMMsgKeyThreadInfo
(可选) json object,被回复消息的消息发送者
Definition: nim_talk_def.h:270
static const char * kNIMMsgKeyLocalRescode
int,消息错误码(NIMResCode)
Definition: nim_talk_def.h:170
static const char * kNIMMsgKeyAntiSpamUsingYiDun
int, (可选) 单条消息是否使用易盾反垃圾 0:(在开通易盾的情况下)不过易盾反垃圾
Definition: nim_talk_def.h:255
static const char * kNIMMsgKeyReplyMsgIdClient
(可选)string,从属thread_info节点,被回复消息的消息ID)clientId)
Definition: nim_talk_def.h:280
static const char * kNIMMsgKeyToType
int,会话类型(NIMSessionType)
Definition: nim_talk_def.h:184
static const char * kNIMMsgKeyThreadMsgIdServer
(可选)long,从属thread_info节点,thread消息的消息ID)serverId)
Definition: nim_talk_def.h:288
static const char * kNIMBotRobotReceivedMsgKeyClientMsgID
string,机器人回复时带的字段,表示该条回复相关联的消息ID
Definition: nim_talk_def.h:475
static const char * kNIMMsgKeyIsForcePush
int,(可选)群组消息是否强推,0:不强推, 1:强推,属性只针对群组消息强推列表
Definition: nim_talk_def.h:242
static const char * kNIMMsgKeyLocalTalkId
string,会话id,发送方选填,接收方收到的是消息发送方id
Definition: nim_talk_def.h:321
static const char * kNIMMsgKeyDeleted
Definition: nim_talk_def.h:303
static const char * kNIMMsgKeyAntiCheatingYiDun
(可选)String, 易盾反垃圾增强反作弊专属字段, 限制json,长度限制1024
Definition: nim_talk_def.h:261
static const char * kNIMMsgKeyClientAntiSpam
int, (可选) 是否命中客户端反垃圾,命中:1 未命中:0 或者不填写
Definition: nim_talk_def.h:249
static const char * kNIMMsgKeyBody
string,消息正文,长度限制:5000字符
Definition: nim_talk_def.h:204
static const char * kNIMStopStreamingMessageUpdateContent
string 更新的文本
Definition: nim_talk_def.h:543
static const char * kNIMMsgKeyUpdateTime
long, 消息更新时间戳(毫秒)
Definition: nim_talk_def.h:198
static const char * kNIMMsgKeyClientMsgid
string,客户端消息id
Definition: nim_talk_def.h:208
static const char * kNIMLocationMsgKeyLongitude
double,经度
Definition: nim_talk_def.h:462
static const char * kNIMMsgKeyType
int,消息类型(NIMMessageType)
Definition: nim_talk_def.h:202
static const char * kNIMMsgKeyRobotAccount
(可选)string, 机器人账号,单聊里不需要填;群聊里需要指定机器人账号,机器人回复的消息里也会带上这字段
Definition: nim_talk_def.h:300
static const char * kNIMBotRobotReceivedMsgKeyRobotMsgFlag
string,机器人回复时带的字段,表示该条回复类型,类型定义可见Demo源码或参考波特开发文档,bot或faq
Definition: nim_talk_def.h:481
static const char * kNIMFileMsgKeyDisplayName
string,用于显示的文件名,发送方选填,默认文件名
Definition: nim_talk_def.h:449
static const char * kNIMMsgKeyEnv
Definition: nim_talk_def.h:311
static const char * kNIMMsgKeyLocalKeyTeamMsgUnreadCount
int, 群消息未读数
Definition: nim_talk_def.h:317
static const char * kNIMMsgKeyLocalExt
string,只维护在本地的扩展字段,必须为可以解析为json的非格式化的字符串
Definition: nim_talk_def.h:329
static const char * kNIMMsgKeyAntiSpamBizId
string, (可选)用户配置的对某些单条消息另外的反垃圾的业务ID
Definition: nim_talk_def.h:253
static const char * kNIMMsgKeyTeamMsgAck
(可选)int, 群消息是否需要已读业务,0:不需要,1:需要
Definition: nim_talk_def.h:257
static const char * kNIMMsgKeyMsgRoutable
int,(可选)该消息是否抄送,0:不支持,1:支持,默认按照app的路由开关
Definition: nim_talk_def.h:232
static const char * kNIMMsgKeyReplyMsgFromAccount
(可选)string,从属thread_info节点,被回复消息的消息发送者
Definition: nim_talk_def.h:272
static const char * kNIMMsgKeyForcePushList
string,(可选)群组消息强推列表,推送指定账号id string array json, 如果推送全员不填
Definition: nim_talk_def.h:238
static const char * kNIMMsgKeyServerExt
string,(可选)自定义扩展字段,必须为可以解析为json的非格式化的字符串,长度限制1024
Definition: nim_talk_def.h:222
static const char * kNIMMsgKeyRobotTopic
(可选)string, 机器人消息的 topic,后台配置
Definition: nim_talk_def.h:296
static const char * kNIMMsgKeySetMsgOffline
int,(可选)消息是否要存离线,0:不需要, 1:需要,默认1
Definition: nim_talk_def.h:236
static const char * kNIMMsgKeyMsgSync
int,(可选)该消息是否支持发送者多端同步,可选,0:不支持,1:支持, 默认1
Definition: nim_talk_def.h:218
static const char * kNIMBotRobotMsgKeyRobotID
string,机器人云信ID
Definition: nim_talk_def.h:471
static const char * kNIMVideoMsgKeyDuration
int,短视频资源时间长度(毫秒),发送方必填
Definition: nim_talk_def.h:430
static const char * kNIMFileMsgKeyMd5
string,资源MD5,发送方选填
Definition: nim_talk_def.h:445
static const char * kNIMMsgKeyFromClientType
int,消息发送方客户端类型(NIMClientType),服务器填写,发送方不需要填写
Definition: nim_talk_def.h:190
static const char * kNIMVideoMsgKeyHeight
int,短视频画面高度,发送方必填
Definition: nim_talk_def.h:434
static const char * kNIMVideoMsgKeyWidth
int,短视频画面宽度,发送方必填
Definition: nim_talk_def.h:432
static const char * kNIMMsgKeyIsBlacklisted
int,(可选)该消息被黑名单拦截 0:未被拦截,1:被拦截
Definition: nim_talk_def.h:234
static const char * kNIMMsgKeyUpdateAccountID
string, 消息更新人
Definition: nim_talk_def.h:200
static const char * kNIMMsgKeyFromAccount
string,消息发送方id,服务器填写,发送方不需要填写
Definition: nim_talk_def.h:188
static const char * kNIMBotRobotReceivedMsgKeyRobotMsgMessage
json object,机器人回复时带的字段,表示该条回复内容,字段内容定义可见Demo源码或参考波特开发文档
Definition: nim_talk_def.h:483
static const char * kNIMMsgKeyIsUpdateSession
(可选)bool, 消息是否需要刷新到session服务,false:否,true:是;只有消息存离线的情况下,才会判断该参数,缺省:true
Definition: nim_talk_def.h:259
static const char * kNIMMsgKeyStreamingConfig
string 流式消息配置信息,对普通消息和 AI 数字人消息均有效
Definition: nim_talk_def.h:343
static const char * kNIMMsgKeyServerMsgid
long,服务器端消息id
Definition: nim_talk_def.h:210
static const char * kNIMImgMsgKeyHeight
int,图片高度,发送方必填
Definition: nim_talk_def.h:394
static const char * kNIMMsgKeyAntiSpamEnable
int, 是否需要过易盾反垃圾, 0:不需要,1:需要, 默认0
Definition: nim_talk_def.h:244
static const char * kNIMMsgKeyFromNick
string,消息发送方昵称,服务器填写,发送方不需要填写
Definition: nim_talk_def.h:194
static const char * kNIMMsgKeyMsgRoaming
int,(可选)该消息是否支持漫游,可选,0:不支持,1:支持, 默认1
Definition: nim_talk_def.h:216
static const char * kNIMMsgKeyLocalFilePath
string,多媒体消息资源本地绝对路径,SDK本地维护,发送多媒体消息时必填
Definition: nim_talk_def.h:319
static const char * kNIMMsgKeyPushNeedPrefix
int,(可选)推送是否需要前缀,0:不需要,1:需要,默认1
Definition: nim_talk_def.h:230
static const char * kNIMLocationMsgKeyTitle
string,位置信息
Definition: nim_talk_def.h:464
static const char * kNIMMsgKeyReplyMsgIdServer
(可选)long,从属thread_info节点,被回复消息的消息ID)serverId)
Definition: nim_talk_def.h:278
static const char * kNIMMsgKeyThreadMsgTime
(可选)long,从属thread_info节点,thread消息的消息发送时间
Definition: nim_talk_def.h:286
static const char * kNIMMsgKeyResendFlag
int,消息重发标记位,第一次发送0,重发1
Definition: nim_talk_def.h:212
static const char * kNIMFileMsgKeySize
long,资源大小(KB),发送方选填
Definition: nim_talk_def.h:447
static const char * kNIMMsgKeyLocalResId
string,多媒体资源id,发送方选填,接收方收到的是客户端消息id
Definition: nim_talk_def.h:323
static const char * kNIMMsgKeyLocalKeyTeamMsgAckSent
bool 是否已经发送群消息已读回执
Definition: nim_talk_def.h:315
NIMStopStreamingMessageOptType
停止流式消息操作类型,
Definition: nim_talk_def.h:107
@ kNIMStopStreamingMessageOptTypeUpdate
停止输出并更新
Definition: nim_talk_def.h:113
@ kNIMStopStreamingMessageOptTypeDefault
停止输出保持现状
Definition: nim_talk_def.h:109
static const char * kNIMMsgKeyThreadMsgIdClient
(可选)string,从属thread_info节点,thread消息的消息ID)clientId)
Definition: nim_talk_def.h:290
static const char * kNIMMsgKeyToAccount
string,消息接收方id,给自己发送消息时填写自己id
Definition: nim_talk_def.h:186
static const char * kNIMMsgKeyLocalLogSubStatus
int,消息二级状态(NIMMsgLogSubStatus)
Definition: nim_talk_def.h:327
static const char * kNIMImgMsgKeyWidth
int,图片宽度,发送方必填
Definition: nim_talk_def.h:392
static const char * kNIMAudioMsgKeyDuration
int,语音资源时间长度(毫秒),发送方必填
Definition: nim_talk_def.h:411
static const char * kNIMMsgKeyPushNeedBadge
int,(可选)推送是否要做消息计数(角标),0:不需要,1:需要,默认1
Definition: nim_talk_def.h:220
static const char * kNIMMsgKeyThreadMsgFromAccount
(可选)string,从属thread_info节点,thread消息的消息发送者
Definition: nim_talk_def.h:282
static const char * kNIMMsgKeyPushEnable
int,(可选)是否需要推送, 0:不需要,1:需要,默认1,aos在收到0是不要模拟本地推送
Definition: nim_talk_def.h:228
static const char * kNIMMsgKeyForcePushContent
string,(可选)群组消息强推文本
Definition: nim_talk_def.h:240
static const char * kNIMBotRobotSentMsgKeyParam
json string,给机器人发送时需要填的字段,字段内容定义可见Demo源码或参考波特开发文档
Definition: nim_talk_def.h:473
static const char * kNIMMsgKeyAntiSpamContent
Definition: nim_talk_def.h:247
static const char * kNIMMsgKeyTime
long,消息时间戳(毫秒)
Definition: nim_talk_def.h:196
static const char * kNIMMsgAttachKeyUrl
long,资源URL, 发送方不需要填写
Definition: nim_talk_def.h:375
static const char * kNIMMsgKeyPushContent
string,(可选)自定义推送文案,长度限制200字节
Definition: nim_talk_def.h:226
static const char * kNIMMsgKeyThreadMsgToAccount
(可选)string,t从属thread_info节点,hread消息的消息接受者,群的话是tid
Definition: nim_talk_def.h:284
static const char * kNIMBotRobotReceivedMsgKeyMsgOut
bool,是否为机器人回复,默认为true
Definition: nim_talk_def.h:477
static const char * kNIMMsgKeyReplyMsgTime
(可选)long,从属thread_info节点,被回复消息的消息发送时间
Definition: nim_talk_def.h:276
static const char * kNIMMsgKeyPushPayload
string,(可选)第三方自定义的推送属性,必须为可以解析为json的非格式化的字符串,长度2048
Definition: nim_talk_def.h:224
static const char * kNIMMsgKeyLocalLogStatus
int,消息状态(NIMMsgLogStatus)
Definition: nim_talk_def.h:325
static const char * kNIMMsgKeyHistorySave
int,(可选)该消息是否存储云端历史,可选,0:不支持,1:支持, 默认1
Definition: nim_talk_def.h:214
static const char * kNIMMsgAttachKeyTag
string, (可选)发送含有附件的消息时使用的场景标签(可参见nos删除策略) ,Audio Image Video File 或者可以被SDK解析到本地文件路径的自定义消息
Definition: nim_talk_def.h:381
static const char * kNIMMsgKeySubType
(可选)int,消息的子类型,客户端定义,服务器透传
Definition: nim_talk_def.h:308
static const char * kNIMStopStreamingMessageOptType
int 操作类型
Definition: nim_talk_def.h:541
static const char * kNIMMsgKeyAntiSpamExt
(可选)String, 易盾反垃圾扩展字段,限制json,长度限制1024
Definition: nim_talk_def.h:263
static const char * kNIMMsgKeyThirdPartyCBEXT
(可选)string第三方回调回来的自定义扩展字段
Definition: nim_talk_def.h:306
static const char * kNIMFileMsgKeyExt
string,资源扩展名,不包括符号'.',发送方若选填需要保证资源本地路径包含扩展名
Definition: nim_talk_def.h:453
static const char * kNIMMsgKeyAntiSpamRes
String, 易盾反垃圾返回的结果字段
Definition: nim_talk_def.h:265
static const char * kNIMMsgKeyRobotInfo
Definition: nim_talk_def.h:292
NIMResCode
Definition: public_defines.h:21
#define false
Definition: stdbool.h:35
Definition: nim_talk_helper.h:854
std::string body_
Definition: nim_talk_helper.h:855
int64_t id_
Definition: nim_talk_helper.h:857
std::string from_id_
Definition: nim_talk_helper.h:858
int64_t time_
Definition: nim_talk_helper.h:856
语音消息附件
Definition: nim_talk_helper.h:756
int duration_
语音时长
Definition: nim_talk_helper.h:758
std::string ToJsonString() const
组装Json Value字符串
Definition: nim_talk_helper.h:768
IMAudio()
Definition: nim_talk_helper.h:761
bool operator==(const IMAudio &rhs) const
Definition: nim_talk_helper.h:775
波特机器人消息附件
Definition: nim_talk_helper.h:812
std::string related_msg_id_
机器人回复时带的字段,表示该条回复相关联的消息ID
Definition: nim_talk_helper.h:821
nim_cpp_wrapper_util::Json::Value robot_msg_content_
机器人回复时带的字段,表示该条回复内容,字段内容定义可见Demo源码或参考波特开发文档
Definition: nim_talk_helper.h:825
bool out_msg_
是否为机器人回复,是:true,不是:false,默认false
Definition: nim_talk_helper.h:814
bool operator==(const IMBotRobot &rhs) const
Definition: nim_talk_helper.h:847
nim_cpp_wrapper_util::Json::Value sent_param_
给机器人发送时需要填的字段,字段内容定义可见Demo源码或参考波特开发文档
Definition: nim_talk_helper.h:818
std::string ToJsonString() const
组装Json Value字符串
Definition: nim_talk_helper.h:835
IMBotRobot()
Definition: nim_talk_helper.h:828
std::string robot_accid_
机器人云信ID
Definition: nim_talk_helper.h:816
std::string robot_msg_flag_
机器人回复时带的字段,表示该条回复类型,类型定义可见Demo源码或参考波特开发文档
Definition: nim_talk_helper.h:823
文件消息附件
Definition: nim_talk_helper.h:640
std::string md5_
文件内容MD5
Definition: nim_talk_helper.h:642
std::string display_name_
用于显示的文件名称
Definition: nim_talk_helper.h:648
IMFile()
Definition: nim_talk_helper.h:654
std::string url_
上传云端后得到的文件下载地址
Definition: nim_talk_helper.h:646
std::string file_extension_
文件扩展名
Definition: nim_talk_helper.h:650
std::string ToJsonString(nim_cpp_wrapper_util::Json::Value &attach) const
组装Json Value字符串
Definition: nim_talk_helper.h:663
std::string ToJsonString() const
组装Json Value字符串
Definition: nim_talk_helper.h:684
int64_t size_
文件大小
Definition: nim_talk_helper.h:644
std::string msg_attachment_tag_
string, (可选)发送含有附件的消息时使用的场景标签(可参见nos删除策略) Audio Image Video File或者可以被SDK解析到本地文件路径的自定义消息
Definition: nim_talk_helper.h:652
bool operator==(const IMFile &rhs) const
Definition: nim_talk_helper.h:690
图片消息附件
Definition: nim_talk_helper.h:697
bool operator==(const IMImage &rhs) const
Definition: nim_talk_helper.h:720
std::string ToJsonString() const
组装Json Value字符串
Definition: nim_talk_helper.h:712
int height_
图片高度
Definition: nim_talk_helper.h:701
IMImage()
Definition: nim_talk_helper.h:704
int width_
图片宽度
Definition: nim_talk_helper.h:699
位置消息附件
Definition: nim_talk_helper.h:724
double latitude_
位置纬度
Definition: nim_talk_helper.h:728
double longitude_
位置经度
Definition: nim_talk_helper.h:730
bool operator==(const IMLocation &rhs) const
Definition: nim_talk_helper.h:750
std::string description_
位置描述内容
Definition: nim_talk_helper.h:726
std::string ToJsonString() const
组装Json Value字符串
Definition: nim_talk_helper.h:741
IMLocation()
Definition: nim_talk_helper.h:733
AI 数字人消息信息
Definition: nim_talk_helper.h:341
void ParseIMMessageAIConfig(const nim_cpp_wrapper_util::Json::Value &ai_config)
Definition: nim_talk_helper.h:374
NIMAIStreamingMessageChunk chunk_
流式消息的分片信息
Definition: nim_talk_helper.h:353
std::list< NIMAIMessageRAGInfo > rags_
AI RAG(Retrieval-Augmented Generation) 信息
Definition: nim_talk_helper.h:351
std::string account_id_
数字人账号信息,发送消息时指定该字段代表要 @ AI 数字人
Definition: nim_talk_helper.h:343
void ToJsonValue(nim_cpp_wrapper_util::Json::Value &ai_config) const
Definition: nim_talk_helper.h:354
nim_cpp_wrapper_util::Json::Value ToJsonValue() const
Definition: nim_talk_helper.h:369
Definition: nim_talk_helper.h:440
std::string local_res_path_
媒体文件本地绝对路径(客户端)
Definition: nim_talk_helper.h:472
std::string ToJsonString(bool use_to_send) const
组装Json Value字符串
Definition: nim_talk_helper.h:633
IMMessageAIConfig ai_config_
AI 数字人消息配置
Definition: nim_talk_helper.h:486
NIMSessionType session_type_
会话类型
Definition: nim_talk_helper.h:446
NIMMessageFeature feature_
消息属性
Definition: nim_talk_helper.h:444
MessageSetting msg_setting_
消息属性设置
Definition: nim_talk_helper.h:466
IMMessage(const std::string &json_msg)
Definition: nim_talk_helper.h:511
std::string readonly_sender_device_id_
发送者客户端设备ID(只读)
Definition: nim_talk_helper.h:492
NIMClientType readonly_sender_client_type_
发送者客户端类型(只读)
Definition: nim_talk_helper.h:490
std::string client_msg_id_
消息ID(客户端)
Definition: nim_talk_helper.h:464
IMMessageStreamingConfig streaming_config_
IM 消息通用流式消息配置,数字人流式消息和普通流式消息均会填充该字段
Definition: nim_talk_helper.h:488
std::string receiver_accid_
接收者ID
Definition: nim_talk_helper.h:448
IMMessage()
Definition: nim_talk_helper.h:499
NIMResCode rescode_
错误码
Definition: nim_talk_helper.h:442
NIMMsgLogStatus status_
消息状态(客户端)
Definition: nim_talk_helper.h:478
std::string local_talk_id_
会话ID(客户端)
Definition: nim_talk_helper.h:474
IMMessageThreadInfo thread_info_
thread 消息信息
Definition: nim_talk_helper.h:482
nim_cpp_wrapper_util::Json::Value ToJsonObject(bool use_to_send) const
组装Json Object
Definition: nim_talk_helper.h:579
uint64_t readonly_server_id_
消息ID(服务器,只读)
Definition: nim_talk_helper.h:496
std::string readonly_sender_nickname_
发送者昵称(只读)
Definition: nim_talk_helper.h:494
NIMMsgLogSubStatus sub_status_
消息子状态(客户端)
Definition: nim_talk_helper.h:480
NIMMessageType type_
消息类型
Definition: nim_talk_helper.h:460
std::string attach_
消息附件 ,长度限制10000
Definition: nim_talk_helper.h:462
int64_t timetag_
消息时间戳(毫秒)
Definition: nim_talk_helper.h:452
std::string local_res_id_
媒体文件ID(客户端)
Definition: nim_talk_helper.h:476
std::string content_
消息内容,长度限制10000
Definition: nim_talk_helper.h:458
std::string third_party_callback_ext_
第三方回调回来的自定义扩展字段 v7.8添加
Definition: nim_talk_helper.h:468
IMMessageRobotInfo robot_info_
机器人消息信息
Definition: nim_talk_helper.h:484
std::string sender_accid_
发送者ID
Definition: nim_talk_helper.h:450
std::string update_accid_
更新者账号 ID
Definition: nim_talk_helper.h:456
机器人消息信息
Definition: nim_talk_helper.h:292
std::string topic_
Definition: nim_talk_helper.h:296
std::string function_
Definition: nim_talk_helper.h:294
std::string account_
Definition: nim_talk_helper.h:300
std::string custom_content_
Definition: nim_talk_helper.h:298
Definition: nim_talk_helper.h:424
IMMessageAIConfigParam ai_config_
Definition: nim_talk_helper.h:425
nim_cpp_wrapper_util::Json::Value ToJsonValue() const
Definition: nim_talk_helper.h:431
void ToJsonValue(nim_cpp_wrapper_util::Json::Value &message_value) const
Definition: nim_talk_helper.h:426
IM 消息通用流式消息配置
Definition: nim_talk_helper.h:393
nim_cpp_wrapper_util::Json::Value ToJsonValue() const
Definition: nim_talk_helper.h:408
void ParseIMMessageStreamingConfig(const nim_cpp_wrapper_util::Json::Value &streaming_config)
Definition: nim_talk_helper.h:413
void ToJsonValue(nim_cpp_wrapper_util::Json::Value &ai_config) const
Definition: nim_talk_helper.h:400
NIMStreamingMessageChunk chunk_
流式消息的分片信息,仅当 streaming_ 为 true 时有效
Definition: nim_talk_helper.h:399
P2P和群组消息
Definition: nim_talk_helper.h:253
std::string thread_msg_from_account_
thread消息的消息发送者
Definition: nim_talk_helper.h:266
uint64_t thread_msg_time_
thread消息的消息发送时间
Definition: nim_talk_helper.h:270
uint64_t thread_msg_id_server_
thread消息的消息ID(serverId)
Definition: nim_talk_helper.h:272
std::string thread_msg_id_client_
thread消息的消息ID(clientId)
Definition: nim_talk_helper.h:274
std::string reply_msg_from_account_
被回复消息的消息发送者
Definition: nim_talk_helper.h:255
std::string thread_msg_to_account_
thread消息的消息接受者,群的话是tid
Definition: nim_talk_helper.h:268
IMMessageThreadInfo()
Definition: nim_talk_helper.h:277
uint64_t reply_msg_time_
被回复消息的消息发送时间
Definition: nim_talk_helper.h:259
uint64_t reply_msg_id_server_
被回复消息的消息ID(serverId)
Definition: nim_talk_helper.h:261
int deleted_
消息是否已经被删除(可能是撤回,也可能是单向删除),查询thread消息历史时可能会有这个字段,大于0表示已经删除(目前撤回和单向删除都是1,未来可能区分)
Definition: nim_talk_helper.h:276
std::string reply_msg_id_client_
被回复消息的消息ID(clientId)
Definition: nim_talk_helper.h:263
std::string reply_msg_to_account_
被回复消息的消息接受者,群的话是tid
Definition: nim_talk_helper.h:257
小视频消息附件
Definition: nim_talk_helper.h:779
std::string ToJsonString() const
组装Json Value字符串
Definition: nim_talk_helper.h:797
int height_
视频画面高度
Definition: nim_talk_helper.h:785
int duration_
视频时长
Definition: nim_talk_helper.h:781
int width_
视频画面宽度
Definition: nim_talk_helper.h:783
IMVideo()
Definition: nim_talk_helper.h:788
bool operator==(const IMVideo &rhs) const
Definition: nim_talk_helper.h:806
消息属性设置
Definition: nim_talk_helper.h:25
nim_cpp_wrapper_util::Json::Value push_payload_
第三方自定义的推送属性,长度2048
Definition: nim_talk_helper.h:47
std::string anti_spam_ext
(可选)String, 易盾反垃圾扩展字段,限制 json,长度限制 1024
Definition: nim_talk_helper.h:83
std::string anti_apam_biz_id_
(可选)用户配置的对某些单条消息另外的反垃圾的业务ID
Definition: nim_talk_helper.h:65
nim_cpp_wrapper_util::Json::Value ToJsonValue() const
Definition: nim_talk_helper.h:177
void ParseMessageSetting(const nim_cpp_wrapper_util::Json::Value &message)
从Json Value解析出消息属性设置
Definition: nim_talk_helper.h:188
BoolStatus team_msg_need_ack_
群消息是否需要已读业务,0:不需要,1:需要
Definition: nim_talk_helper.h:71
std::string force_push_content_
群组消息强推文本
Definition: nim_talk_helper.h:59
BoolStatus push_need_prefix_
需要推送昵称
Definition: nim_talk_helper.h:39
BoolStatus is_force_push_
群组消息强推开关,强推全员设置true并强推列表为空
Definition: nim_talk_helper.h:55
int anti_apam_using_yidun_
int, (可选) 单条消息是否使用易盾反垃圾 0:(在开通易盾的情况下)不过易盾反垃圾
Definition: nim_talk_helper.h:67
BoolStatus client_anti_spam_hitting_
(可选) 是否命中客户端反垃圾
Definition: nim_talk_helper.h:69
std::string yidun_anti_cheating_
(可选)String, 易盾反垃圾增强反作弊专属字段, 限制json,长度限制1024
Definition: nim_talk_helper.h:79
std::string push_content_
自定义推送文案,长度限制200字节
Definition: nim_talk_helper.h:49
BoolStatus anti_spam_enable_
是否需要过易盾反垃圾
Definition: nim_talk_helper.h:61
std::string anti_spam_res
String, 易盾反垃圾返回的结果字段
Definition: nim_talk_helper.h:85
int team_msg_unread_count_
群消息未读数
Definition: nim_talk_helper.h:75
BoolStatus self_sync_
该消息是否支持发送者多端同步
Definition: nim_talk_helper.h:33
BoolStatus is_update_session_
(可选) 消息是否需要刷新到session服务,0:否,1:是;只有消息存离线的情况下,才会判断该参数,缺省:1
Definition: nim_talk_helper.h:77
BoolStatus routable_
是否要抄送
Definition: nim_talk_helper.h:41
BoolStatus push_need_badge_
是否要做消息计数
Definition: nim_talk_helper.h:37
std::string env_config_
(可选)String, 环境变量,用于指向不同的抄送、第三方回调等配置(于8.0.0添加)
Definition: nim_talk_helper.h:81
BoolStatus roaming_
该消息是否支持漫游
Definition: nim_talk_helper.h:31
void ToJsonValue(nim_cpp_wrapper_util::Json::Value &message) const
组装Json Value字符串
Definition: nim_talk_helper.h:113
std::list< std::string > force_push_ids_list_
群组消息强推列表
Definition: nim_talk_helper.h:57
BoolStatus is_blacklisted_
是否被拉黑
Definition: nim_talk_helper.h:43
BoolStatus server_history_saved_
该消息是否存储云端历史
Definition: nim_talk_helper.h:29
std::string local_ext_
本地扩展字段, 格式不限,长度限制1024
Definition: nim_talk_helper.h:53
std::string anti_spam_content_
(可选)开发者自定义的反垃圾字段,长度限制5000
Definition: nim_talk_helper.h:63
BoolStatus need_offline_
是否支持离线消息
Definition: nim_talk_helper.h:45
BoolStatus need_push_
是否需要推送
Definition: nim_talk_helper.h:35
MessageSetting()
Definition: nim_talk_helper.h:88
BoolStatus resend_flag_
该消息是否为重发状态
Definition: nim_talk_helper.h:27
BoolStatus team_msg_ack_sent_
是否已经发送群消息已读回执
Definition: nim_talk_helper.h:73
nim_cpp_wrapper_util::Json::Value server_ext_
第三方扩展字段, 长度限制1024
Definition: nim_talk_helper.h:51
消息 AI RAG 信息
Definition: nim_ai_helper.h:121
void FromJsonValue(const nim_cpp_wrapper_util::Json::Value &values)
Definition: nim_ai_helper.h:142
Definition: nim_ai_helper.h:103
void ToJsonValue(nim_cpp_wrapper_util::Json::Value &values) const
Definition: nim_ai_helper.cpp:22
消息 AI 流式消息分片信息
Definition: nim_talk_helper.h:304
void ToJsonValue(nim_cpp_wrapper_util::Json::Value &values) const
Definition: nim_talk_helper.h:315
std::string content_
流式消息回复分片文本
Definition: nim_talk_helper.h:306
void FromJsonValue(const nim_cpp_wrapper_util::Json::Value &values)
Definition: nim_talk_helper.h:324
Definition: nim_talk_helper.h:882
std::string ToJsonString() const
Definition: nim_talk_helper.h:885
Definition: nim_talk_helper.h:864
std::string update_content_
更新的消息内容,仅 operation_type_ == kNIMStopStreamingMessageOptTypeUpdate 时有效
Definition: nim_talk_helper.h:868
std::string ToJsonString() const
Definition: nim_talk_helper.h:869