Bläddra i källkod

Add new API for configuration and report, generate SDK again.

sdk-team 5 år sedan
förälder
incheckning
681409a561

+ 3 - 0
CHANGELOG

@@ -1,3 +1,6 @@
+2021-01-08 Version: patch
+- Add new API for configuration and report, generate SDK again.
+
 2021-01-07 Version: patch
 - Add new API for configuration and report.
 

+ 20 - 0
ccc/CMakeLists.txt

@@ -53,14 +53,22 @@ set(ccc_public_header_model
 	include/alibabacloud/ccc/model/LaunchSurveyResult.h
 	include/alibabacloud/ccc/model/ListBriefSkillGroupsRequest.h
 	include/alibabacloud/ccc/model/ListBriefSkillGroupsResult.h
+	include/alibabacloud/ccc/model/ListCallDetailRecordsRequest.h
+	include/alibabacloud/ccc/model/ListCallDetailRecordsResult.h
 	include/alibabacloud/ccc/model/ListConfigItemsRequest.h
 	include/alibabacloud/ccc/model/ListConfigItemsResult.h
 	include/alibabacloud/ccc/model/ListDevicesRequest.h
 	include/alibabacloud/ccc/model/ListDevicesResult.h
+	include/alibabacloud/ccc/model/ListHistoricalAgentReportRequest.h
+	include/alibabacloud/ccc/model/ListHistoricalAgentReportResult.h
 	include/alibabacloud/ccc/model/ListOutboundNumbersOfUserRequest.h
 	include/alibabacloud/ccc/model/ListOutboundNumbersOfUserResult.h
 	include/alibabacloud/ccc/model/ListPrivilegesOfUserRequest.h
 	include/alibabacloud/ccc/model/ListPrivilegesOfUserResult.h
+	include/alibabacloud/ccc/model/ListRealtimeAgentStatesRequest.h
+	include/alibabacloud/ccc/model/ListRealtimeAgentStatesResult.h
+	include/alibabacloud/ccc/model/ListRecentCallDetailRecordsRequest.h
+	include/alibabacloud/ccc/model/ListRecentCallDetailRecordsResult.h
 	include/alibabacloud/ccc/model/ListSkillLevelsOfUserRequest.h
 	include/alibabacloud/ccc/model/ListSkillLevelsOfUserResult.h
 	include/alibabacloud/ccc/model/MakeCallRequest.h
@@ -87,6 +95,8 @@ set(ccc_public_header_model
 	include/alibabacloud/ccc/model/SendDtmfSignalingResult.h
 	include/alibabacloud/ccc/model/SignInGroupRequest.h
 	include/alibabacloud/ccc/model/SignInGroupResult.h
+	include/alibabacloud/ccc/model/SignOutGroupRequest.h
+	include/alibabacloud/ccc/model/SignOutGroupResult.h
 	include/alibabacloud/ccc/model/TakeBreakRequest.h
 	include/alibabacloud/ccc/model/TakeBreakResult.h
 	include/alibabacloud/ccc/model/UnmuteCallRequest.h
@@ -126,14 +136,22 @@ set(ccc_src
 	src/model/LaunchSurveyResult.cc
 	src/model/ListBriefSkillGroupsRequest.cc
 	src/model/ListBriefSkillGroupsResult.cc
+	src/model/ListCallDetailRecordsRequest.cc
+	src/model/ListCallDetailRecordsResult.cc
 	src/model/ListConfigItemsRequest.cc
 	src/model/ListConfigItemsResult.cc
 	src/model/ListDevicesRequest.cc
 	src/model/ListDevicesResult.cc
+	src/model/ListHistoricalAgentReportRequest.cc
+	src/model/ListHistoricalAgentReportResult.cc
 	src/model/ListOutboundNumbersOfUserRequest.cc
 	src/model/ListOutboundNumbersOfUserResult.cc
 	src/model/ListPrivilegesOfUserRequest.cc
 	src/model/ListPrivilegesOfUserResult.cc
+	src/model/ListRealtimeAgentStatesRequest.cc
+	src/model/ListRealtimeAgentStatesResult.cc
+	src/model/ListRecentCallDetailRecordsRequest.cc
+	src/model/ListRecentCallDetailRecordsResult.cc
 	src/model/ListSkillLevelsOfUserRequest.cc
 	src/model/ListSkillLevelsOfUserResult.cc
 	src/model/MakeCallRequest.cc
@@ -160,6 +178,8 @@ set(ccc_src
 	src/model/SendDtmfSignalingResult.cc
 	src/model/SignInGroupRequest.cc
 	src/model/SignInGroupResult.cc
+	src/model/SignOutGroupRequest.cc
+	src/model/SignOutGroupResult.cc
 	src/model/TakeBreakRequest.cc
 	src/model/TakeBreakResult.cc
 	src/model/UnmuteCallRequest.cc

+ 40 - 0
ccc/include/alibabacloud/ccc/CCCClient.h

@@ -54,14 +54,22 @@
 #include "model/LaunchSurveyResult.h"
 #include "model/ListBriefSkillGroupsRequest.h"
 #include "model/ListBriefSkillGroupsResult.h"
+#include "model/ListCallDetailRecordsRequest.h"
+#include "model/ListCallDetailRecordsResult.h"
 #include "model/ListConfigItemsRequest.h"
 #include "model/ListConfigItemsResult.h"
 #include "model/ListDevicesRequest.h"
 #include "model/ListDevicesResult.h"
+#include "model/ListHistoricalAgentReportRequest.h"
+#include "model/ListHistoricalAgentReportResult.h"
 #include "model/ListOutboundNumbersOfUserRequest.h"
 #include "model/ListOutboundNumbersOfUserResult.h"
 #include "model/ListPrivilegesOfUserRequest.h"
 #include "model/ListPrivilegesOfUserResult.h"
+#include "model/ListRealtimeAgentStatesRequest.h"
+#include "model/ListRealtimeAgentStatesResult.h"
+#include "model/ListRecentCallDetailRecordsRequest.h"
+#include "model/ListRecentCallDetailRecordsResult.h"
 #include "model/ListSkillLevelsOfUserRequest.h"
 #include "model/ListSkillLevelsOfUserResult.h"
 #include "model/MakeCallRequest.h"
@@ -88,6 +96,8 @@
 #include "model/SendDtmfSignalingResult.h"
 #include "model/SignInGroupRequest.h"
 #include "model/SignInGroupResult.h"
+#include "model/SignOutGroupRequest.h"
+#include "model/SignOutGroupResult.h"
 #include "model/TakeBreakRequest.h"
 #include "model/TakeBreakResult.h"
 #include "model/UnmuteCallRequest.h"
@@ -149,18 +159,30 @@ namespace AlibabaCloud
 			typedef Outcome<Error, Model::ListBriefSkillGroupsResult> ListBriefSkillGroupsOutcome;
 			typedef std::future<ListBriefSkillGroupsOutcome> ListBriefSkillGroupsOutcomeCallable;
 			typedef std::function<void(const CCCClient*, const Model::ListBriefSkillGroupsRequest&, const ListBriefSkillGroupsOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> ListBriefSkillGroupsAsyncHandler;
+			typedef Outcome<Error, Model::ListCallDetailRecordsResult> ListCallDetailRecordsOutcome;
+			typedef std::future<ListCallDetailRecordsOutcome> ListCallDetailRecordsOutcomeCallable;
+			typedef std::function<void(const CCCClient*, const Model::ListCallDetailRecordsRequest&, const ListCallDetailRecordsOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> ListCallDetailRecordsAsyncHandler;
 			typedef Outcome<Error, Model::ListConfigItemsResult> ListConfigItemsOutcome;
 			typedef std::future<ListConfigItemsOutcome> ListConfigItemsOutcomeCallable;
 			typedef std::function<void(const CCCClient*, const Model::ListConfigItemsRequest&, const ListConfigItemsOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> ListConfigItemsAsyncHandler;
 			typedef Outcome<Error, Model::ListDevicesResult> ListDevicesOutcome;
 			typedef std::future<ListDevicesOutcome> ListDevicesOutcomeCallable;
 			typedef std::function<void(const CCCClient*, const Model::ListDevicesRequest&, const ListDevicesOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> ListDevicesAsyncHandler;
+			typedef Outcome<Error, Model::ListHistoricalAgentReportResult> ListHistoricalAgentReportOutcome;
+			typedef std::future<ListHistoricalAgentReportOutcome> ListHistoricalAgentReportOutcomeCallable;
+			typedef std::function<void(const CCCClient*, const Model::ListHistoricalAgentReportRequest&, const ListHistoricalAgentReportOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> ListHistoricalAgentReportAsyncHandler;
 			typedef Outcome<Error, Model::ListOutboundNumbersOfUserResult> ListOutboundNumbersOfUserOutcome;
 			typedef std::future<ListOutboundNumbersOfUserOutcome> ListOutboundNumbersOfUserOutcomeCallable;
 			typedef std::function<void(const CCCClient*, const Model::ListOutboundNumbersOfUserRequest&, const ListOutboundNumbersOfUserOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> ListOutboundNumbersOfUserAsyncHandler;
 			typedef Outcome<Error, Model::ListPrivilegesOfUserResult> ListPrivilegesOfUserOutcome;
 			typedef std::future<ListPrivilegesOfUserOutcome> ListPrivilegesOfUserOutcomeCallable;
 			typedef std::function<void(const CCCClient*, const Model::ListPrivilegesOfUserRequest&, const ListPrivilegesOfUserOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> ListPrivilegesOfUserAsyncHandler;
+			typedef Outcome<Error, Model::ListRealtimeAgentStatesResult> ListRealtimeAgentStatesOutcome;
+			typedef std::future<ListRealtimeAgentStatesOutcome> ListRealtimeAgentStatesOutcomeCallable;
+			typedef std::function<void(const CCCClient*, const Model::ListRealtimeAgentStatesRequest&, const ListRealtimeAgentStatesOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> ListRealtimeAgentStatesAsyncHandler;
+			typedef Outcome<Error, Model::ListRecentCallDetailRecordsResult> ListRecentCallDetailRecordsOutcome;
+			typedef std::future<ListRecentCallDetailRecordsOutcome> ListRecentCallDetailRecordsOutcomeCallable;
+			typedef std::function<void(const CCCClient*, const Model::ListRecentCallDetailRecordsRequest&, const ListRecentCallDetailRecordsOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> ListRecentCallDetailRecordsAsyncHandler;
 			typedef Outcome<Error, Model::ListSkillLevelsOfUserResult> ListSkillLevelsOfUserOutcome;
 			typedef std::future<ListSkillLevelsOfUserOutcome> ListSkillLevelsOfUserOutcomeCallable;
 			typedef std::function<void(const CCCClient*, const Model::ListSkillLevelsOfUserRequest&, const ListSkillLevelsOfUserOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> ListSkillLevelsOfUserAsyncHandler;
@@ -200,6 +222,9 @@ namespace AlibabaCloud
 			typedef Outcome<Error, Model::SignInGroupResult> SignInGroupOutcome;
 			typedef std::future<SignInGroupOutcome> SignInGroupOutcomeCallable;
 			typedef std::function<void(const CCCClient*, const Model::SignInGroupRequest&, const SignInGroupOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> SignInGroupAsyncHandler;
+			typedef Outcome<Error, Model::SignOutGroupResult> SignOutGroupOutcome;
+			typedef std::future<SignOutGroupOutcome> SignOutGroupOutcomeCallable;
+			typedef std::function<void(const CCCClient*, const Model::SignOutGroupRequest&, const SignOutGroupOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> SignOutGroupAsyncHandler;
 			typedef Outcome<Error, Model::TakeBreakResult> TakeBreakOutcome;
 			typedef std::future<TakeBreakOutcome> TakeBreakOutcomeCallable;
 			typedef std::function<void(const CCCClient*, const Model::TakeBreakRequest&, const TakeBreakOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> TakeBreakAsyncHandler;
@@ -259,18 +284,30 @@ namespace AlibabaCloud
 			ListBriefSkillGroupsOutcome listBriefSkillGroups(const Model::ListBriefSkillGroupsRequest &request)const;
 			void listBriefSkillGroupsAsync(const Model::ListBriefSkillGroupsRequest& request, const ListBriefSkillGroupsAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
 			ListBriefSkillGroupsOutcomeCallable listBriefSkillGroupsCallable(const Model::ListBriefSkillGroupsRequest& request) const;
+			ListCallDetailRecordsOutcome listCallDetailRecords(const Model::ListCallDetailRecordsRequest &request)const;
+			void listCallDetailRecordsAsync(const Model::ListCallDetailRecordsRequest& request, const ListCallDetailRecordsAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			ListCallDetailRecordsOutcomeCallable listCallDetailRecordsCallable(const Model::ListCallDetailRecordsRequest& request) const;
 			ListConfigItemsOutcome listConfigItems(const Model::ListConfigItemsRequest &request)const;
 			void listConfigItemsAsync(const Model::ListConfigItemsRequest& request, const ListConfigItemsAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
 			ListConfigItemsOutcomeCallable listConfigItemsCallable(const Model::ListConfigItemsRequest& request) const;
 			ListDevicesOutcome listDevices(const Model::ListDevicesRequest &request)const;
 			void listDevicesAsync(const Model::ListDevicesRequest& request, const ListDevicesAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
 			ListDevicesOutcomeCallable listDevicesCallable(const Model::ListDevicesRequest& request) const;
+			ListHistoricalAgentReportOutcome listHistoricalAgentReport(const Model::ListHistoricalAgentReportRequest &request)const;
+			void listHistoricalAgentReportAsync(const Model::ListHistoricalAgentReportRequest& request, const ListHistoricalAgentReportAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			ListHistoricalAgentReportOutcomeCallable listHistoricalAgentReportCallable(const Model::ListHistoricalAgentReportRequest& request) const;
 			ListOutboundNumbersOfUserOutcome listOutboundNumbersOfUser(const Model::ListOutboundNumbersOfUserRequest &request)const;
 			void listOutboundNumbersOfUserAsync(const Model::ListOutboundNumbersOfUserRequest& request, const ListOutboundNumbersOfUserAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
 			ListOutboundNumbersOfUserOutcomeCallable listOutboundNumbersOfUserCallable(const Model::ListOutboundNumbersOfUserRequest& request) const;
 			ListPrivilegesOfUserOutcome listPrivilegesOfUser(const Model::ListPrivilegesOfUserRequest &request)const;
 			void listPrivilegesOfUserAsync(const Model::ListPrivilegesOfUserRequest& request, const ListPrivilegesOfUserAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
 			ListPrivilegesOfUserOutcomeCallable listPrivilegesOfUserCallable(const Model::ListPrivilegesOfUserRequest& request) const;
+			ListRealtimeAgentStatesOutcome listRealtimeAgentStates(const Model::ListRealtimeAgentStatesRequest &request)const;
+			void listRealtimeAgentStatesAsync(const Model::ListRealtimeAgentStatesRequest& request, const ListRealtimeAgentStatesAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			ListRealtimeAgentStatesOutcomeCallable listRealtimeAgentStatesCallable(const Model::ListRealtimeAgentStatesRequest& request) const;
+			ListRecentCallDetailRecordsOutcome listRecentCallDetailRecords(const Model::ListRecentCallDetailRecordsRequest &request)const;
+			void listRecentCallDetailRecordsAsync(const Model::ListRecentCallDetailRecordsRequest& request, const ListRecentCallDetailRecordsAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			ListRecentCallDetailRecordsOutcomeCallable listRecentCallDetailRecordsCallable(const Model::ListRecentCallDetailRecordsRequest& request) const;
 			ListSkillLevelsOfUserOutcome listSkillLevelsOfUser(const Model::ListSkillLevelsOfUserRequest &request)const;
 			void listSkillLevelsOfUserAsync(const Model::ListSkillLevelsOfUserRequest& request, const ListSkillLevelsOfUserAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
 			ListSkillLevelsOfUserOutcomeCallable listSkillLevelsOfUserCallable(const Model::ListSkillLevelsOfUserRequest& request) const;
@@ -310,6 +347,9 @@ namespace AlibabaCloud
 			SignInGroupOutcome signInGroup(const Model::SignInGroupRequest &request)const;
 			void signInGroupAsync(const Model::SignInGroupRequest& request, const SignInGroupAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
 			SignInGroupOutcomeCallable signInGroupCallable(const Model::SignInGroupRequest& request) const;
+			SignOutGroupOutcome signOutGroup(const Model::SignOutGroupRequest &request)const;
+			void signOutGroupAsync(const Model::SignOutGroupRequest& request, const SignOutGroupAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
+			SignOutGroupOutcomeCallable signOutGroupCallable(const Model::SignOutGroupRequest& request) const;
 			TakeBreakOutcome takeBreak(const Model::TakeBreakRequest &request)const;
 			void takeBreakAsync(const Model::TakeBreakRequest& request, const TakeBreakAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
 			TakeBreakOutcomeCallable takeBreakCallable(const Model::TakeBreakRequest& request) const;

+ 90 - 0
ccc/include/alibabacloud/ccc/model/ListCallDetailRecordsRequest.h

@@ -0,0 +1,90 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ALIBABACLOUD_CCC_MODEL_LISTCALLDETAILRECORDSREQUEST_H_
+#define ALIBABACLOUD_CCC_MODEL_LISTCALLDETAILRECORDSREQUEST_H_
+
+#include <string>
+#include <vector>
+#include <alibabacloud/core/RpcServiceRequest.h>
+#include <alibabacloud/ccc/CCCExport.h>
+
+namespace AlibabaCloud
+{
+	namespace CCC
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_CCC_EXPORT ListCallDetailRecordsRequest : public RpcServiceRequest
+			{
+
+			public:
+				ListCallDetailRecordsRequest();
+				~ListCallDetailRecordsRequest();
+
+				std::string getContactId()const;
+				void setContactId(const std::string& contactId);
+				std::string getOrderByField()const;
+				void setOrderByField(const std::string& orderByField);
+				long getStartTime()const;
+				void setStartTime(long startTime);
+				int getPageNumber()const;
+				void setPageNumber(int pageNumber);
+				std::string getCalledNumber()const;
+				void setCalledNumber(const std::string& calledNumber);
+				int getPageSize()const;
+				void setPageSize(int pageSize);
+				std::string getSortOrder()const;
+				void setSortOrder(const std::string& sortOrder);
+				bool getWithRecording()const;
+				void setWithRecording(bool withRecording);
+				std::string getAgentId()const;
+				void setAgentId(const std::string& agentId);
+				std::string getContactType()const;
+				void setContactType(const std::string& contactType);
+				long getEndTime()const;
+				void setEndTime(long endTime);
+				std::string getCallingNumber()const;
+				void setCallingNumber(const std::string& callingNumber);
+				std::string getContactDisposition()const;
+				void setContactDisposition(const std::string& contactDisposition);
+				std::string getInstanceId()const;
+				void setInstanceId(const std::string& instanceId);
+				std::string getSkillGroupId()const;
+				void setSkillGroupId(const std::string& skillGroupId);
+
+            private:
+				std::string contactId_;
+				std::string orderByField_;
+				long startTime_;
+				int pageNumber_;
+				std::string calledNumber_;
+				int pageSize_;
+				std::string sortOrder_;
+				bool withRecording_;
+				std::string agentId_;
+				std::string contactType_;
+				long endTime_;
+				std::string callingNumber_;
+				std::string contactDisposition_;
+				std::string instanceId_;
+				std::string skillGroupId_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_CCC_MODEL_LISTCALLDETAILRECORDSREQUEST_H_

+ 80 - 0
ccc/include/alibabacloud/ccc/model/ListCallDetailRecordsResult.h

@@ -0,0 +1,80 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ALIBABACLOUD_CCC_MODEL_LISTCALLDETAILRECORDSRESULT_H_
+#define ALIBABACLOUD_CCC_MODEL_LISTCALLDETAILRECORDSRESULT_H_
+
+#include <string>
+#include <vector>
+#include <utility>
+#include <alibabacloud/core/ServiceResult.h>
+#include <alibabacloud/ccc/CCCExport.h>
+
+namespace AlibabaCloud
+{
+	namespace CCC
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_CCC_EXPORT ListCallDetailRecordsResult : public ServiceResult
+			{
+			public:
+				struct Data
+				{
+					struct CallDetailRecord
+					{
+						std::string skillGroupIds;
+						std::string calledNumber;
+						std::string contactType;
+						std::string contactDisposition;
+						std::string instanceId;
+						long startTime;
+						std::string contactId;
+						std::string callDuration;
+						std::string callingNumber;
+						std::string skillGroupNames;
+						std::string agentIds;
+						long establishedTime;
+						std::string agentNames;
+					};
+					int totalCount;
+					int pageSize;
+					int pageNumber;
+					std::vector<CallDetailRecord> list;
+				};
+
+
+				ListCallDetailRecordsResult();
+				explicit ListCallDetailRecordsResult(const std::string &payload);
+				~ListCallDetailRecordsResult();
+				std::string getMessage()const;
+				int getHttpStatusCode()const;
+				Data getData()const;
+				std::string getCode()const;
+
+			protected:
+				void parse(const std::string &payload);
+			private:
+				std::string message_;
+				int httpStatusCode_;
+				Data data_;
+				std::string code_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_CCC_MODEL_LISTCALLDETAILRECORDSRESULT_H_

+ 63 - 0
ccc/include/alibabacloud/ccc/model/ListHistoricalAgentReportRequest.h

@@ -0,0 +1,63 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ALIBABACLOUD_CCC_MODEL_LISTHISTORICALAGENTREPORTREQUEST_H_
+#define ALIBABACLOUD_CCC_MODEL_LISTHISTORICALAGENTREPORTREQUEST_H_
+
+#include <string>
+#include <vector>
+#include <alibabacloud/core/RpcServiceRequest.h>
+#include <alibabacloud/ccc/CCCExport.h>
+
+namespace AlibabaCloud
+{
+	namespace CCC
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_CCC_EXPORT ListHistoricalAgentReportRequest : public RpcServiceRequest
+			{
+
+			public:
+				ListHistoricalAgentReportRequest();
+				~ListHistoricalAgentReportRequest();
+
+				long getStartTime()const;
+				void setStartTime(long startTime);
+				long getStopTime()const;
+				void setStopTime(long stopTime);
+				int getPageNumber()const;
+				void setPageNumber(int pageNumber);
+				std::string getInstanceId()const;
+				void setInstanceId(const std::string& instanceId);
+				std::string getAgentIdList()const;
+				void setAgentIdList(const std::string& agentIdList);
+				int getPageSize()const;
+				void setPageSize(int pageSize);
+
+            private:
+				long startTime_;
+				long stopTime_;
+				int pageNumber_;
+				std::string instanceId_;
+				std::string agentIdList_;
+				int pageSize_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_CCC_MODEL_LISTHISTORICALAGENTREPORTREQUEST_H_

+ 136 - 0
ccc/include/alibabacloud/ccc/model/ListHistoricalAgentReportResult.h

@@ -0,0 +1,136 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ALIBABACLOUD_CCC_MODEL_LISTHISTORICALAGENTREPORTRESULT_H_
+#define ALIBABACLOUD_CCC_MODEL_LISTHISTORICALAGENTREPORTRESULT_H_
+
+#include <string>
+#include <vector>
+#include <utility>
+#include <alibabacloud/core/ServiceResult.h>
+#include <alibabacloud/ccc/CCCExport.h>
+
+namespace AlibabaCloud
+{
+	namespace CCC
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_CCC_EXPORT ListHistoricalAgentReportResult : public ServiceResult
+			{
+			public:
+				struct Data
+				{
+					struct Items
+					{
+						struct Inbound
+						{
+							long callsConsulted;
+							long serviceLevel20;
+							long totalWorkTime;
+							long totalHoldTime;
+							long satisfactionSurveysOffered;
+							long callsOffered;
+							long maxRingTime;
+							long callsHold;
+							float satisfactionIndex;
+							long callsHandled;
+							long satisfactionSurveysResponded;
+							long totalRingTime;
+							float handleRate;
+							float averageRingTime;
+							long totalTalkTime;
+							long callsTransfered;
+							long maxTalkTime;
+							float averageWorkTime;
+							long maxWorkTime;
+							float averageTalkTime;
+						};
+						struct Outbound
+						{
+							long totalDialingTime;
+							long totalWorkTime;
+							long totalHoldTime;
+							long satisfactionSurveysOffered;
+							float satisfactionIndex;
+							long satisfactionSurveysResponded;
+							float averageDialingTime;
+							long callsAnswered;
+							long callsDialed;
+							long totalTalkTime;
+							long maxDialingTime;
+							long maxTalkTime;
+							long averageWorkTime;
+							long maxWorkTime;
+							float answerRate;
+							float averageTalkTime;
+						};
+						struct Overall
+						{
+							long totalReadyTime;
+							long totalBreakTime;
+							long totalCalls;
+							long totalWorkTime;
+							long totalHoldTime;
+							long satisfactionSurveysOffered;
+							float satisfactionIndex;
+							float averageBreakTime;
+							long satisfactionSurveysResponded;
+							long totalTalkTime;
+							float averageReadyTime;
+							long totalLoggedInTime;
+							long maxTalkTime;
+							float averageWorkTime;
+							long maxReadyTime;
+							long maxBreakTime;
+							long maxWorkTime;
+							float averageTalkTime;
+							float occupancyRate;
+						};
+						Outbound outbound;
+						Overall overall;
+						std::string agentId;
+						std::string agentName;
+						Inbound inbound;
+					};
+					int totalCount;
+					int pageSize;
+					int pageNumber;
+					std::vector<Items> list;
+				};
+
+
+				ListHistoricalAgentReportResult();
+				explicit ListHistoricalAgentReportResult(const std::string &payload);
+				~ListHistoricalAgentReportResult();
+				std::string getMessage()const;
+				int getHttpStatusCode()const;
+				Data getData()const;
+				std::string getCode()const;
+
+			protected:
+				void parse(const std::string &payload);
+			private:
+				std::string message_;
+				int httpStatusCode_;
+				Data data_;
+				std::string code_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_CCC_MODEL_LISTHISTORICALAGENTREPORTRESULT_H_

+ 66 - 0
ccc/include/alibabacloud/ccc/model/ListRealtimeAgentStatesRequest.h

@@ -0,0 +1,66 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ALIBABACLOUD_CCC_MODEL_LISTREALTIMEAGENTSTATESREQUEST_H_
+#define ALIBABACLOUD_CCC_MODEL_LISTREALTIMEAGENTSTATESREQUEST_H_
+
+#include <string>
+#include <vector>
+#include <alibabacloud/core/RpcServiceRequest.h>
+#include <alibabacloud/ccc/CCCExport.h>
+
+namespace AlibabaCloud
+{
+	namespace CCC
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_CCC_EXPORT ListRealtimeAgentStatesRequest : public RpcServiceRequest
+			{
+
+			public:
+				ListRealtimeAgentStatesRequest();
+				~ListRealtimeAgentStatesRequest();
+
+				int getPageNumber()const;
+				void setPageNumber(int pageNumber);
+				std::string getInstanceId()const;
+				void setInstanceId(const std::string& instanceId);
+				std::string getAgentIdList()const;
+				void setAgentIdList(const std::string& agentIdList);
+				std::string getSkillGroupId()const;
+				void setSkillGroupId(const std::string& skillGroupId);
+				std::string getAgentName()const;
+				void setAgentName(const std::string& agentName);
+				int getPageSize()const;
+				void setPageSize(int pageSize);
+				std::string getStateList()const;
+				void setStateList(const std::string& stateList);
+
+            private:
+				int pageNumber_;
+				std::string instanceId_;
+				std::string agentIdList_;
+				std::string skillGroupId_;
+				std::string agentName_;
+				int pageSize_;
+				std::string stateList_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_CCC_MODEL_LISTREALTIMEAGENTSTATESREQUEST_H_

+ 76 - 0
ccc/include/alibabacloud/ccc/model/ListRealtimeAgentStatesResult.h

@@ -0,0 +1,76 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ALIBABACLOUD_CCC_MODEL_LISTREALTIMEAGENTSTATESRESULT_H_
+#define ALIBABACLOUD_CCC_MODEL_LISTREALTIMEAGENTSTATESRESULT_H_
+
+#include <string>
+#include <vector>
+#include <utility>
+#include <alibabacloud/core/ServiceResult.h>
+#include <alibabacloud/ccc/CCCExport.h>
+
+namespace AlibabaCloud
+{
+	namespace CCC
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_CCC_EXPORT ListRealtimeAgentStatesResult : public ServiceResult
+			{
+			public:
+				struct Data
+				{
+					struct AgentState
+					{
+						std::string extension;
+						std::string counterParty;
+						long stateTime;
+						std::string instanceId;
+						std::string state;
+						std::string stateCode;
+						std::string agentId;
+						std::string agentName;
+						std::vector<std::string> skillGroupIdList;
+					};
+					int totalCount;
+					int pageSize;
+					int pageNumber;
+					std::vector<AgentState> list;
+				};
+
+
+				ListRealtimeAgentStatesResult();
+				explicit ListRealtimeAgentStatesResult(const std::string &payload);
+				~ListRealtimeAgentStatesResult();
+				std::string getMessage()const;
+				int getHttpStatusCode()const;
+				Data getData()const;
+				std::string getCode()const;
+
+			protected:
+				void parse(const std::string &payload);
+			private:
+				std::string message_;
+				int httpStatusCode_;
+				Data data_;
+				std::string code_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_CCC_MODEL_LISTREALTIMEAGENTSTATESRESULT_H_

+ 60 - 0
ccc/include/alibabacloud/ccc/model/ListRecentCallDetailRecordsRequest.h

@@ -0,0 +1,60 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ALIBABACLOUD_CCC_MODEL_LISTRECENTCALLDETAILRECORDSREQUEST_H_
+#define ALIBABACLOUD_CCC_MODEL_LISTRECENTCALLDETAILRECORDSREQUEST_H_
+
+#include <string>
+#include <vector>
+#include <alibabacloud/core/RpcServiceRequest.h>
+#include <alibabacloud/ccc/CCCExport.h>
+
+namespace AlibabaCloud
+{
+	namespace CCC
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_CCC_EXPORT ListRecentCallDetailRecordsRequest : public RpcServiceRequest
+			{
+
+			public:
+				ListRecentCallDetailRecordsRequest();
+				~ListRecentCallDetailRecordsRequest();
+
+				long getEndTime()const;
+				void setEndTime(long endTime);
+				long getStartTime()const;
+				void setStartTime(long startTime);
+				int getPageNumber()const;
+				void setPageNumber(int pageNumber);
+				std::string getInstanceId()const;
+				void setInstanceId(const std::string& instanceId);
+				int getPageSize()const;
+				void setPageSize(int pageSize);
+
+            private:
+				long endTime_;
+				long startTime_;
+				int pageNumber_;
+				std::string instanceId_;
+				int pageSize_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_CCC_MODEL_LISTRECENTCALLDETAILRECORDSREQUEST_H_

+ 78 - 0
ccc/include/alibabacloud/ccc/model/ListRecentCallDetailRecordsResult.h

@@ -0,0 +1,78 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ALIBABACLOUD_CCC_MODEL_LISTRECENTCALLDETAILRECORDSRESULT_H_
+#define ALIBABACLOUD_CCC_MODEL_LISTRECENTCALLDETAILRECORDSRESULT_H_
+
+#include <string>
+#include <vector>
+#include <utility>
+#include <alibabacloud/core/ServiceResult.h>
+#include <alibabacloud/ccc/CCCExport.h>
+
+namespace AlibabaCloud
+{
+	namespace CCC
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_CCC_EXPORT ListRecentCallDetailRecordsResult : public ServiceResult
+			{
+			public:
+				struct Data
+				{
+					struct CallDetailRecord
+					{
+						std::string skillGroupIds;
+						std::string calledNumber;
+						std::string contactType;
+						std::string contactDisposition;
+						std::string instanceId;
+						std::string agentIds;
+						long startTime;
+						long duration;
+						std::string contactId;
+						std::string callDuration;
+						std::string callingNumber;
+					};
+					int totalCount;
+					int pageSize;
+					int pageNumber;
+					std::vector<CallDetailRecord> list;
+				};
+
+
+				ListRecentCallDetailRecordsResult();
+				explicit ListRecentCallDetailRecordsResult(const std::string &payload);
+				~ListRecentCallDetailRecordsResult();
+				std::string getMessage()const;
+				int getHttpStatusCode()const;
+				Data getData()const;
+				std::string getCode()const;
+
+			protected:
+				void parse(const std::string &payload);
+			private:
+				std::string message_;
+				int httpStatusCode_;
+				Data data_;
+				std::string code_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_CCC_MODEL_LISTRECENTCALLDETAILRECORDSRESULT_H_

+ 54 - 0
ccc/include/alibabacloud/ccc/model/SignOutGroupRequest.h

@@ -0,0 +1,54 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ALIBABACLOUD_CCC_MODEL_SIGNOUTGROUPREQUEST_H_
+#define ALIBABACLOUD_CCC_MODEL_SIGNOUTGROUPREQUEST_H_
+
+#include <string>
+#include <vector>
+#include <alibabacloud/core/RpcServiceRequest.h>
+#include <alibabacloud/ccc/CCCExport.h>
+
+namespace AlibabaCloud
+{
+	namespace CCC
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_CCC_EXPORT SignOutGroupRequest : public RpcServiceRequest
+			{
+
+			public:
+				SignOutGroupRequest();
+				~SignOutGroupRequest();
+
+				std::string getUserId()const;
+				void setUserId(const std::string& userId);
+				std::string getDeviceId()const;
+				void setDeviceId(const std::string& deviceId);
+				std::string getInstanceId()const;
+				void setInstanceId(const std::string& instanceId);
+
+            private:
+				std::string userId_;
+				std::string deviceId_;
+				std::string instanceId_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_CCC_MODEL_SIGNOUTGROUPREQUEST_H_

+ 75 - 0
ccc/include/alibabacloud/ccc/model/SignOutGroupResult.h

@@ -0,0 +1,75 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ALIBABACLOUD_CCC_MODEL_SIGNOUTGROUPRESULT_H_
+#define ALIBABACLOUD_CCC_MODEL_SIGNOUTGROUPRESULT_H_
+
+#include <string>
+#include <vector>
+#include <utility>
+#include <alibabacloud/core/ServiceResult.h>
+#include <alibabacloud/ccc/CCCExport.h>
+
+namespace AlibabaCloud
+{
+	namespace CCC
+	{
+		namespace Model
+		{
+			class ALIBABACLOUD_CCC_EXPORT SignOutGroupResult : public ServiceResult
+			{
+			public:
+				struct Data
+				{
+					std::string userState;
+					std::string instanceId;
+					std::string breakCode;
+					std::string deviceId;
+					bool outboundScenario;
+					std::string mobile;
+					std::vector<std::string> signedSkillGroupIdList;
+					std::string extension;
+					std::string userId;
+					long heartbeat;
+					std::string jobId;
+					std::string workMode;
+					long reserved;
+				};
+
+
+				SignOutGroupResult();
+				explicit SignOutGroupResult(const std::string &payload);
+				~SignOutGroupResult();
+				std::string getMessage()const;
+				int getHttpStatusCode()const;
+				std::vector<std::string> getParams()const;
+				Data getData()const;
+				std::string getCode()const;
+
+			protected:
+				void parse(const std::string &payload);
+			private:
+				std::string message_;
+				int httpStatusCode_;
+				std::vector<std::string> params_;
+				Data data_;
+				std::string code_;
+
+			};
+		}
+	}
+}
+#endif // !ALIBABACLOUD_CCC_MODEL_SIGNOUTGROUPRESULT_H_

+ 180 - 0
ccc/src/CCCClient.cc

@@ -627,6 +627,42 @@ CCCClient::ListBriefSkillGroupsOutcomeCallable CCCClient::listBriefSkillGroupsCa
 	return task->get_future();
 }
 
+CCCClient::ListCallDetailRecordsOutcome CCCClient::listCallDetailRecords(const ListCallDetailRecordsRequest &request) const
+{
+	auto endpointOutcome = endpointProvider_->getEndpoint();
+	if (!endpointOutcome.isSuccess())
+		return ListCallDetailRecordsOutcome(endpointOutcome.error());
+
+	auto outcome = makeRequest(endpointOutcome.result(), request);
+
+	if (outcome.isSuccess())
+		return ListCallDetailRecordsOutcome(ListCallDetailRecordsResult(outcome.result()));
+	else
+		return ListCallDetailRecordsOutcome(outcome.error());
+}
+
+void CCCClient::listCallDetailRecordsAsync(const ListCallDetailRecordsRequest& request, const ListCallDetailRecordsAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
+{
+	auto fn = [this, request, handler, context]()
+	{
+		handler(this, request, listCallDetailRecords(request), context);
+	};
+
+	asyncExecute(new Runnable(fn));
+}
+
+CCCClient::ListCallDetailRecordsOutcomeCallable CCCClient::listCallDetailRecordsCallable(const ListCallDetailRecordsRequest &request) const
+{
+	auto task = std::make_shared<std::packaged_task<ListCallDetailRecordsOutcome()>>(
+			[this, request]()
+			{
+			return this->listCallDetailRecords(request);
+			});
+
+	asyncExecute(new Runnable([task]() { (*task)(); }));
+	return task->get_future();
+}
+
 CCCClient::ListConfigItemsOutcome CCCClient::listConfigItems(const ListConfigItemsRequest &request) const
 {
 	auto endpointOutcome = endpointProvider_->getEndpoint();
@@ -699,6 +735,42 @@ CCCClient::ListDevicesOutcomeCallable CCCClient::listDevicesCallable(const ListD
 	return task->get_future();
 }
 
+CCCClient::ListHistoricalAgentReportOutcome CCCClient::listHistoricalAgentReport(const ListHistoricalAgentReportRequest &request) const
+{
+	auto endpointOutcome = endpointProvider_->getEndpoint();
+	if (!endpointOutcome.isSuccess())
+		return ListHistoricalAgentReportOutcome(endpointOutcome.error());
+
+	auto outcome = makeRequest(endpointOutcome.result(), request);
+
+	if (outcome.isSuccess())
+		return ListHistoricalAgentReportOutcome(ListHistoricalAgentReportResult(outcome.result()));
+	else
+		return ListHistoricalAgentReportOutcome(outcome.error());
+}
+
+void CCCClient::listHistoricalAgentReportAsync(const ListHistoricalAgentReportRequest& request, const ListHistoricalAgentReportAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
+{
+	auto fn = [this, request, handler, context]()
+	{
+		handler(this, request, listHistoricalAgentReport(request), context);
+	};
+
+	asyncExecute(new Runnable(fn));
+}
+
+CCCClient::ListHistoricalAgentReportOutcomeCallable CCCClient::listHistoricalAgentReportCallable(const ListHistoricalAgentReportRequest &request) const
+{
+	auto task = std::make_shared<std::packaged_task<ListHistoricalAgentReportOutcome()>>(
+			[this, request]()
+			{
+			return this->listHistoricalAgentReport(request);
+			});
+
+	asyncExecute(new Runnable([task]() { (*task)(); }));
+	return task->get_future();
+}
+
 CCCClient::ListOutboundNumbersOfUserOutcome CCCClient::listOutboundNumbersOfUser(const ListOutboundNumbersOfUserRequest &request) const
 {
 	auto endpointOutcome = endpointProvider_->getEndpoint();
@@ -771,6 +843,78 @@ CCCClient::ListPrivilegesOfUserOutcomeCallable CCCClient::listPrivilegesOfUserCa
 	return task->get_future();
 }
 
+CCCClient::ListRealtimeAgentStatesOutcome CCCClient::listRealtimeAgentStates(const ListRealtimeAgentStatesRequest &request) const
+{
+	auto endpointOutcome = endpointProvider_->getEndpoint();
+	if (!endpointOutcome.isSuccess())
+		return ListRealtimeAgentStatesOutcome(endpointOutcome.error());
+
+	auto outcome = makeRequest(endpointOutcome.result(), request);
+
+	if (outcome.isSuccess())
+		return ListRealtimeAgentStatesOutcome(ListRealtimeAgentStatesResult(outcome.result()));
+	else
+		return ListRealtimeAgentStatesOutcome(outcome.error());
+}
+
+void CCCClient::listRealtimeAgentStatesAsync(const ListRealtimeAgentStatesRequest& request, const ListRealtimeAgentStatesAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
+{
+	auto fn = [this, request, handler, context]()
+	{
+		handler(this, request, listRealtimeAgentStates(request), context);
+	};
+
+	asyncExecute(new Runnable(fn));
+}
+
+CCCClient::ListRealtimeAgentStatesOutcomeCallable CCCClient::listRealtimeAgentStatesCallable(const ListRealtimeAgentStatesRequest &request) const
+{
+	auto task = std::make_shared<std::packaged_task<ListRealtimeAgentStatesOutcome()>>(
+			[this, request]()
+			{
+			return this->listRealtimeAgentStates(request);
+			});
+
+	asyncExecute(new Runnable([task]() { (*task)(); }));
+	return task->get_future();
+}
+
+CCCClient::ListRecentCallDetailRecordsOutcome CCCClient::listRecentCallDetailRecords(const ListRecentCallDetailRecordsRequest &request) const
+{
+	auto endpointOutcome = endpointProvider_->getEndpoint();
+	if (!endpointOutcome.isSuccess())
+		return ListRecentCallDetailRecordsOutcome(endpointOutcome.error());
+
+	auto outcome = makeRequest(endpointOutcome.result(), request);
+
+	if (outcome.isSuccess())
+		return ListRecentCallDetailRecordsOutcome(ListRecentCallDetailRecordsResult(outcome.result()));
+	else
+		return ListRecentCallDetailRecordsOutcome(outcome.error());
+}
+
+void CCCClient::listRecentCallDetailRecordsAsync(const ListRecentCallDetailRecordsRequest& request, const ListRecentCallDetailRecordsAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
+{
+	auto fn = [this, request, handler, context]()
+	{
+		handler(this, request, listRecentCallDetailRecords(request), context);
+	};
+
+	asyncExecute(new Runnable(fn));
+}
+
+CCCClient::ListRecentCallDetailRecordsOutcomeCallable CCCClient::listRecentCallDetailRecordsCallable(const ListRecentCallDetailRecordsRequest &request) const
+{
+	auto task = std::make_shared<std::packaged_task<ListRecentCallDetailRecordsOutcome()>>(
+			[this, request]()
+			{
+			return this->listRecentCallDetailRecords(request);
+			});
+
+	asyncExecute(new Runnable([task]() { (*task)(); }));
+	return task->get_future();
+}
+
 CCCClient::ListSkillLevelsOfUserOutcome CCCClient::listSkillLevelsOfUser(const ListSkillLevelsOfUserRequest &request) const
 {
 	auto endpointOutcome = endpointProvider_->getEndpoint();
@@ -1239,6 +1383,42 @@ CCCClient::SignInGroupOutcomeCallable CCCClient::signInGroupCallable(const SignI
 	return task->get_future();
 }
 
+CCCClient::SignOutGroupOutcome CCCClient::signOutGroup(const SignOutGroupRequest &request) const
+{
+	auto endpointOutcome = endpointProvider_->getEndpoint();
+	if (!endpointOutcome.isSuccess())
+		return SignOutGroupOutcome(endpointOutcome.error());
+
+	auto outcome = makeRequest(endpointOutcome.result(), request);
+
+	if (outcome.isSuccess())
+		return SignOutGroupOutcome(SignOutGroupResult(outcome.result()));
+	else
+		return SignOutGroupOutcome(outcome.error());
+}
+
+void CCCClient::signOutGroupAsync(const SignOutGroupRequest& request, const SignOutGroupAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context) const
+{
+	auto fn = [this, request, handler, context]()
+	{
+		handler(this, request, signOutGroup(request), context);
+	};
+
+	asyncExecute(new Runnable(fn));
+}
+
+CCCClient::SignOutGroupOutcomeCallable CCCClient::signOutGroupCallable(const SignOutGroupRequest &request) const
+{
+	auto task = std::make_shared<std::packaged_task<SignOutGroupOutcome()>>(
+			[this, request]()
+			{
+			return this->signOutGroup(request);
+			});
+
+	asyncExecute(new Runnable([task]() { (*task)(); }));
+	return task->get_future();
+}
+
 CCCClient::TakeBreakOutcome CCCClient::takeBreak(const TakeBreakRequest &request) const
 {
 	auto endpointOutcome = endpointProvider_->getEndpoint();

+ 194 - 0
ccc/src/model/ListCallDetailRecordsRequest.cc

@@ -0,0 +1,194 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <alibabacloud/ccc/model/ListCallDetailRecordsRequest.h>
+
+using AlibabaCloud::CCC::Model::ListCallDetailRecordsRequest;
+
+ListCallDetailRecordsRequest::ListCallDetailRecordsRequest() :
+	RpcServiceRequest("ccc", "2020-07-01", "ListCallDetailRecords")
+{
+	setMethod(HttpRequest::Method::Post);
+}
+
+ListCallDetailRecordsRequest::~ListCallDetailRecordsRequest()
+{}
+
+std::string ListCallDetailRecordsRequest::getContactId()const
+{
+	return contactId_;
+}
+
+void ListCallDetailRecordsRequest::setContactId(const std::string& contactId)
+{
+	contactId_ = contactId;
+	setParameter("ContactId", contactId);
+}
+
+std::string ListCallDetailRecordsRequest::getOrderByField()const
+{
+	return orderByField_;
+}
+
+void ListCallDetailRecordsRequest::setOrderByField(const std::string& orderByField)
+{
+	orderByField_ = orderByField;
+	setParameter("OrderByField", orderByField);
+}
+
+long ListCallDetailRecordsRequest::getStartTime()const
+{
+	return startTime_;
+}
+
+void ListCallDetailRecordsRequest::setStartTime(long startTime)
+{
+	startTime_ = startTime;
+	setParameter("StartTime", std::to_string(startTime));
+}
+
+int ListCallDetailRecordsRequest::getPageNumber()const
+{
+	return pageNumber_;
+}
+
+void ListCallDetailRecordsRequest::setPageNumber(int pageNumber)
+{
+	pageNumber_ = pageNumber;
+	setParameter("PageNumber", std::to_string(pageNumber));
+}
+
+std::string ListCallDetailRecordsRequest::getCalledNumber()const
+{
+	return calledNumber_;
+}
+
+void ListCallDetailRecordsRequest::setCalledNumber(const std::string& calledNumber)
+{
+	calledNumber_ = calledNumber;
+	setParameter("CalledNumber", calledNumber);
+}
+
+int ListCallDetailRecordsRequest::getPageSize()const
+{
+	return pageSize_;
+}
+
+void ListCallDetailRecordsRequest::setPageSize(int pageSize)
+{
+	pageSize_ = pageSize;
+	setParameter("PageSize", std::to_string(pageSize));
+}
+
+std::string ListCallDetailRecordsRequest::getSortOrder()const
+{
+	return sortOrder_;
+}
+
+void ListCallDetailRecordsRequest::setSortOrder(const std::string& sortOrder)
+{
+	sortOrder_ = sortOrder;
+	setParameter("SortOrder", sortOrder);
+}
+
+bool ListCallDetailRecordsRequest::getWithRecording()const
+{
+	return withRecording_;
+}
+
+void ListCallDetailRecordsRequest::setWithRecording(bool withRecording)
+{
+	withRecording_ = withRecording;
+	setParameter("WithRecording", withRecording ? "true" : "false");
+}
+
+std::string ListCallDetailRecordsRequest::getAgentId()const
+{
+	return agentId_;
+}
+
+void ListCallDetailRecordsRequest::setAgentId(const std::string& agentId)
+{
+	agentId_ = agentId;
+	setParameter("AgentId", agentId);
+}
+
+std::string ListCallDetailRecordsRequest::getContactType()const
+{
+	return contactType_;
+}
+
+void ListCallDetailRecordsRequest::setContactType(const std::string& contactType)
+{
+	contactType_ = contactType;
+	setParameter("ContactType", contactType);
+}
+
+long ListCallDetailRecordsRequest::getEndTime()const
+{
+	return endTime_;
+}
+
+void ListCallDetailRecordsRequest::setEndTime(long endTime)
+{
+	endTime_ = endTime;
+	setParameter("EndTime", std::to_string(endTime));
+}
+
+std::string ListCallDetailRecordsRequest::getCallingNumber()const
+{
+	return callingNumber_;
+}
+
+void ListCallDetailRecordsRequest::setCallingNumber(const std::string& callingNumber)
+{
+	callingNumber_ = callingNumber;
+	setParameter("CallingNumber", callingNumber);
+}
+
+std::string ListCallDetailRecordsRequest::getContactDisposition()const
+{
+	return contactDisposition_;
+}
+
+void ListCallDetailRecordsRequest::setContactDisposition(const std::string& contactDisposition)
+{
+	contactDisposition_ = contactDisposition;
+	setParameter("ContactDisposition", contactDisposition);
+}
+
+std::string ListCallDetailRecordsRequest::getInstanceId()const
+{
+	return instanceId_;
+}
+
+void ListCallDetailRecordsRequest::setInstanceId(const std::string& instanceId)
+{
+	instanceId_ = instanceId;
+	setParameter("InstanceId", instanceId);
+}
+
+std::string ListCallDetailRecordsRequest::getSkillGroupId()const
+{
+	return skillGroupId_;
+}
+
+void ListCallDetailRecordsRequest::setSkillGroupId(const std::string& skillGroupId)
+{
+	skillGroupId_ = skillGroupId;
+	setParameter("SkillGroupId", skillGroupId);
+}
+

+ 109 - 0
ccc/src/model/ListCallDetailRecordsResult.cc

@@ -0,0 +1,109 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <alibabacloud/ccc/model/ListCallDetailRecordsResult.h>
+#include <json/json.h>
+
+using namespace AlibabaCloud::CCC;
+using namespace AlibabaCloud::CCC::Model;
+
+ListCallDetailRecordsResult::ListCallDetailRecordsResult() :
+	ServiceResult()
+{}
+
+ListCallDetailRecordsResult::ListCallDetailRecordsResult(const std::string &payload) :
+	ServiceResult()
+{
+	parse(payload);
+}
+
+ListCallDetailRecordsResult::~ListCallDetailRecordsResult()
+{}
+
+void ListCallDetailRecordsResult::parse(const std::string &payload)
+{
+	Json::Reader reader;
+	Json::Value value;
+	reader.parse(payload, value);
+	setRequestId(value["RequestId"].asString());
+	auto dataNode = value["Data"];
+	if(!dataNode["PageNumber"].isNull())
+		data_.pageNumber = std::stoi(dataNode["PageNumber"].asString());
+	if(!dataNode["PageSize"].isNull())
+		data_.pageSize = std::stoi(dataNode["PageSize"].asString());
+	if(!dataNode["TotalCount"].isNull())
+		data_.totalCount = std::stoi(dataNode["TotalCount"].asString());
+	auto allListNode = dataNode["List"]["CallDetailRecord"];
+	for (auto dataNodeListCallDetailRecord : allListNode)
+	{
+		Data::CallDetailRecord callDetailRecordObject;
+		if(!dataNodeListCallDetailRecord["AgentIds"].isNull())
+			callDetailRecordObject.agentIds = dataNodeListCallDetailRecord["AgentIds"].asString();
+		if(!dataNodeListCallDetailRecord["AgentNames"].isNull())
+			callDetailRecordObject.agentNames = dataNodeListCallDetailRecord["AgentNames"].asString();
+		if(!dataNodeListCallDetailRecord["CallDuration"].isNull())
+			callDetailRecordObject.callDuration = dataNodeListCallDetailRecord["CallDuration"].asString();
+		if(!dataNodeListCallDetailRecord["CalledNumber"].isNull())
+			callDetailRecordObject.calledNumber = dataNodeListCallDetailRecord["CalledNumber"].asString();
+		if(!dataNodeListCallDetailRecord["CallingNumber"].isNull())
+			callDetailRecordObject.callingNumber = dataNodeListCallDetailRecord["CallingNumber"].asString();
+		if(!dataNodeListCallDetailRecord["ContactDisposition"].isNull())
+			callDetailRecordObject.contactDisposition = dataNodeListCallDetailRecord["ContactDisposition"].asString();
+		if(!dataNodeListCallDetailRecord["ContactId"].isNull())
+			callDetailRecordObject.contactId = dataNodeListCallDetailRecord["ContactId"].asString();
+		if(!dataNodeListCallDetailRecord["ContactType"].isNull())
+			callDetailRecordObject.contactType = dataNodeListCallDetailRecord["ContactType"].asString();
+		if(!dataNodeListCallDetailRecord["EstablishedTime"].isNull())
+			callDetailRecordObject.establishedTime = std::stol(dataNodeListCallDetailRecord["EstablishedTime"].asString());
+		if(!dataNodeListCallDetailRecord["InstanceId"].isNull())
+			callDetailRecordObject.instanceId = dataNodeListCallDetailRecord["InstanceId"].asString();
+		if(!dataNodeListCallDetailRecord["SkillGroupIds"].isNull())
+			callDetailRecordObject.skillGroupIds = dataNodeListCallDetailRecord["SkillGroupIds"].asString();
+		if(!dataNodeListCallDetailRecord["SkillGroupNames"].isNull())
+			callDetailRecordObject.skillGroupNames = dataNodeListCallDetailRecord["SkillGroupNames"].asString();
+		if(!dataNodeListCallDetailRecord["StartTime"].isNull())
+			callDetailRecordObject.startTime = std::stol(dataNodeListCallDetailRecord["StartTime"].asString());
+		data_.list.push_back(callDetailRecordObject);
+	}
+	if(!value["Code"].isNull())
+		code_ = value["Code"].asString();
+	if(!value["HttpStatusCode"].isNull())
+		httpStatusCode_ = std::stoi(value["HttpStatusCode"].asString());
+	if(!value["Message"].isNull())
+		message_ = value["Message"].asString();
+
+}
+
+std::string ListCallDetailRecordsResult::getMessage()const
+{
+	return message_;
+}
+
+int ListCallDetailRecordsResult::getHttpStatusCode()const
+{
+	return httpStatusCode_;
+}
+
+ListCallDetailRecordsResult::Data ListCallDetailRecordsResult::getData()const
+{
+	return data_;
+}
+
+std::string ListCallDetailRecordsResult::getCode()const
+{
+	return code_;
+}
+

+ 95 - 0
ccc/src/model/ListHistoricalAgentReportRequest.cc

@@ -0,0 +1,95 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <alibabacloud/ccc/model/ListHistoricalAgentReportRequest.h>
+
+using AlibabaCloud::CCC::Model::ListHistoricalAgentReportRequest;
+
+ListHistoricalAgentReportRequest::ListHistoricalAgentReportRequest() :
+	RpcServiceRequest("ccc", "2020-07-01", "ListHistoricalAgentReport")
+{
+	setMethod(HttpRequest::Method::Post);
+}
+
+ListHistoricalAgentReportRequest::~ListHistoricalAgentReportRequest()
+{}
+
+long ListHistoricalAgentReportRequest::getStartTime()const
+{
+	return startTime_;
+}
+
+void ListHistoricalAgentReportRequest::setStartTime(long startTime)
+{
+	startTime_ = startTime;
+	setParameter("StartTime", std::to_string(startTime));
+}
+
+long ListHistoricalAgentReportRequest::getStopTime()const
+{
+	return stopTime_;
+}
+
+void ListHistoricalAgentReportRequest::setStopTime(long stopTime)
+{
+	stopTime_ = stopTime;
+	setParameter("StopTime", std::to_string(stopTime));
+}
+
+int ListHistoricalAgentReportRequest::getPageNumber()const
+{
+	return pageNumber_;
+}
+
+void ListHistoricalAgentReportRequest::setPageNumber(int pageNumber)
+{
+	pageNumber_ = pageNumber;
+	setParameter("PageNumber", std::to_string(pageNumber));
+}
+
+std::string ListHistoricalAgentReportRequest::getInstanceId()const
+{
+	return instanceId_;
+}
+
+void ListHistoricalAgentReportRequest::setInstanceId(const std::string& instanceId)
+{
+	instanceId_ = instanceId;
+	setParameter("InstanceId", instanceId);
+}
+
+std::string ListHistoricalAgentReportRequest::getAgentIdList()const
+{
+	return agentIdList_;
+}
+
+void ListHistoricalAgentReportRequest::setAgentIdList(const std::string& agentIdList)
+{
+	agentIdList_ = agentIdList;
+	setBodyParameter("AgentIdList", agentIdList);
+}
+
+int ListHistoricalAgentReportRequest::getPageSize()const
+{
+	return pageSize_;
+}
+
+void ListHistoricalAgentReportRequest::setPageSize(int pageSize)
+{
+	pageSize_ = pageSize;
+	setParameter("PageSize", std::to_string(pageSize));
+}
+

+ 200 - 0
ccc/src/model/ListHistoricalAgentReportResult.cc

@@ -0,0 +1,200 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <alibabacloud/ccc/model/ListHistoricalAgentReportResult.h>
+#include <json/json.h>
+
+using namespace AlibabaCloud::CCC;
+using namespace AlibabaCloud::CCC::Model;
+
+ListHistoricalAgentReportResult::ListHistoricalAgentReportResult() :
+	ServiceResult()
+{}
+
+ListHistoricalAgentReportResult::ListHistoricalAgentReportResult(const std::string &payload) :
+	ServiceResult()
+{
+	parse(payload);
+}
+
+ListHistoricalAgentReportResult::~ListHistoricalAgentReportResult()
+{}
+
+void ListHistoricalAgentReportResult::parse(const std::string &payload)
+{
+	Json::Reader reader;
+	Json::Value value;
+	reader.parse(payload, value);
+	setRequestId(value["RequestId"].asString());
+	auto dataNode = value["Data"];
+	if(!dataNode["PageNumber"].isNull())
+		data_.pageNumber = std::stoi(dataNode["PageNumber"].asString());
+	if(!dataNode["PageSize"].isNull())
+		data_.pageSize = std::stoi(dataNode["PageSize"].asString());
+	if(!dataNode["TotalCount"].isNull())
+		data_.totalCount = std::stoi(dataNode["TotalCount"].asString());
+	auto allListNode = dataNode["List"]["Items"];
+	for (auto dataNodeListItems : allListNode)
+	{
+		Data::Items itemsObject;
+		if(!dataNodeListItems["AgentId"].isNull())
+			itemsObject.agentId = dataNodeListItems["AgentId"].asString();
+		if(!dataNodeListItems["AgentName"].isNull())
+			itemsObject.agentName = dataNodeListItems["AgentName"].asString();
+		auto inboundNode = value["Inbound"];
+		if(!inboundNode["AverageRingTime"].isNull())
+			itemsObject.inbound.averageRingTime = std::stof(inboundNode["AverageRingTime"].asString());
+		if(!inboundNode["AverageTalkTime"].isNull())
+			itemsObject.inbound.averageTalkTime = std::stof(inboundNode["AverageTalkTime"].asString());
+		if(!inboundNode["AverageWorkTime"].isNull())
+			itemsObject.inbound.averageWorkTime = std::stof(inboundNode["AverageWorkTime"].asString());
+		if(!inboundNode["CallsConsulted"].isNull())
+			itemsObject.inbound.callsConsulted = std::stol(inboundNode["CallsConsulted"].asString());
+		if(!inboundNode["CallsHandled"].isNull())
+			itemsObject.inbound.callsHandled = std::stol(inboundNode["CallsHandled"].asString());
+		if(!inboundNode["CallsHold"].isNull())
+			itemsObject.inbound.callsHold = std::stol(inboundNode["CallsHold"].asString());
+		if(!inboundNode["CallsOffered"].isNull())
+			itemsObject.inbound.callsOffered = std::stol(inboundNode["CallsOffered"].asString());
+		if(!inboundNode["CallsTransfered"].isNull())
+			itemsObject.inbound.callsTransfered = std::stol(inboundNode["CallsTransfered"].asString());
+		if(!inboundNode["HandleRate"].isNull())
+			itemsObject.inbound.handleRate = std::stof(inboundNode["HandleRate"].asString());
+		if(!inboundNode["MaxRingTime"].isNull())
+			itemsObject.inbound.maxRingTime = std::stol(inboundNode["MaxRingTime"].asString());
+		if(!inboundNode["MaxTalkTime"].isNull())
+			itemsObject.inbound.maxTalkTime = std::stol(inboundNode["MaxTalkTime"].asString());
+		if(!inboundNode["MaxWorkTime"].isNull())
+			itemsObject.inbound.maxWorkTime = std::stol(inboundNode["MaxWorkTime"].asString());
+		if(!inboundNode["SatisfactionIndex"].isNull())
+			itemsObject.inbound.satisfactionIndex = std::stof(inboundNode["SatisfactionIndex"].asString());
+		if(!inboundNode["SatisfactionSurveysOffered"].isNull())
+			itemsObject.inbound.satisfactionSurveysOffered = std::stol(inboundNode["SatisfactionSurveysOffered"].asString());
+		if(!inboundNode["SatisfactionSurveysResponded"].isNull())
+			itemsObject.inbound.satisfactionSurveysResponded = std::stol(inboundNode["SatisfactionSurveysResponded"].asString());
+		if(!inboundNode["ServiceLevel20"].isNull())
+			itemsObject.inbound.serviceLevel20 = std::stol(inboundNode["ServiceLevel20"].asString());
+		if(!inboundNode["TotalHoldTime"].isNull())
+			itemsObject.inbound.totalHoldTime = std::stol(inboundNode["TotalHoldTime"].asString());
+		if(!inboundNode["TotalRingTime"].isNull())
+			itemsObject.inbound.totalRingTime = std::stol(inboundNode["TotalRingTime"].asString());
+		if(!inboundNode["TotalTalkTime"].isNull())
+			itemsObject.inbound.totalTalkTime = std::stol(inboundNode["TotalTalkTime"].asString());
+		if(!inboundNode["TotalWorkTime"].isNull())
+			itemsObject.inbound.totalWorkTime = std::stol(inboundNode["TotalWorkTime"].asString());
+		auto outboundNode = value["Outbound"];
+		if(!outboundNode["AnswerRate"].isNull())
+			itemsObject.outbound.answerRate = std::stof(outboundNode["AnswerRate"].asString());
+		if(!outboundNode["AverageDialingTime"].isNull())
+			itemsObject.outbound.averageDialingTime = std::stof(outboundNode["AverageDialingTime"].asString());
+		if(!outboundNode["AverageTalkTime"].isNull())
+			itemsObject.outbound.averageTalkTime = std::stof(outboundNode["AverageTalkTime"].asString());
+		if(!outboundNode["AverageWorkTime"].isNull())
+			itemsObject.outbound.averageWorkTime = std::stol(outboundNode["AverageWorkTime"].asString());
+		if(!outboundNode["CallsAnswered"].isNull())
+			itemsObject.outbound.callsAnswered = std::stol(outboundNode["CallsAnswered"].asString());
+		if(!outboundNode["CallsDialed"].isNull())
+			itemsObject.outbound.callsDialed = std::stol(outboundNode["CallsDialed"].asString());
+		if(!outboundNode["MaxDialingTime"].isNull())
+			itemsObject.outbound.maxDialingTime = std::stol(outboundNode["MaxDialingTime"].asString());
+		if(!outboundNode["MaxTalkTime"].isNull())
+			itemsObject.outbound.maxTalkTime = std::stol(outboundNode["MaxTalkTime"].asString());
+		if(!outboundNode["MaxWorkTime"].isNull())
+			itemsObject.outbound.maxWorkTime = std::stol(outboundNode["MaxWorkTime"].asString());
+		if(!outboundNode["SatisfactionIndex"].isNull())
+			itemsObject.outbound.satisfactionIndex = std::stof(outboundNode["SatisfactionIndex"].asString());
+		if(!outboundNode["SatisfactionSurveysOffered"].isNull())
+			itemsObject.outbound.satisfactionSurveysOffered = std::stol(outboundNode["SatisfactionSurveysOffered"].asString());
+		if(!outboundNode["SatisfactionSurveysResponded"].isNull())
+			itemsObject.outbound.satisfactionSurveysResponded = std::stol(outboundNode["SatisfactionSurveysResponded"].asString());
+		if(!outboundNode["TotalDialingTime"].isNull())
+			itemsObject.outbound.totalDialingTime = std::stol(outboundNode["TotalDialingTime"].asString());
+		if(!outboundNode["TotalHoldTime"].isNull())
+			itemsObject.outbound.totalHoldTime = std::stol(outboundNode["TotalHoldTime"].asString());
+		if(!outboundNode["TotalTalkTime"].isNull())
+			itemsObject.outbound.totalTalkTime = std::stol(outboundNode["TotalTalkTime"].asString());
+		if(!outboundNode["TotalWorkTime"].isNull())
+			itemsObject.outbound.totalWorkTime = std::stol(outboundNode["TotalWorkTime"].asString());
+		auto overallNode = value["Overall"];
+		if(!overallNode["AverageBreakTime"].isNull())
+			itemsObject.overall.averageBreakTime = std::stof(overallNode["AverageBreakTime"].asString());
+		if(!overallNode["AverageReadyTime"].isNull())
+			itemsObject.overall.averageReadyTime = std::stof(overallNode["AverageReadyTime"].asString());
+		if(!overallNode["AverageTalkTime"].isNull())
+			itemsObject.overall.averageTalkTime = std::stof(overallNode["AverageTalkTime"].asString());
+		if(!overallNode["AverageWorkTime"].isNull())
+			itemsObject.overall.averageWorkTime = std::stof(overallNode["AverageWorkTime"].asString());
+		if(!overallNode["MaxBreakTime"].isNull())
+			itemsObject.overall.maxBreakTime = std::stol(overallNode["MaxBreakTime"].asString());
+		if(!overallNode["MaxReadyTime"].isNull())
+			itemsObject.overall.maxReadyTime = std::stol(overallNode["MaxReadyTime"].asString());
+		if(!overallNode["MaxTalkTime"].isNull())
+			itemsObject.overall.maxTalkTime = std::stol(overallNode["MaxTalkTime"].asString());
+		if(!overallNode["MaxWorkTime"].isNull())
+			itemsObject.overall.maxWorkTime = std::stol(overallNode["MaxWorkTime"].asString());
+		if(!overallNode["OccupancyRate"].isNull())
+			itemsObject.overall.occupancyRate = std::stof(overallNode["OccupancyRate"].asString());
+		if(!overallNode["SatisfactionIndex"].isNull())
+			itemsObject.overall.satisfactionIndex = std::stof(overallNode["SatisfactionIndex"].asString());
+		if(!overallNode["SatisfactionSurveysOffered"].isNull())
+			itemsObject.overall.satisfactionSurveysOffered = std::stol(overallNode["SatisfactionSurveysOffered"].asString());
+		if(!overallNode["SatisfactionSurveysResponded"].isNull())
+			itemsObject.overall.satisfactionSurveysResponded = std::stol(overallNode["SatisfactionSurveysResponded"].asString());
+		if(!overallNode["TotalBreakTime"].isNull())
+			itemsObject.overall.totalBreakTime = std::stol(overallNode["TotalBreakTime"].asString());
+		if(!overallNode["TotalCalls"].isNull())
+			itemsObject.overall.totalCalls = std::stol(overallNode["TotalCalls"].asString());
+		if(!overallNode["TotalHoldTime"].isNull())
+			itemsObject.overall.totalHoldTime = std::stol(overallNode["TotalHoldTime"].asString());
+		if(!overallNode["TotalLoggedInTime"].isNull())
+			itemsObject.overall.totalLoggedInTime = std::stol(overallNode["TotalLoggedInTime"].asString());
+		if(!overallNode["TotalReadyTime"].isNull())
+			itemsObject.overall.totalReadyTime = std::stol(overallNode["TotalReadyTime"].asString());
+		if(!overallNode["TotalTalkTime"].isNull())
+			itemsObject.overall.totalTalkTime = std::stol(overallNode["TotalTalkTime"].asString());
+		if(!overallNode["TotalWorkTime"].isNull())
+			itemsObject.overall.totalWorkTime = std::stol(overallNode["TotalWorkTime"].asString());
+		data_.list.push_back(itemsObject);
+	}
+	if(!value["Code"].isNull())
+		code_ = value["Code"].asString();
+	if(!value["HttpStatusCode"].isNull())
+		httpStatusCode_ = std::stoi(value["HttpStatusCode"].asString());
+	if(!value["Message"].isNull())
+		message_ = value["Message"].asString();
+
+}
+
+std::string ListHistoricalAgentReportResult::getMessage()const
+{
+	return message_;
+}
+
+int ListHistoricalAgentReportResult::getHttpStatusCode()const
+{
+	return httpStatusCode_;
+}
+
+ListHistoricalAgentReportResult::Data ListHistoricalAgentReportResult::getData()const
+{
+	return data_;
+}
+
+std::string ListHistoricalAgentReportResult::getCode()const
+{
+	return code_;
+}
+

+ 106 - 0
ccc/src/model/ListRealtimeAgentStatesRequest.cc

@@ -0,0 +1,106 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <alibabacloud/ccc/model/ListRealtimeAgentStatesRequest.h>
+
+using AlibabaCloud::CCC::Model::ListRealtimeAgentStatesRequest;
+
+ListRealtimeAgentStatesRequest::ListRealtimeAgentStatesRequest() :
+	RpcServiceRequest("ccc", "2020-07-01", "ListRealtimeAgentStates")
+{
+	setMethod(HttpRequest::Method::Post);
+}
+
+ListRealtimeAgentStatesRequest::~ListRealtimeAgentStatesRequest()
+{}
+
+int ListRealtimeAgentStatesRequest::getPageNumber()const
+{
+	return pageNumber_;
+}
+
+void ListRealtimeAgentStatesRequest::setPageNumber(int pageNumber)
+{
+	pageNumber_ = pageNumber;
+	setParameter("PageNumber", std::to_string(pageNumber));
+}
+
+std::string ListRealtimeAgentStatesRequest::getInstanceId()const
+{
+	return instanceId_;
+}
+
+void ListRealtimeAgentStatesRequest::setInstanceId(const std::string& instanceId)
+{
+	instanceId_ = instanceId;
+	setParameter("InstanceId", instanceId);
+}
+
+std::string ListRealtimeAgentStatesRequest::getAgentIdList()const
+{
+	return agentIdList_;
+}
+
+void ListRealtimeAgentStatesRequest::setAgentIdList(const std::string& agentIdList)
+{
+	agentIdList_ = agentIdList;
+	setBodyParameter("AgentIdList", agentIdList);
+}
+
+std::string ListRealtimeAgentStatesRequest::getSkillGroupId()const
+{
+	return skillGroupId_;
+}
+
+void ListRealtimeAgentStatesRequest::setSkillGroupId(const std::string& skillGroupId)
+{
+	skillGroupId_ = skillGroupId;
+	setParameter("SkillGroupId", skillGroupId);
+}
+
+std::string ListRealtimeAgentStatesRequest::getAgentName()const
+{
+	return agentName_;
+}
+
+void ListRealtimeAgentStatesRequest::setAgentName(const std::string& agentName)
+{
+	agentName_ = agentName;
+	setParameter("AgentName", agentName);
+}
+
+int ListRealtimeAgentStatesRequest::getPageSize()const
+{
+	return pageSize_;
+}
+
+void ListRealtimeAgentStatesRequest::setPageSize(int pageSize)
+{
+	pageSize_ = pageSize;
+	setParameter("PageSize", std::to_string(pageSize));
+}
+
+std::string ListRealtimeAgentStatesRequest::getStateList()const
+{
+	return stateList_;
+}
+
+void ListRealtimeAgentStatesRequest::setStateList(const std::string& stateList)
+{
+	stateList_ = stateList;
+	setBodyParameter("StateList", stateList);
+}
+

+ 102 - 0
ccc/src/model/ListRealtimeAgentStatesResult.cc

@@ -0,0 +1,102 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <alibabacloud/ccc/model/ListRealtimeAgentStatesResult.h>
+#include <json/json.h>
+
+using namespace AlibabaCloud::CCC;
+using namespace AlibabaCloud::CCC::Model;
+
+ListRealtimeAgentStatesResult::ListRealtimeAgentStatesResult() :
+	ServiceResult()
+{}
+
+ListRealtimeAgentStatesResult::ListRealtimeAgentStatesResult(const std::string &payload) :
+	ServiceResult()
+{
+	parse(payload);
+}
+
+ListRealtimeAgentStatesResult::~ListRealtimeAgentStatesResult()
+{}
+
+void ListRealtimeAgentStatesResult::parse(const std::string &payload)
+{
+	Json::Reader reader;
+	Json::Value value;
+	reader.parse(payload, value);
+	setRequestId(value["RequestId"].asString());
+	auto dataNode = value["Data"];
+	if(!dataNode["PageNumber"].isNull())
+		data_.pageNumber = std::stoi(dataNode["PageNumber"].asString());
+	if(!dataNode["PageSize"].isNull())
+		data_.pageSize = std::stoi(dataNode["PageSize"].asString());
+	if(!dataNode["TotalCount"].isNull())
+		data_.totalCount = std::stoi(dataNode["TotalCount"].asString());
+	auto allListNode = dataNode["List"]["AgentState"];
+	for (auto dataNodeListAgentState : allListNode)
+	{
+		Data::AgentState agentStateObject;
+		if(!dataNodeListAgentState["AgentId"].isNull())
+			agentStateObject.agentId = dataNodeListAgentState["AgentId"].asString();
+		if(!dataNodeListAgentState["AgentName"].isNull())
+			agentStateObject.agentName = dataNodeListAgentState["AgentName"].asString();
+		if(!dataNodeListAgentState["CounterParty"].isNull())
+			agentStateObject.counterParty = dataNodeListAgentState["CounterParty"].asString();
+		if(!dataNodeListAgentState["Extension"].isNull())
+			agentStateObject.extension = dataNodeListAgentState["Extension"].asString();
+		if(!dataNodeListAgentState["InstanceId"].isNull())
+			agentStateObject.instanceId = dataNodeListAgentState["InstanceId"].asString();
+		if(!dataNodeListAgentState["State"].isNull())
+			agentStateObject.state = dataNodeListAgentState["State"].asString();
+		if(!dataNodeListAgentState["StateCode"].isNull())
+			agentStateObject.stateCode = dataNodeListAgentState["StateCode"].asString();
+		if(!dataNodeListAgentState["StateTime"].isNull())
+			agentStateObject.stateTime = std::stol(dataNodeListAgentState["StateTime"].asString());
+		auto allSkillGroupIdList = value["SkillGroupIdList"]["SkillGroupId"];
+		for (auto value : allSkillGroupIdList)
+			agentStateObject.skillGroupIdList.push_back(value.asString());
+		data_.list.push_back(agentStateObject);
+	}
+	if(!value["Code"].isNull())
+		code_ = value["Code"].asString();
+	if(!value["HttpStatusCode"].isNull())
+		httpStatusCode_ = std::stoi(value["HttpStatusCode"].asString());
+	if(!value["Message"].isNull())
+		message_ = value["Message"].asString();
+
+}
+
+std::string ListRealtimeAgentStatesResult::getMessage()const
+{
+	return message_;
+}
+
+int ListRealtimeAgentStatesResult::getHttpStatusCode()const
+{
+	return httpStatusCode_;
+}
+
+ListRealtimeAgentStatesResult::Data ListRealtimeAgentStatesResult::getData()const
+{
+	return data_;
+}
+
+std::string ListRealtimeAgentStatesResult::getCode()const
+{
+	return code_;
+}
+

+ 84 - 0
ccc/src/model/ListRecentCallDetailRecordsRequest.cc

@@ -0,0 +1,84 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <alibabacloud/ccc/model/ListRecentCallDetailRecordsRequest.h>
+
+using AlibabaCloud::CCC::Model::ListRecentCallDetailRecordsRequest;
+
+ListRecentCallDetailRecordsRequest::ListRecentCallDetailRecordsRequest() :
+	RpcServiceRequest("ccc", "2020-07-01", "ListRecentCallDetailRecords")
+{
+	setMethod(HttpRequest::Method::Post);
+}
+
+ListRecentCallDetailRecordsRequest::~ListRecentCallDetailRecordsRequest()
+{}
+
+long ListRecentCallDetailRecordsRequest::getEndTime()const
+{
+	return endTime_;
+}
+
+void ListRecentCallDetailRecordsRequest::setEndTime(long endTime)
+{
+	endTime_ = endTime;
+	setParameter("EndTime", std::to_string(endTime));
+}
+
+long ListRecentCallDetailRecordsRequest::getStartTime()const
+{
+	return startTime_;
+}
+
+void ListRecentCallDetailRecordsRequest::setStartTime(long startTime)
+{
+	startTime_ = startTime;
+	setBodyParameter("StartTime", std::to_string(startTime));
+}
+
+int ListRecentCallDetailRecordsRequest::getPageNumber()const
+{
+	return pageNumber_;
+}
+
+void ListRecentCallDetailRecordsRequest::setPageNumber(int pageNumber)
+{
+	pageNumber_ = pageNumber;
+	setParameter("PageNumber", std::to_string(pageNumber));
+}
+
+std::string ListRecentCallDetailRecordsRequest::getInstanceId()const
+{
+	return instanceId_;
+}
+
+void ListRecentCallDetailRecordsRequest::setInstanceId(const std::string& instanceId)
+{
+	instanceId_ = instanceId;
+	setParameter("InstanceId", instanceId);
+}
+
+int ListRecentCallDetailRecordsRequest::getPageSize()const
+{
+	return pageSize_;
+}
+
+void ListRecentCallDetailRecordsRequest::setPageSize(int pageSize)
+{
+	pageSize_ = pageSize;
+	setParameter("PageSize", std::to_string(pageSize));
+}
+

+ 105 - 0
ccc/src/model/ListRecentCallDetailRecordsResult.cc

@@ -0,0 +1,105 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <alibabacloud/ccc/model/ListRecentCallDetailRecordsResult.h>
+#include <json/json.h>
+
+using namespace AlibabaCloud::CCC;
+using namespace AlibabaCloud::CCC::Model;
+
+ListRecentCallDetailRecordsResult::ListRecentCallDetailRecordsResult() :
+	ServiceResult()
+{}
+
+ListRecentCallDetailRecordsResult::ListRecentCallDetailRecordsResult(const std::string &payload) :
+	ServiceResult()
+{
+	parse(payload);
+}
+
+ListRecentCallDetailRecordsResult::~ListRecentCallDetailRecordsResult()
+{}
+
+void ListRecentCallDetailRecordsResult::parse(const std::string &payload)
+{
+	Json::Reader reader;
+	Json::Value value;
+	reader.parse(payload, value);
+	setRequestId(value["RequestId"].asString());
+	auto dataNode = value["Data"];
+	if(!dataNode["PageNumber"].isNull())
+		data_.pageNumber = std::stoi(dataNode["PageNumber"].asString());
+	if(!dataNode["PageSize"].isNull())
+		data_.pageSize = std::stoi(dataNode["PageSize"].asString());
+	if(!dataNode["TotalCount"].isNull())
+		data_.totalCount = std::stoi(dataNode["TotalCount"].asString());
+	auto allListNode = dataNode["List"]["CallDetailRecord"];
+	for (auto dataNodeListCallDetailRecord : allListNode)
+	{
+		Data::CallDetailRecord callDetailRecordObject;
+		if(!dataNodeListCallDetailRecord["AgentIds"].isNull())
+			callDetailRecordObject.agentIds = dataNodeListCallDetailRecord["AgentIds"].asString();
+		if(!dataNodeListCallDetailRecord["CallDuration"].isNull())
+			callDetailRecordObject.callDuration = dataNodeListCallDetailRecord["CallDuration"].asString();
+		if(!dataNodeListCallDetailRecord["CalledNumber"].isNull())
+			callDetailRecordObject.calledNumber = dataNodeListCallDetailRecord["CalledNumber"].asString();
+		if(!dataNodeListCallDetailRecord["CallingNumber"].isNull())
+			callDetailRecordObject.callingNumber = dataNodeListCallDetailRecord["CallingNumber"].asString();
+		if(!dataNodeListCallDetailRecord["ContactDisposition"].isNull())
+			callDetailRecordObject.contactDisposition = dataNodeListCallDetailRecord["ContactDisposition"].asString();
+		if(!dataNodeListCallDetailRecord["ContactId"].isNull())
+			callDetailRecordObject.contactId = dataNodeListCallDetailRecord["ContactId"].asString();
+		if(!dataNodeListCallDetailRecord["ContactType"].isNull())
+			callDetailRecordObject.contactType = dataNodeListCallDetailRecord["ContactType"].asString();
+		if(!dataNodeListCallDetailRecord["Duration"].isNull())
+			callDetailRecordObject.duration = std::stol(dataNodeListCallDetailRecord["Duration"].asString());
+		if(!dataNodeListCallDetailRecord["InstanceId"].isNull())
+			callDetailRecordObject.instanceId = dataNodeListCallDetailRecord["InstanceId"].asString();
+		if(!dataNodeListCallDetailRecord["SkillGroupIds"].isNull())
+			callDetailRecordObject.skillGroupIds = dataNodeListCallDetailRecord["SkillGroupIds"].asString();
+		if(!dataNodeListCallDetailRecord["StartTime"].isNull())
+			callDetailRecordObject.startTime = std::stol(dataNodeListCallDetailRecord["StartTime"].asString());
+		data_.list.push_back(callDetailRecordObject);
+	}
+	if(!value["Code"].isNull())
+		code_ = value["Code"].asString();
+	if(!value["HttpStatusCode"].isNull())
+		httpStatusCode_ = std::stoi(value["HttpStatusCode"].asString());
+	if(!value["Message"].isNull())
+		message_ = value["Message"].asString();
+
+}
+
+std::string ListRecentCallDetailRecordsResult::getMessage()const
+{
+	return message_;
+}
+
+int ListRecentCallDetailRecordsResult::getHttpStatusCode()const
+{
+	return httpStatusCode_;
+}
+
+ListRecentCallDetailRecordsResult::Data ListRecentCallDetailRecordsResult::getData()const
+{
+	return data_;
+}
+
+std::string ListRecentCallDetailRecordsResult::getCode()const
+{
+	return code_;
+}
+

+ 62 - 0
ccc/src/model/SignOutGroupRequest.cc

@@ -0,0 +1,62 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <alibabacloud/ccc/model/SignOutGroupRequest.h>
+
+using AlibabaCloud::CCC::Model::SignOutGroupRequest;
+
+SignOutGroupRequest::SignOutGroupRequest() :
+	RpcServiceRequest("ccc", "2020-07-01", "SignOutGroup")
+{
+	setMethod(HttpRequest::Method::Post);
+}
+
+SignOutGroupRequest::~SignOutGroupRequest()
+{}
+
+std::string SignOutGroupRequest::getUserId()const
+{
+	return userId_;
+}
+
+void SignOutGroupRequest::setUserId(const std::string& userId)
+{
+	userId_ = userId;
+	setParameter("UserId", userId);
+}
+
+std::string SignOutGroupRequest::getDeviceId()const
+{
+	return deviceId_;
+}
+
+void SignOutGroupRequest::setDeviceId(const std::string& deviceId)
+{
+	deviceId_ = deviceId;
+	setParameter("DeviceId", deviceId);
+}
+
+std::string SignOutGroupRequest::getInstanceId()const
+{
+	return instanceId_;
+}
+
+void SignOutGroupRequest::setInstanceId(const std::string& instanceId)
+{
+	instanceId_ = instanceId;
+	setParameter("InstanceId", instanceId);
+}
+

+ 106 - 0
ccc/src/model/SignOutGroupResult.cc

@@ -0,0 +1,106 @@
+/*
+ * Copyright 2009-2017 Alibaba Cloud All rights reserved.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <alibabacloud/ccc/model/SignOutGroupResult.h>
+#include <json/json.h>
+
+using namespace AlibabaCloud::CCC;
+using namespace AlibabaCloud::CCC::Model;
+
+SignOutGroupResult::SignOutGroupResult() :
+	ServiceResult()
+{}
+
+SignOutGroupResult::SignOutGroupResult(const std::string &payload) :
+	ServiceResult()
+{
+	parse(payload);
+}
+
+SignOutGroupResult::~SignOutGroupResult()
+{}
+
+void SignOutGroupResult::parse(const std::string &payload)
+{
+	Json::Reader reader;
+	Json::Value value;
+	reader.parse(payload, value);
+	setRequestId(value["RequestId"].asString());
+	auto dataNode = value["Data"];
+	if(!dataNode["BreakCode"].isNull())
+		data_.breakCode = dataNode["BreakCode"].asString();
+	if(!dataNode["DeviceId"].isNull())
+		data_.deviceId = dataNode["DeviceId"].asString();
+	if(!dataNode["Extension"].isNull())
+		data_.extension = dataNode["Extension"].asString();
+	if(!dataNode["Heartbeat"].isNull())
+		data_.heartbeat = std::stol(dataNode["Heartbeat"].asString());
+	if(!dataNode["InstanceId"].isNull())
+		data_.instanceId = dataNode["InstanceId"].asString();
+	if(!dataNode["JobId"].isNull())
+		data_.jobId = dataNode["JobId"].asString();
+	if(!dataNode["Mobile"].isNull())
+		data_.mobile = dataNode["Mobile"].asString();
+	if(!dataNode["OutboundScenario"].isNull())
+		data_.outboundScenario = dataNode["OutboundScenario"].asString() == "true";
+	if(!dataNode["Reserved"].isNull())
+		data_.reserved = std::stol(dataNode["Reserved"].asString());
+	if(!dataNode["UserId"].isNull())
+		data_.userId = dataNode["UserId"].asString();
+	if(!dataNode["UserState"].isNull())
+		data_.userState = dataNode["UserState"].asString();
+	if(!dataNode["WorkMode"].isNull())
+		data_.workMode = dataNode["WorkMode"].asString();
+		auto allSignedSkillGroupIdList = dataNode["SignedSkillGroupIdList"]["SkillGroupId"];
+		for (auto value : allSignedSkillGroupIdList)
+			data_.signedSkillGroupIdList.push_back(value.asString());
+	auto allParams = value["Params"]["Param"];
+	for (const auto &item : allParams)
+		params_.push_back(item.asString());
+	if(!value["Code"].isNull())
+		code_ = value["Code"].asString();
+	if(!value["HttpStatusCode"].isNull())
+		httpStatusCode_ = std::stoi(value["HttpStatusCode"].asString());
+	if(!value["Message"].isNull())
+		message_ = value["Message"].asString();
+
+}
+
+std::string SignOutGroupResult::getMessage()const
+{
+	return message_;
+}
+
+int SignOutGroupResult::getHttpStatusCode()const
+{
+	return httpStatusCode_;
+}
+
+std::vector<std::string> SignOutGroupResult::getParams()const
+{
+	return params_;
+}
+
+SignOutGroupResult::Data SignOutGroupResult::getData()const
+{
+	return data_;
+}
+
+std::string SignOutGroupResult::getCode()const
+{
+	return code_;
+}
+