InterceptCallResult.cc 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. /*
  2. * Copyright 2009-2017 Alibaba Cloud All rights reserved.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #include <alibabacloud/ccc/model/InterceptCallResult.h>
  17. #include <json/json.h>
  18. using namespace AlibabaCloud::CCC;
  19. using namespace AlibabaCloud::CCC::Model;
  20. InterceptCallResult::InterceptCallResult() :
  21. ServiceResult()
  22. {}
  23. InterceptCallResult::InterceptCallResult(const std::string &payload) :
  24. ServiceResult()
  25. {
  26. parse(payload);
  27. }
  28. InterceptCallResult::~InterceptCallResult()
  29. {}
  30. void InterceptCallResult::parse(const std::string &payload)
  31. {
  32. Json::Reader reader;
  33. Json::Value value;
  34. reader.parse(payload, value);
  35. setRequestId(value["RequestId"].asString());
  36. auto dataNode = value["Data"];
  37. auto callContextNode = dataNode["CallContext"];
  38. if(!callContextNode["CallType"].isNull())
  39. data_.callContext.callType = callContextNode["CallType"].asString();
  40. if(!callContextNode["InstanceId"].isNull())
  41. data_.callContext.instanceId = callContextNode["InstanceId"].asString();
  42. if(!callContextNode["JobId"].isNull())
  43. data_.callContext.jobId = callContextNode["JobId"].asString();
  44. auto allChannelContextsNode = callContextNode["ChannelContexts"]["ChannelContext"];
  45. for (auto callContextNodeChannelContextsChannelContext : allChannelContextsNode)
  46. {
  47. Data::CallContext::ChannelContext channelContextObject;
  48. if(!callContextNodeChannelContextsChannelContext["AssociatedData"].isNull())
  49. channelContextObject.associatedData = callContextNodeChannelContextsChannelContext["AssociatedData"].asString();
  50. if(!callContextNodeChannelContextsChannelContext["CallType"].isNull())
  51. channelContextObject.callType = callContextNodeChannelContextsChannelContext["CallType"].asString();
  52. if(!callContextNodeChannelContextsChannelContext["ChannelFlags"].isNull())
  53. channelContextObject.channelFlags = callContextNodeChannelContextsChannelContext["ChannelFlags"].asString();
  54. if(!callContextNodeChannelContextsChannelContext["ChannelId"].isNull())
  55. channelContextObject.channelId = callContextNodeChannelContextsChannelContext["ChannelId"].asString();
  56. if(!callContextNodeChannelContextsChannelContext["ChannelState"].isNull())
  57. channelContextObject.channelState = callContextNodeChannelContextsChannelContext["ChannelState"].asString();
  58. if(!callContextNodeChannelContextsChannelContext["Destination"].isNull())
  59. channelContextObject.destination = callContextNodeChannelContextsChannelContext["Destination"].asString();
  60. if(!callContextNodeChannelContextsChannelContext["Index"].isNull())
  61. channelContextObject.index = std::stoi(callContextNodeChannelContextsChannelContext["Index"].asString());
  62. if(!callContextNodeChannelContextsChannelContext["JobId"].isNull())
  63. channelContextObject.jobId = callContextNodeChannelContextsChannelContext["JobId"].asString();
  64. if(!callContextNodeChannelContextsChannelContext["Originator"].isNull())
  65. channelContextObject.originator = callContextNodeChannelContextsChannelContext["Originator"].asString();
  66. if(!callContextNodeChannelContextsChannelContext["ReleaseInitiator"].isNull())
  67. channelContextObject.releaseInitiator = callContextNodeChannelContextsChannelContext["ReleaseInitiator"].asString();
  68. if(!callContextNodeChannelContextsChannelContext["ReleaseReason"].isNull())
  69. channelContextObject.releaseReason = callContextNodeChannelContextsChannelContext["ReleaseReason"].asString();
  70. if(!callContextNodeChannelContextsChannelContext["SkillGroupId"].isNull())
  71. channelContextObject.skillGroupId = callContextNodeChannelContextsChannelContext["SkillGroupId"].asString();
  72. if(!callContextNodeChannelContextsChannelContext["Timestamp"].isNull())
  73. channelContextObject.timestamp = std::stol(callContextNodeChannelContextsChannelContext["Timestamp"].asString());
  74. if(!callContextNodeChannelContextsChannelContext["UserExtension"].isNull())
  75. channelContextObject.userExtension = callContextNodeChannelContextsChannelContext["UserExtension"].asString();
  76. if(!callContextNodeChannelContextsChannelContext["UserId"].isNull())
  77. channelContextObject.userId = callContextNodeChannelContextsChannelContext["UserId"].asString();
  78. data_.callContext.channelContexts.push_back(channelContextObject);
  79. }
  80. auto userContextNode = dataNode["UserContext"];
  81. if(!userContextNode["BreakCode"].isNull())
  82. data_.userContext.breakCode = userContextNode["BreakCode"].asString();
  83. if(!userContextNode["DeviceId"].isNull())
  84. data_.userContext.deviceId = userContextNode["DeviceId"].asString();
  85. if(!userContextNode["Extension"].isNull())
  86. data_.userContext.extension = userContextNode["Extension"].asString();
  87. if(!userContextNode["Heartbeat"].isNull())
  88. data_.userContext.heartbeat = std::stol(userContextNode["Heartbeat"].asString());
  89. if(!userContextNode["InstanceId"].isNull())
  90. data_.userContext.instanceId = userContextNode["InstanceId"].asString();
  91. if(!userContextNode["JobId"].isNull())
  92. data_.userContext.jobId = userContextNode["JobId"].asString();
  93. if(!userContextNode["Mobile"].isNull())
  94. data_.userContext.mobile = userContextNode["Mobile"].asString();
  95. if(!userContextNode["OutboundScenario"].isNull())
  96. data_.userContext.outboundScenario = userContextNode["OutboundScenario"].asString() == "true";
  97. if(!userContextNode["Reserved"].isNull())
  98. data_.userContext.reserved = std::stol(userContextNode["Reserved"].asString());
  99. if(!userContextNode["UserId"].isNull())
  100. data_.userContext.userId = userContextNode["UserId"].asString();
  101. if(!userContextNode["UserState"].isNull())
  102. data_.userContext.userState = userContextNode["UserState"].asString();
  103. if(!userContextNode["WorkMode"].isNull())
  104. data_.userContext.workMode = userContextNode["WorkMode"].asString();
  105. auto allSignedSkillGroupIdList = userContextNode["SignedSkillGroupIdList"]["SkillGroupId"];
  106. for (auto value : allSignedSkillGroupIdList)
  107. data_.userContext.signedSkillGroupIdList.push_back(value.asString());
  108. auto allParams = value["Params"]["Param"];
  109. for (const auto &item : allParams)
  110. params_.push_back(item.asString());
  111. if(!value["Code"].isNull())
  112. code_ = value["Code"].asString();
  113. if(!value["HttpStatusCode"].isNull())
  114. httpStatusCode_ = std::stoi(value["HttpStatusCode"].asString());
  115. if(!value["Message"].isNull())
  116. message_ = value["Message"].asString();
  117. }
  118. std::string InterceptCallResult::getMessage()const
  119. {
  120. return message_;
  121. }
  122. int InterceptCallResult::getHttpStatusCode()const
  123. {
  124. return httpStatusCode_;
  125. }
  126. std::vector<std::string> InterceptCallResult::getParams()const
  127. {
  128. return params_;
  129. }
  130. InterceptCallResult::Data InterceptCallResult::getData()const
  131. {
  132. return data_;
  133. }
  134. std::string InterceptCallResult::getCode()const
  135. {
  136. return code_;
  137. }