FastComments.com

FastComments C++ SDK

这是 FastComments 的官方 C++ SDK。

用于 FastComments API 的官方 C++ SDK

仓库

在 GitHub 上查看


要求 Internal Link


  • C++17 或更高版本
  • CMake 3.14 或更高版本
  • OpenSSL
  • C++ REST SDK (cpprestsdk)
  • Boost
  • Google Test (在测试时自动下载)

安装 Internal Link

安装依赖

sudo apt install libcpprest-dev libboost-all-dev

从源码构建

mkdir build
cd build
cmake ..
make

安装

sudo make install

库内容

此库包含生成的 API 客户端和 SSO 实用工具,以简化 API 的使用。

公共 API 与受保护 API

对于 API 客户端,有三个类,DefaultApiPublicApiModerationApiDefaultApi 包含需要您的 API 密钥的方法,PublicApi 包含可以直接从浏览器、移动设备等发起且无需身份验证的方法。ModerationApi 提供了一套完整且快速的实时审核 API。每个 ModerationApi 方法都接受 sso 参数,并且可以通过 SSO 或 FastComments.com 会话 Cookie 进行身份验证。

注意事项 Internal Link

广播 ID

你会看到在某些 API 调用中需要传递一个 broadcastId。当你收到事件时,你会收到这个 ID 作为返回,因此如果你打算在客户端乐观地应用更改,就可以忽略该事件 (你可能会希望这么做,因为它能提供最佳体验)。在此处传入一个 UUID。这个 ID 应该足够唯一,以确保在一次浏览器会话中不会出现两次。

SSO (单点登录)

有关 SSO 的示例,请参见下文。

SSO 使用 Internal Link

简单的 SSO

#include <fastcomments/sso/fastcomments_sso.hpp>
#include <iostream>

using namespace fastcomments::sso;

int main() {
    SimpleSSOUserData user("user-123", "user@example.com", "https://example.com/avatar.jpg");
    FastCommentsSSO sso = FastCommentsSSO::newSimple(user);
    std::string token = sso.createToken();

    std::cout << "SSO Token: " << token << std::endl;
    return 0;
}

安全的 SSO

#include <fastcomments/sso/fastcomments_sso.hpp>
#include <iostream>

using namespace fastcomments::sso;

int main() {
    SecureSSOUserData user("user-123", "user@example.com", "johndoe", "https://example.com/avatar.jpg");

    std::string apiKey = "your-api-key";
    FastCommentsSSO sso = FastCommentsSSO::newSecure(apiKey, user);
    std::string token = sso.createToken();

    std::cout << "Secure SSO Token: " << token << std::endl;
    return 0;
}

聚合 Internal Link


聚合文档,通过(如果提供了 groupBy)进行分组并应用多种操作。支持不同的操作(例如 sum、countDistinct、avg 等)。

参数

名称类型必需描述
tenantIdstringYes
aggregationRequestAggregationRequestYes
optionsconst AggregateOptions&Yes

响应

返回:AggregateResponse

示例

聚合 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3
4AggregationRequest aggregationRequest;
5aggregationRequest.setMetric(U("commentCount"));
6aggregationRequest.setStartDate(U("2023-01-01T00:00:00Z"));
7aggregationRequest.setEndDate(U("2023-12-31T23:59:59Z"));
8aggregationRequest.setFilters({ U("status:approved") });
9
10AggregateOptions options;
11options.limit = boost::optional<int>(100);
12options.includeMetadata = boost::optional<bool>(true);
13
14api->aggregate(tenantId, aggregationRequest, options)
15 .then([](pplx::task<std::shared_ptr<AggregateResponse>> task) {
16 try {
17 auto response = task.get();
18 // process response
19 } catch (const std::exception& e) {
20 // handle error
21 }
22 });
23

获取审计日志 Internal Link

参数

名称类型必填描述
tenantIdstring
optionsconst GetAuditLogsOptions&

响应

返回: GetAuditLogsResponse

示例

getAuditLogs 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3
4GetAuditLogsOptions options;
5options.startDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-01T00:00:00Z"), utility::datetime::RFC_1123));
6options.endDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-31T23:59:59Z"), utility::datetime::RFC_1123));
7options.limit = boost::optional<int>(100);
8
9api->getAuditLogs(tenantId, options).then([](pplx::task<std::shared_ptr<GetAuditLogsResponse>> t) {
10 try {
11 auto response = t.get();
12 // 使用响应
13 } catch (const std::exception& e) {
14 // 处理错误
15 }
16});
17

公开登出 Internal Link

响应

返回: APIEmptyResponse

示例

logoutPublic 示例
Copy Copy
1
2api->logoutPublic()
3 .then([](std::shared_ptr<APIEmptyResponse> /*resp*/) {
4 std::cout << "Logout successful\n";
5 })
6 .then([](pplx::task<void> t) {
7 try {
8 t.get();
9 } catch (const std::exception& e) {
10 std::cerr << "Logout failed: " << e.what() << std::endl;
11 }
12 });
13

从评论屏蔽(公开) Internal Link

参数

名称类型必填描述
tenantIdstringYes
commentIdstringYes
publicBlockFromCommentParamsPublicBlockFromCommentParamsYes
ssostringNo

响应

返回:BlockSuccess

示例

blockFromCommentPublic 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-987654");
4PublicBlockFromCommentParams blockParams;
5blockParams.reason = utility::conversions::to_string_t("spam");
6blockParams.durationHours = 24;
7boost::optional<utility::string_t> sso = utility::conversions::to_string_t("sso-token-abc123");
8api->blockFromCommentPublic(tenantId, commentId, blockParams, sso)
9 .then([](std::shared_ptr<BlockSuccess> result){
10 auto successCopy = std::make_shared<BlockSuccess>(*result);
11 });
12

取消屏蔽评论(公开) Internal Link

参数

名称类型必填描述
tenantIdstringYes
commentIdstringYes
publicBlockFromCommentParamsPublicBlockFromCommentParamsYes
ssostringNo

响应

返回:UnblockSuccess

示例

unBlockCommentPublic 示例
Copy Copy
1
2auto blockParams = PublicBlockFromCommentParams();
3blockParams.reason = U("spam");
4api->unBlockCommentPublic(
5 U("my-tenant-123"),
6 U("comment-789"),
7 blockParams,
8 boost::optional<utility::string_t>(U("sso-token-abc"))
9).then([](std::shared_ptr<UnblockSuccess> result){ });
10

检查被屏蔽的评论 Internal Link

参数

名称类型必填描述
tenantIdstringYes
commentIdsstringYes
ssostringNo

响应

返回:CheckBlockedCommentsResponse

示例

checkedCommentsForBlocked 示例
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto commentIds = U("cmt-001,cmt-002");
4boost::optional<utility::string_t> sso = U("user@example.com");
5
6api->checkedCommentsForBlocked(tenantId, commentIds, sso).then([](std::shared_ptr<CheckBlockedCommentsResponse> resp){
7 (void)resp;
8});
9

从评论屏蔽用户 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes
blockFromCommentParamsBlockFromCommentParamsYes
optionsconst BlockUserFromCommentOptions&Yes

响应

返回: BlockSuccess

示例

blockUserFromComment 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-789");
4BlockFromCommentParams params;
5params.reason = utility::conversions::to_string_t("Inappropriate content");
6params.durationDays = boost::optional<int>(30);
7BlockUserFromCommentOptions options;
8options.notifyUser = boost::optional<bool>(true);
9
10api->blockUserFromComment(tenantId, commentId, params, options)
11 .then([](std::shared_ptr<BlockSuccess> result){ })
12 .then([](pplx::task<void> t){ try { t.get(); } catch (const std::exception&) { } });
13

创建评论(公开) Internal Link

参数

名称类型必填描述
tenantIdstring
urlIdstring
broadcastIdstring
commentDataCommentData
optionsconst CreateCommentPublicOptions&

响应

返回:SaveCommentsResponseWithPresence

示例

createCommentPublic 示例
Copy Copy
1
2auto comment = CommentData();
3comment.body = U("This is a test comment");
4comment.authorName = U("John Doe");
5comment.authorEmail = U("john.doe@example.com");
6
7CreateCommentPublicOptions opts;
8opts.replyToCommentId = boost::optional<utility::string_t>(U("parent-123"));
9
10api->createCommentPublic(
11 U("my-tenant-123"),
12 U("article-456"),
13 U("broadcast-789"),
14 comment,
15 opts).then([](std::shared_ptr<SaveCommentsResponseWithPresence> res){
16 auto commentId = res->commentId;
17 });
18

删除评论 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
optionsconst DeleteCommentOptions&

响应

返回:DeleteCommentResult

示例

deleteComment 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-789");
4DeleteCommentOptions options;
5options.reason = boost::optional<utility::string_t>(utility::conversions::to_string_t("Inappropriate content"));
6options.force = boost::optional<bool>(true);
7api->deleteComment(tenantId, commentId, options).then([](pplx::task<std::shared_ptr<DeleteCommentResult>> task){
8 try{
9 auto result = task.get();
10 }catch(const std::exception&){
11 }
12});
13

删除评论(公开) Internal Link

参数

名称类型必填说明
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
optionsconst DeleteCommentPublicOptions&Yes

响应

返回: PublicAPIDeleteCommentResponse

示例

deleteCommentPublic 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto commentId = utility::string_t(U("comment-456"));
4auto broadcastId = utility::string_t(U("broadcast-789"));
5DeleteCommentPublicOptions options;
6options.force = boost::optional<bool>(true);
7options.reason = boost::optional<utility::string_t>(U("Inappropriate content"));
8api->deleteCommentPublic(tenantId, commentId, broadcastId, options)
9 .then([](pplx::task<std::shared_ptr<PublicAPIDeleteCommentResponse>> t){
10 try{
11 auto resp = t.get();
12 }catch(const std::exception& e){
13 }
14 });
15

删除评论投票 Internal Link

参数

名称类型必需描述
tenantIdstringYes
commentIdstringYes
voteIdstringYes
urlIdstringYes
broadcastIdstringYes
optionsconst DeleteCommentVoteOptions&Yes

响应

返回:VoteDeleteResponse

示例

deleteCommentVote 示例
Copy Copy
1
2auto options = DeleteCommentVoteOptions{};
3options.reason = boost::optional<utility::string_t>(U("spam"));
4options.adminOverride = boost::optional<bool>(true);
5
6api->deleteCommentVote(
7 U("my-tenant-123"),
8 U("cmt-456789"),
9 U("vote-987"),
10 U("url-abc123"),
11 U("broadcast-001"),
12 options
13).then([](std::shared_ptr<VoteDeleteResponse> resp){
14 if (resp) {
15 std::cout << "Deleted vote, code: " << resp->code << std::endl;
16 }
17});
18

标记评论 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring
optionsconst FlagCommentOptions&

响应

返回:FlagCommentResponse

示例

flagComment 示例
Copy Copy
1
2auto opts = std::make_shared<FlagCommentOptions>();
3opts->reason = utility::conversions::to_string_t("spam");
4opts->note = boost::optional<utility::string_t>(utility::conversions::to_string_t("User posted duplicate links"));
5
6api->flagComment(utility::conversions::to_string_t("my-tenant-123"),
7 utility::conversions::to_string_t("comment-456"),
8 *opts)
9 .then([](pplx::task<std::shared_ptr<FlagCommentResponse>> t) {
10 auto resp = t.get();
11 });
12

获取评论 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes

响应

返回:APIGetCommentResponse

示例

getComment 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-456");
4boost::optional<int> maxDepth = boost::none;
5api->getComment(tenantId, commentId).then([](pplx::task<std::shared_ptr<APIGetCommentResponse>> t){
6 try{
7 auto resp = t.get();
8 }catch(const std::exception&){
9 }
10});
11

获取评论列表 Internal Link

参数

名称类型必填描述
tenantIdstringYes
optionsconst GetCommentsOptions&Yes

响应

返回: APIGetCommentsResponse

示例

getComments 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetCommentsOptions options;
4options.page = 1;
5options.limit = 50;
6options.sort = U("newest");
7options.authorEmail = boost::optional<utility::string_t>(U("user@example.com"));
8api->getComments(tenantId, options).then([](pplx::task<std::shared_ptr<APIGetCommentsResponse>> task) {
9 try {
10 auto response = task.get();
11 // 按需要使用响应
12 } catch (const std::exception& e) {
13 // 处理错误
14 }
15});
16

获取公开评论 Internal Link


req tenantId urlId

参数

名称类型必填描述
tenantIdstring
urlIdstring
optionsconst GetCommentsPublicOptions&

响应

返回:GetCommentsResponseWithPresence_PublicComment_

示例

getCommentsPublic 示例
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto urlId = U("article-456");
4GetCommentsPublicOptions opts;
5opts.pageSize = 20;
6opts.includeDeleted = false;
7api->getCommentsPublic(tenantId, urlId, opts).then([](std::shared_ptr<GetCommentsResponseWithPresence_PublicComment_> resp) {
8 (void)resp;
9});
10

获取评论文本 Internal Link

参数

名称类型必填描述
tenantIdstringYes
commentIdstringYes
optionsconst GetCommentTextOptions&Yes

响应

返回:PublicAPIGetCommentTextResponse

示例

getCommentText 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-456789");
4auto options = std::make_shared<GetCommentTextOptions>();
5options->language = boost::optional<utility::string_t>(U("en"));
6options->includeDeleted = boost::optional<bool>(false);
7api->getCommentText(tenantId, commentId, *options).then([](pplx::task<std::shared_ptr<PublicAPIGetCommentTextResponse>> task){
8 try{
9 auto response = task.get();
10 (void)response;
11 }catch(...){}
12});
13

获取评论投票用户名 Internal Link

参数

名称类型必需描述
tenantIdstring
commentIdstring
dirint32_t
ssostring

响应

返回: GetCommentVoteUserNamesSuccessResponse

示例

getCommentVoteUserNames 示例
Copy Copy
1
2auto task = api->getCommentVoteUserNames(
3 utility::conversions::to_string_t("my-tenant-123"),
4 utility::conversions::to_string_t("comment-456"),
5 static_cast<int32_t>(1),
6 boost::optional<utility::string_t>(utility::conversions::to_string_t("sso-token"))
7).then([](pplx::task<std::shared_ptr<GetCommentVoteUserNamesSuccessResponse>> t){
8 try{
9 auto response = t.get();
10 }catch(const std::exception&){ }
11});
12

锁定评论 Internal Link


参数

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

响应

返回: APIEmptyResponse

示例

lockComment 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-987");
4auto broadcastId = utility::conversions::to_string_t("broadcast-654");
5boost::optional<utility::string_t> sso = utility::conversions::to_string_t("sso-token-xyz");
6
7api->lockComment(tenantId, commentId, broadcastId, sso).then([](pplx::task<std::shared_ptr<APIEmptyResponse>> task){
8 try{
9 auto response = task.get();
10 }catch(const std::exception&){
11 }
12});
13

置顶评论 Internal Link

参数

名称类型必填描述
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

响应

返回:ChangeCommentPinStatusResponse

示例

pinComment 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("comment-456");
4utility::string_t broadcastId = U("broadcast-789");
5boost::optional<utility::string_t> sso = U("sso-token-abc");
6
7api->pinComment(tenantId, commentId, broadcastId, sss)
8 .then([](pplx::task<std::shared_ptr<ChangeCommentPinStatusResponse>> task) {
9 try {
10 auto response = task.get();
11 } catch (const std::exception&) {
12 }
13 });
14

保存评论 Internal Link

参数

名称类型必填描述
tenantIdstring
createCommentParamsCreateCommentParams
optionsconst SaveCommentOptions&

响应

返回: APISaveCommentResponse

示例

saveComment 示例
Copy Copy
1
2CreateCommentParams commentParams;
3commentParams.body = utility::string_t(U("Great article!"));
4commentParams.author = utility::string_t(U("jane.doe@example.com"));
5commentParams.parentId = boost::optional<utility::string_t>(utility::string_t(U("parent-789")));
6
7SaveCommentOptions options;
8options.preview = boost::optional<bool>(false);
9
10api->saveComment(utility::string_t(U("my-tenant-123")), commentParams, options)
11 .then([](std::shared_ptr<APISaveCommentResponse> response) {
12 auto commentId = response->commentId;
13 });
14

设置评论文本 Internal Link

参数

名称类型必填描述
tenantIdstring
commentIdstring
broadcastIdstring
commentTextUpdateRequestCommentTextUpdateRequest
optionsconst SetCommentTextOptions&

响应

返回:PublicAPISetCommentTextResponse

示例

setCommentText 示例
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto commentId = U("cmt-456");
4auto broadcastId = U("brd-789");
5
6CommentTextUpdateRequest updateReq;
7updateReq.text = U("Updated comment content");
8updateReq.isEdited = boost::make_optional(true);
9
10SetCommentTextOptions opts;
11opts.notifySubscribers = boost::make_optional(true);
12
13api->setCommentText(tenantId, commentId, broadcastId, updateReq, opts)
14 .then([](std::shared_ptr<PublicAPISetCommentTextResponse> resp) {
15 });
16

取消从评论屏蔽用户 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes
unBlockFromCommentParamsUnBlockFromCommentParamsYes
optionsconst UnBlockUserFromCommentOptions&Yes

响应

返回:UnblockSuccess

示例

unBlockUserFromComment 示例
Copy Copy
1
2auto params = std::make_shared<UnBlockFromCommentParams>();
3params->commentId = U("cmt-12345");
4params->reason = U("resolved");
5UnBlockUserFromCommentOptions opts;
6opts.notifyUser = boost::optional<bool>(true);
7api->unBlockUserFromComment(U("my-tenant-123"), U("user-456"), *params, opts)
8 .then([](pplx::task<std::shared_ptr<UnblockSuccess>> t){
9 try{
10 auto result = t.get();
11 }catch(...){}
12 });
13

取消标记评论 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
optionsconst UnFlagCommentOptions&

响应

返回: FlagCommentResponse

示例

unFlagComment 示例
Copy Copy
1
2auto options = UnFlagCommentOptions{};
3options.reason = boost::optional<utility::string_t>(U("Resolved by moderator"));
4api->unFlagComment(U("my-tenant-123"), U("comment-456"), options)
5 .then([](std::shared_ptr<FlagCommentResponse> response) {
6 if (response) {
7 auto status = response->status;
8 // 如有需要,处理状态
9 }
10 })
11 .then([](pplx::task<void> previous) {
12 try {
13 previous.get();
14 } catch (const std::exception& e) {
15 // 处理错误
16 }
17 });
18

解锁评论 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

响应

Returns: APIEmptyResponse

示例

unLockComment 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("cmt-456789");
4auto broadcastId = utility::conversions::to_string_t("broadcast-001");
5boost::optional<utility::string_t> sso = utility::conversions::to_string_t("john.doe@example.com");
6
7api->unLockComment(tenantId, commentId, broadcastId, sso).then([](pplx::task<std::shared_ptr<APIEmptyResponse>> task) {
8 try {
9 auto response = task.get();
10 } catch (const std::exception&) {
11 }
12});
13

取消置顶评论 Internal Link

参数

名称类型必需描述
tenantIdstringYes
commentIdstringYes
broadcastIdstringYes
ssostringNo

响应

返回:ChangeCommentPinStatusResponse

示例

unPinComment 示例
Copy Copy
1
2auto task = api->unPinComment(
3 utility::conversions::to_string_t("my-tenant-123"),
4 utility::conversions::to_string_t("cmt-456789"),
5 utility::conversions::to_string_t("broadcast-001"),
6 boost::optional<utility::string_t>(utility::conversions::to_string_t("user@example.com"))
7);
8task.then([](std::shared_ptr<ChangeCommentPinStatusResponse> resp){
9 auto result = std::make_shared<ChangeCommentPinStatusResponse>(*resp);
10});
11

更新评论 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
updatableCommentParamsUpdatableCommentParams
optionsconst UpdateCommentOptions&

响应

返回: APIEmptyResponse

示例

updateComment 示例
Copy Copy
1
2auto tenantId = utility::string_t("my-tenant-123");
3auto commentId = utility::string_t("cmt-789");
4UpdatableCommentParams updatable;
5updatable.body = utility::string_t("Edited comment content");
6updatable.isSpam = boost::optional<bool>(false);
7UpdateCommentOptions options;
8options.notify = boost::optional<bool>(true);
9api->updateComment(tenantId, commentId, updatable, options)
10 .then([](std::shared_ptr<APIEmptyResponse>) {})
11 .then([](pplx::task<void> t) { try { t.get(); } catch(const std::exception&) {} });
12

评论投票 Internal Link

参数

名称类型必填描述
tenantIdstringYes
commentIdstringYes
urlIdstringYes
broadcastIdstringYes
voteBodyParamsVoteBodyParamsYes
optionsconst VoteCommentOptions&Yes

响应

返回:VoteResponse

示例

voteComment 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-7890");
4auto urlId = utility::conversions::to_string_t("article-456");
5auto broadcastId = utility::conversions::to_string_t("broadcast-321");
6
7VoteBodyParams voteParams;
8voteParams.upvote = true;
9voteParams.note = boost::optional<utility::string_t>(utility::conversions::to_string_t("Great insight"));
10
11VoteCommentOptions options;
12options.dryRun = boost::optional<bool>(false);
13
14api->voteComment(tenantId, commentId, urlId, broadcastId, voteParams, options)
15 .then([](pplx::task<std::shared_ptr<VoteResponse>> t) {
16 try {
17 auto response = t.get();
18 // 处理响应
19 } catch (const std::exception&) {
20 }
21 });
22

获取用户的评论 Internal Link

参数

名称类型必填描述
optionsconst GetCommentsForUserOptions&

响应

返回: GetCommentsForUserResponse

示例

getCommentsForUser 示例
Copy Copy
1
2auto options = GetCommentsForUserOptions{
3 utility::conversions::to_string_t("my-tenant-123"),
4 utility::conversions::to_string_t("user@example.com"),
5 boost::optional<int>(50),
6 boost::optional<utility::string_t>(utility::conversions::to_string_t("next-page-token"))
7};
8
9api->getCommentsForUser(options).then([](pplx::task<std::shared_ptr<GetCommentsForUserResponse>> task){
10 try{
11 auto response = task.get();
12 }catch(const std::exception&){}
13});
14

添加域配置 Internal Link

参数

名称类型必需描述
tenantIdstring
addDomainConfigParamsAddDomainConfigParams

响应

返回:AddDomainConfigResponse

示例

addDomainConfig 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3AddDomainConfigParams params;
4params.domain = U("example.com");
5params.adminEmail = U("admin@example.com");
6params.notes = boost::optional<utility::string_t>(U("Primary domain"));
7api->addDomainConfig(tenantId, params).then([](pplx::task<std::shared_ptr<AddDomainConfigResponse>> task){
8 try{
9 auto response = task.get();
10 }catch(const std::exception&){
11 }
12});
13

删除域配置 Internal Link

参数

名称类型必需描述
tenantIdstringYes
domainstringYes

响应

返回: DeleteDomainConfigResponse

示例

deleteDomainConfig 示例
Copy Copy
1
2boost::optional<utility::string_t> optTenant = U("my-tenant-123");
3boost::optional<utility::string_t> optDomain = U("example.com");
4
5api->deleteDomainConfig(optTenant.value(), optDomain.value())
6 .then([](pplx::task<std::shared_ptr<DeleteDomainConfigResponse>> task) {
7 try {
8 auto response = task.get();
9 } catch (const std::exception&) {
10 }
11 });
12

获取域配置 Internal Link

参数

名称类型必需描述
tenantIdstring
domainstring

响应

返回: GetDomainConfigResponse

示例

getDomainConfig 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t domain = U("myblog.example.com");
4
5api->getDomainConfig(tenantId, domain)
6 .then([](std::shared_ptr<GetDomainConfigResponse> response) {
7 if (!response) return;
8 boost::optional<bool> moderationEnabled = response->moderationEnabled;
9 boost::optional<std::string> theme = response->theme;
10 if (moderationEnabled && *moderationEnabled) {
11 // 处理已启用的审核
12 }
13 if (theme) {
14 // 使用主题值
15 }
16 })
17 .wait();
18

获取域配置列表 Internal Link

参数

名称类型必需描述
tenantIdstring

响应

返回:GetDomainConfigsResponse

示例

getDomainConfigs 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> optionalTenant = tenantId;
4api->getDomainConfigs(optionalTenant.value())
5 .then([](std::shared_ptr<GetDomainConfigsResponse> response) {
6 auto domains = response->getDomainList();
7 for (const auto& d : domains) {
8 std::cout << d << std::endl;
9 }
10 });
11

部分更新域配置 Internal Link

参数

名称类型必需描述
tenantIdstringYes
domainToUpdatestringYes
patchDomainConfigParamsPatchDomainConfigParamsYes

响应

返回:PatchDomainConfigResponse

示例

patchDomainConfig 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto domainToUpdate = utility::conversions::to_string_t("example.com");
4PatchDomainConfigParams patchDomainConfigParams;
5patchDomainConfigParams.enableComments = boost::optional<bool>(true);
6patchDomainConfigParams.moderationLevel = boost::optional<int>(2);
7patchDomainConfigParams.customHeader = boost::optional<utility::string_t>(utility::conversions::to_string_t("X-Custom-Header"));
8
9api->patchDomainConfig(tenantId, domainToUpdate, patchDomainConfigParams)
10 .then([](std::shared_ptr<PatchDomainConfigResponse> resp) {
11 // 成功处理
12 })
13 .then([](pplx::task<void> t) {
14 try { t.get(); } catch (const std::exception& e) { /* 错误处理 */ }
15 });
16

替换域配置 Internal Link

参数

名称类型必填描述
tenantIdstringYes
domainToUpdatestringYes
updateDomainConfigParamsUpdateDomainConfigParamsYes

响应

返回:PutDomainConfigResponse

示例

putDomainConfig 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t domainToUpdate = U("example.com");
4UpdateDomainConfigParams updateParams;
5updateParams.enableComments = true;
6updateParams.moderationLevel = boost::optional<int>(2);
7updateParams.customCss = boost::optional<utility::string_t>(U(".fc-comment{color:red;}"));
8api->putDomainConfig(tenantId, domainToUpdate, updateParams)
9 .then([](std::shared_ptr<PutDomainConfigResponse> resp) {
10 });
11

创建邮件模板 Internal Link

参数

名称类型必需描述
tenantIdstring
createEmailTemplateBodyCreateEmailTemplateBody

响应

返回: CreateEmailTemplateResponse

示例

createEmailTemplate 示例
Copy Copy
1
2auto body = std::make_shared<CreateEmailTemplateBody>();
3body->subject = utility::string_t("Welcome Email");
4body->htmlContent = utility::string_t("<h1>Welcome!</h1><p>Thanks for joining.</p>");
5body->fromEmail = utility::string_t("no-reply@myapp.com");
6body->replyTo = boost::optional<utility::string_t>(utility::string_t("support@myapp.com"));
7body->cc = boost::none;
8api->createEmailTemplate(utility::string_t("my-tenant-123"), *body)
9 .then([](std::shared_ptr<CreateEmailTemplateResponse> resp) {
10 std::cout << "Created template ID: " << resp->id << std::endl;
11 });
12

删除邮件模板 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回:APIEmptyResponse

示例

deleteEmailTemplate 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto templateId = utility::conversions::to_string_t("welcome-email-template");
4boost::optional<utility::string_t> optTenantId = tenantId;
5boost::optional<utility::string_t> optTemplateId = templateId;
6api->deleteEmailTemplate(optTenantId.value(), optTemplateId.value())
7 .then([](pplx::task<std::shared_ptr<APIEmptyResponse>> t) {
8 try { t.get(); }
9 catch (const std::exception&) {}
10 });
11

删除邮件模板渲染错误 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
errorIdstring

响应

返回: APIEmptyResponse

示例

deleteEmailTemplateRenderError 示例
Copy Copy
1
2boost::optional<utility::string_t> optTemplateId = utility::conversions::to_string_t("template-456");
3api->deleteEmailTemplateRenderError(
4 utility::conversions::to_string_t("my-tenant-123"),
5 *optTemplateId,
6 utility::conversions::to_string_t("error-789"))
7 .then([](std::shared_ptr<APIEmptyResponse>) {})
8 .then([](pplx::task<void> t) {
9 try { t.get(); } catch (...) {}
10 });
11

获取邮件模板 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回:GetEmailTemplateResponse

示例

getEmailTemplate 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto templateId = utility::conversions::to_string_t("welcome-email");
4boost::optional<utility::string_t> language = utility::conversions::to_string_t("en-US");
5
6api->getEmailTemplate(tenantId, templateId)
7 .then([=](pplx::task<std::shared_ptr<GetEmailTemplateResponse>> task) {
8 try {
9 auto response = task.get();
10 } catch (const std::exception&) {
11 }
12 });
13

获取邮件模板定义 Internal Link

参数

名称类型必需描述
tenantIdstringYes

响应

返回:GetEmailTemplateDefinitionsResponse

示例

getEmailTemplateDefinitions 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3api->getEmailTemplateDefinitions(tenantId).then([](pplx::task<std::shared_ptr<GetEmailTemplateDefinitionsResponse>> t) {
4 try {
5 auto resp = t.get();
6 boost::optional<utility::string_t> tmplName = resp ? resp->templateName : boost::none;
7 if (tmplName) {
8 std::cout << *tmplName << std::endl;
9 }
10 } catch (const std::exception& e) {
11 std::cerr << e.what() << std::endl;
12 }
13});
14

获取邮件模板渲染错误 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes
skipdoubleNo

响应

返回:GetEmailTemplateRenderErrorsResponse

示例

getEmailTemplateRenderErrors 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t id = U("email-template-789");
4boost::optional<double> skip = 20.0;
5
6api->getEmailTemplateRenderErrors(tenantId, id, skip)
7 .then([](pplx::task<std::shared_ptr<GetEmailTemplateRenderErrorsResponse>> task) {
8 try {
9 auto response = task.get();
10 // 根据需要使用响应
11 } catch (const std::exception& ex) {
12 // 处理错误
13 }
14 });
15

获取邮件模板列表 Internal Link

参数

名称类型必填描述
tenantIdstring
skipdouble

响应

返回: GetEmailTemplatesResponse

示例

getEmailTemplates 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3boost::optional<double> skip = 10.0;
4api->getEmailTemplates(tenantId, skip)
5 .then([](std::shared_ptr<GetEmailTemplatesResponse> resp) {
6 (void)resp;
7 });
8

渲染邮件模板 Internal Link

参数

名称类型必需描述
tenantIdstring
renderEmailTemplateBodyRenderEmailTemplateBody
localestring

响应

返回:RenderEmailTemplateResponse

示例

renderEmailTemplate 示例
Copy Copy
1
2auto body = RenderEmailTemplateBody();
3body.templateId = U("welcome-email");
4body.recipientEmail = U("user@example.com");
5boost::optional<utility::string_t> locale = U("en-US");
6
7api->renderEmailTemplate(U("my-tenant-123"), body, locale)
8 .then([](std::shared_ptr<RenderEmailTemplateResponse> resp) {
9 std::cout << "Email template rendered successfully\n";
10 });
11

更新邮件模板 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes
updateEmailTemplateBodyUpdateEmailTemplateBodyYes

响应

返回: APIEmptyResponse

示例

updateEmailTemplate 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t templateId = U("welcome-email");
4UpdateEmailTemplateBody body;
5body.subject = U("Welcome to Our Platform");
6body.content = U("<p>Hello \{{userName}}, welcome aboard!</p>");
7body.isActive = boost::optional<bool>(true);
8api->updateEmailTemplate(tenantId, templateId, body)
9 .then([](std::shared_ptr<APIEmptyResponse> response) {
10 // 成功处理
11 })
12 .then([](pplx::task<void> t) {
13 try { t.get(); } catch (const std::exception &) { /* 错误处理 */ }
14 });
15

获取事件日志 Internal Link

req tenantId urlId userIdWS

参数

名称类型必需描述
tenantIdstring
urlIdstring
userIdWSstring
startTimeint64_t
endTimeint64_t

响应

返回:GetEventLogResponse

示例

getEventLog 示例
Copy Copy
1
2auto startTime = int64_t(1622505600);
3boost::optional<int64_t> endTime = int64_t(1622592000);
4api->getEventLog(U("my-tenant-123"), U("article-456"), U("user@example.com"), startTime, endTime)
5 .then([](std::shared_ptr<GetEventLogResponse> response){
6 auto copy = std::make_shared<GetEventLogResponse>(*response);
7 (void)copy;
8 });
9

获取全局事件日志 Internal Link

req tenantId urlId userIdWS

参数

名称类型必需描述
tenantIdstring
urlIdstring
userIdWSstring
startTimeint64_t
endTimeint64_t

响应

返回:GetEventLogResponse

示例

getGlobalEventLog 示例
Copy Copy
1
2api->getGlobalEventLog(
3 U("my-tenant-123"),
4 U("article-456"),
5 U("user@example.com"),
6 1622505600,
7 boost::optional<int64_t>(1625097600)
8).then([](std::shared_ptr<GetEventLogResponse> resp) {
9 (void)resp;
10});
11

创建帖子 Internal Link

参数

名称类型必需描述
tenantIdstring
createFeedPostParamsCreateFeedPostParams
optionsconst CreateFeedPostOptions&

响应

返回:CreateFeedPostsResponse

示例

createFeedPost 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3CreateFeedPostParams postParams;
4postParams.content = utility::conversions::to_string_t("Excited to join FastComments!");
5postParams.authorEmail = utility::conversions::to_string_t("user@example.com");
6postParams.title = utility::conversions::to_string_t("My First Post");
7postParams.tags = boost::optional<std::vector<utility::string_t>>({ utility::conversions::to_string_t("intro") });
8
9CreateFeedPostOptions options;
10options.notifyFollowers = boost::optional<bool>(true);
11options.scheduledAt = boost::optional<utility::datetime>(utility::datetime::utc_now());
12
13api->createFeedPost(tenantId, postParams, options).then([](std::shared_ptr<CreateFeedPostsResponse> resp) {
14 auto postId = resp->postId;
15});
16

创建公开帖子 Internal Link

参数

名称类型必填描述
tenantIdstringYes
createFeedPostParamsCreateFeedPostParamsYes
optionsconst CreateFeedPostPublicOptions&Yes

响应

返回: CreateFeedPostResponse

示例

createFeedPostPublic 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3
4CreateFeedPostParams params;
5params.title = U("Introducing Our New Feature");
6params.content = U("We are excited to announce the release of our latest update.");
7params.authorEmail = boost::optional<utility::string_t>(U("user@example.com"));
8params.tags = boost::optional<std::vector<utility::string_t>>({U("announcement"), U("release")});
9
10CreateFeedPostPublicOptions options;
11
12api->createFeedPostPublic(tenantId, params, options)
13 .then([](std::shared_ptr<CreateFeedPostResponse> resp) {
14 if (resp) {
15 std::wcout << U("Post created with ID: ") << resp->postId << std::endl;
16 }
17 });
18

删除公开帖子 Internal Link

参数

名称类型必填描述
tenantIdstring
postIdstring
optionsconst DeleteFeedPostPublicOptions&

响应

返回: DeleteFeedPostPublicResponse

示例

deleteFeedPostPublic 示例
Copy Copy
1
2auto opts = std::make_shared<DeleteFeedPostPublicOptions>();
3opts->reason = boost::optional<utility::string_t>(U("Inappropriate content"));
4api->deleteFeedPostPublic(U("my-tenant-123"), U("post-789"), *opts)
5 .then([](std::shared_ptr<DeleteFeedPostPublicResponse> resp) {
6 if (resp && resp->isSuccess()) {
7 // 成功逻辑
8 }
9 });
10

获取帖子 Internal Link

请求 tenantId afterId

参数

名称类型必填描述
tenantIdstringYes
optionsconst GetFeedPostsOptions&Yes

响应

返回: GetFeedPostsResponse

示例

getFeedPosts 示例
Copy Copy
1
2auto opts = std::make_shared<GetFeedPostsOptions>();
3opts->maxResults = boost::optional<int>(50);
4opts->cursor = boost::optional<utility::string_t>(U("next-cursor"));
5api->getFeedPosts(U("my-tenant-123"), *opts).then([](std::shared_ptr<GetFeedPostsResponse> resp) {
6 auto count = resp->posts.size();
7});
8

获取公开帖子 Internal Link

req
tenantId
afterId

参数

名称类型必填描述
tenantIdstringYes
optionsconst GetFeedPostsPublicOptions&Yes

响应

返回: PublicFeedPostsResponse

示例

getFeedPostsPublic 示例
Copy Copy
1
2auto options = GetFeedPostsPublicOptions{};
3options.limit = boost::optional<int>{20};
4options.before = boost::optional<utility::string_t>{U("2023-01-01T00:00:00Z")};
5
6api->getFeedPostsPublic(U("my-tenant-123"), options).then([](pplx::task<std::shared_ptr<PublicFeedPostsResponse>> task){
7 try{
8 auto response = task.get();
9 auto processed = std::make_shared<PublicFeedPostsResponse>(*response);
10 // 根据需要使用 processed
11 }catch(const std::exception&){
12 // 处理错误
13 }
14});
15

获取帖子统计 Internal Link

参数

名称类型必填描述
tenantIdstringYes
postIdsvector<stringYes
ssostringNo

响应

返回:FeedPostsStatsResponse

示例

getFeedPostsStats 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3std::vector<utility::string_t> postIds = {
4 utility::conversions::to_string_t("post-001"),
5 utility::conversions::to_string_t("post-002")
6};
7boost::optional<utility::string_t> sso = utility::conversions::to_string_t("user@example.com");
8
9api->getFeedPostsStats(tenantId, postIds, sso)
10 .then([](std::shared_ptr<FeedPostsStatsResponse> response) {
11 (void)response;
12 });
13

获取用户公开反应 Internal Link

参数

名称类型必需描述
tenantIdstring
optionsconst GetUserReactsPublicOptions&

响应

返回: UserReactsResponse

示例

getUserReactsPublic 示例
Copy Copy
1
2auto options = GetUserReactsPublicOptions{};
3options.userId = boost::optional<utility::string_t>(U("user@example.com"));
4options.limit = boost::optional<int>(50);
5api->getUserReactsPublic(U("my-tenant-123"), options).then([](pplx::task<std::shared_ptr<UserReactsResponse>> t){
6 auto response = t.get();
7});
8

公开对帖子做出反应 Internal Link

参数

名称类型必填描述
tenantIdstring
postIdstring
reactBodyParamsReactBodyParams
optionsconst ReactFeedPostPublicOptions&

响应

返回: ReactFeedPostResponse

示例

reactFeedPostPublic 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto postId = utility::conversions::to_string_t("post-987");
4ReactBodyParams reactBody;
5reactBody.reaction = utility::conversions::to_string_t("love");
6reactBody.userId = utility::conversions::to_string_t("user@example.com");
7ReactFeedPostPublicOptions options;
8options.metadata = boost::optional<utility::string_t>(utility::conversions::to_string_t("mobile"));
9api->reactFeedPostPublic(tenantId, postId, reactBody, options)
10 .then([](std::shared_ptr<ReactFeedPostResponse> resp) {
11 });
12

更新帖子 Internal Link

参数

名称类型必需描述
tenantIdstringYes
idstringYes
feedPostFeedPostYes

响应

返回:APIEmptyResponse

示例

updateFeedPost 示例
Copy Copy
1
2utility::string_t tenantId = U"my-tenant-123";
3utility::string_t postId = U"post-456";
4
5FeedPost feedPost;
6feedPost.title = U"Breaking News";
7feedPost.content = U"Details of the update go here.";
8feedPost.imageUrl = boost::optional<utility::string_t>(U"https://example.com/image.jpg");
9
10api->updateFeedPost(tenantId, postId, feedPost)
11 .then([](pplx::task<std::shared_ptr<APIEmptyResponse>> task) {
12 try {
13 auto response = task.get();
14 } catch (const std::exception& ex) {
15 }
16 });
17

公开更新帖子 Internal Link

参数

名称类型必填描述
tenantIdstring
postIdstring
updateFeedPostParamsUpdateFeedPostParams
optionsconst UpdateFeedPostPublicOptions&

响应

返回:CreateFeedPostResponse

示例

updateFeedPostPublic 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t postId = U("post-456");
4UpdateFeedPostParams params;
5params.title = boost::optional<utility::string_t>(U("Updated Title"));
6params.body = boost::optional<utility::string_t>(U("Updated content of the post."));
7UpdateFeedPostPublicOptions options;
8options.notifyFollowers = boost::optional<bool>(true);
9api->updateFeedPostPublic(tenantId, postId, params, options)
10 .then([](std::shared_ptr<CreateFeedPostResponse> resp) {
11 auto result = resp;
12 });
13

公开标记评论 Internal Link

参数

名称类型必需描述
tenantIdstring
commentIdstring
isFlaggedbool
ssostring

响应

返回: APIEmptyResponse

示例

flagCommentPublic 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("cmt-456789");
4bool isFlagged = true;
5boost::optional<utility::string_t> sso = utility::conversions::to_string_t("sso-token-abc");
6
7api->flagCommentPublic(tenantId, commentId, isFlagged, sso)
8 .then([](pplx::task<std::shared_ptr<APIEmptyResponse>> t){
9 try{
10 auto resp = t.get();
11 }catch(const std::exception&){
12 }
13 });
14

获取大动图 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
largeInternalURLSanitizedstring

响应

返回: GifGetLargeResponse

示例

getGifLarge 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto largeUrl = utility::conversions::to_string_t("https://cdn.example.com/gifs/large/abc123.gif");
4
5api->getGifLarge(tenantId, largeUrl)
6 .then([&](std::shared_ptr<GifGetLargeResponse> resp) {
7 boost::optional<utility::string_t> maybeUrl;
8 if (resp && resp->url) {
9 maybeUrl = resp->url;
10 }
11 if (maybeUrl) {
12 std::wcout << *maybeUrl << std::endl;
13 }
14 });
15

搜索动图 Internal Link

参数

名称类型必填描述
tenantIdstring
searchstring
optionsconst GetGifsSearchOptions&

响应

返回: GetGifsSearchResponse

示例

getGifsSearch 示例
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto search = U("funny cats");
4GetGifsSearchOptions options;
5options.limit = boost::optional<int>(10);
6options.rating = boost::optional<utility::string_t>(U("pg"));
7api->getGifsSearch(tenantId, search, options).then([](pplx::task<std::shared_ptr<GetGifsSearchResponse>> task){
8 try{
9 auto response = task.get();
10 }catch(const std::exception&){
11 }
12});
13

获取动图趋势 Internal Link

参数

名称类型必需描述
tenantIdstring
optionsconst GetGifsTrendingOptions&

响应

返回: GetGifsTrendingResponse

示例

getGifsTrending 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetGifsTrendingOptions options;
4options.limit = 10;
5options.rating = boost::optional<utility::string_t>(U("G"));
6api->getGifsTrending(tenantId, options).then([](std::shared_ptr<GetGifsTrendingResponse> response) {
7 for (const auto& gif : response->gifs) {
8 auto url = gif.url;
9 }
10});
11

添加标签 Internal Link

参数

名称类型必填描述
tenantIdstring
createHashTagBodyCreateHashTagBody

响应

返回: CreateHashTagResponse

示例

addHashTag 示例
Copy Copy
1
2CreateHashTagBody request;
3request.tag = utility::conversions::to_string_t("feature-request");
4request.description = utility::conversions::to_string_t("Requests for new features");
5request.relatedUrl = boost::optional<utility::string_t>(utility::conversions::to_string_t("https://example.com/feature-request"));
6
7api->addHashTag(utility::conversions::to_string_t("my-tenant-123"), request)
8 .then([](std::shared_ptr<CreateHashTagResponse> resp) {
9 (void)resp;
10 });
11

批量添加标签 Internal Link

参数

名称类型必填描述
tenantIdstring
bulkCreateHashTagsBodyBulkCreateHashTagsBody

响应

返回: BulkCreateHashTagsResponse

示例

addHashTagsBulk 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3BulkCreateHashTagsBody bulkBody;
4bulkBody.tags = { utility::string_t(U("announcement")), utility::string_t(U("feature-request")) };
5bulkBody.description = boost::optional<utility::string_t>(U("Bulk tag creation"));
6api->addHashTagsBulk(tenantId, bulkBody).then([](pplx::task<std::shared_ptr<BulkCreateHashTagsResponse>> task){
7 try{
8 auto resp = task.get();
9 }catch(const std::exception&){
10 }
11});
12

删除标签 Internal Link

参数

名称类型必需描述
tenantIdstringYes
tagstringYes
deleteHashTagRequestBodyDeleteHashTagRequestBodyYes

响应

返回: APIEmptyResponse

示例

deleteHashTag 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-001");
3auto tag = utility::conversions::to_string_t("news");
4DeleteHashTagRequestBody requestBody;
5requestBody.userId = utility::conversions::to_string_t("user-42");
6requestBody.reason = boost::optional<utility::string_t>(utility::conversions::to_string_t("User request"));
7api->deleteHashTag(tenantId, tag, requestBody)
8 .then([](std::shared_ptr<APIEmptyResponse> resp) {
9 });
10

获取标签 Internal Link

参数

名称类型必填描述
tenantIdstringYes
pagedoubleNo

响应

返回: GetHashTagsResponse

示例

getHashTags 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3boost::optional<double> page = 2.0;
4
5api->getHashTags(tenantId, page).then([](pplx::task<std::shared_ptr<GetHashTagsResponse>> task) {
6 try {
7 auto resultPtr = task.get();
8 auto response = std::make_shared<GetHashTagsResponse>(*resultPtr);
9 // 使用响应
10 } catch (const std::exception&) {
11 // 处理错误
12 }
13});
14

更新标签 Internal Link

参数

名称类型必填描述
tenantIdstring
tagstring
updateHashTagBodyUpdateHashTagBody

响应

返回: UpdateHashTagResponse

示例

patchHashTag 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t tag = U("important");
4auto body = std::make_shared<UpdateHashTagBody>();
5body->name = U("important-updated");
6body->description = boost::optional<utility::string_t>(U("Updated description"));
7api->patchHashTag(tenantId, tag, *body)
8 .then([](pplx::task<std::shared_ptr<UpdateHashTagResponse>> t){
9 try{
10 auto response = t.get();
11 std::cout << "Updated tag ID: " << response->id << std::endl;
12 }catch(const std::exception& e){
13 std::cerr << "Patch failed: " << e.what() << std::endl;
14 }
15 });
16

删除审核投票 Internal Link

参数

名称类型必填描述
tenantIdstring
commentIdstring
voteIdstring
optionsconst DeleteModerationVoteOptions&

响应

返回:VoteDeleteResponse

示例

deleteModerationVote 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-abc123");
4auto voteId = utility::conversions::to_string_t("vote-xyz789");
5DeleteModerationVoteOptions opts;
6opts.reason = utility::conversions::to_string_t("Offensive language");
7opts.hardDelete = boost::optional<bool>(true);
8api->deleteModerationVote(tenantId, commentId, voteId, opts)
9 .then([](std::shared_ptr<VoteDeleteResponse> resp){});
10

获取 API 评论 Internal Link

参数

名称类型必需描述
tenantIdstringYes
optionsconst GetApiCommentsOptions&Yes

响应

返回: ModerationAPIGetCommentsResponse

示例

getApiComments 示例
Copy Copy
1
2auto options = GetApiCommentsOptions{};
3options.page = boost::make_optional(2);
4options.authorEmail = boost::make_optional<utility::string_t>(U("user@example.com"));
5options.includeDeleted = boost::make_optional(false);
6
7api->getApiComments(U("my-tenant-123"), options).then([](pplx::task<std::shared_ptr<ModerationAPIGetCommentsResponse>> task){
8 try{
9 auto response = task.get();
10 }catch(const std::exception&){
11 }
12});
13

获取 API 导出状态 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
optionsconst GetApiExportStatusOptions&Yes

响应

返回: ModerationExportStatusResponse

示例

getApiExportStatus 示例
Copy Copy
1
2auto opts = GetApiExportStatusOptions{};
3opts.exportId = boost::make_optional<utility::string_t>(U("export-456"));
4api->getApiExportStatus(U("my-tenant-123"), opts)
5 .then([](pplx::task<std::shared_ptr<ModerationExportStatusResponse>> t){
6 try{
7 auto status = t.get();
8 }catch(const std::exception&){
9 }
10 });
11

获取 API IDs Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
optionsconst GetApiIdsOptions&Yes

响应

Returns: ModerationAPIGetCommentIdsResponse

示例

getApiIds 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetApiIdsOptions options;
4options.limit = boost::optional<int>(100);
5options.cursor = boost::optional<utility::string_t>(U("next-page-token"));
6api->getApiIds(tenantId, options).then([](pplx::task<std::shared_ptr<ModerationAPIGetCommentIdsResponse>> t){
7 try{
8 auto response = t.get();
9 auto ids = response->commentIds;
10 }catch(const std::exception&){
11 }
12});
13

获取评论中被封禁的用户 Internal Link

参数

名称类型必填描述
tenantIdstring
commentIdstring
ssostring

响应

返回: GetBannedUsersFromCommentResponse

示例

getBanUsersFromComment 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto commentId = utility::string_t(U("comment-456"));
4boost::optional<utility::string_t> sso = boost::make_optional(utility::string_t(U("sso-token-abc")));
5
6api->getBanUsersFromComment(tenantId, commentId, sso).then([](pplx::task<std::shared_ptr<GetBannedUsersFromCommentResponse>> task) {
7 try {
8 auto response = task.get();
9 } catch (const std::exception&) {
10 }
11});
12

获取评论封禁状态 Internal Link

参数

名称类型必填描述
tenantIdstringYes
commentIdstringYes
ssostringNo

响应

返回: GetCommentBanStatusResponse

示例

getCommentBanStatus 示例
Copy Copy
1
2auto tenantId = utility::string_t(U"my-tenant-123");
3auto commentId = utility::string_t(U"comment-456");
4boost::optional<utility::string_t> sso = utility::string_t(U"user@example.com");
5
6api->getCommentBanStatus(tenantId, commentId, sso).then([](pplx::task<std::shared_ptr<GetCommentBanStatusResponse>> t){
7 try{
8 auto response = t.get();
9 }catch(const std::exception&){ }
10});
11

获取评论子项 Internal Link

参数

名称类型必填描述
tenantIdstringYes
commentIdstringYes
ssostringNo

响应

返回: ModerationAPIChildCommentsResponse

示例

getCommentChildren 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("comment-456");
4boost::optional<utility::string_t> sso = U("sso-token-abc");
5
6api->getCommentChildren(tenantId, commentId, sso)
7 .then([](pplx::task<std::shared_ptr<ModerationAPIChildCommentsResponse>> task) {
8 try {
9 auto response = task.get();
10 } catch (const std::exception&) {
11 }
12 });
13

获取计数 Internal Link

参数

名称类型必填描述
tenantIdstring
optionsconst GetCountOptions&

响应

返回:ModerationAPICountCommentsResponse

示例

getCount 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetCountOptions options;
4options.userEmail = boost::optional<utility::string_t>(U("user@example.com"));
5options.maxResults = boost::optional<int>(100);
6api->getCount(tenantId, options).then([](pplx::task<std::shared_ptr<ModerationAPICountCommentsResponse>> task){
7 try{
8 auto resp = task.get();
9 auto copy = std::make_shared<ModerationAPICountCommentsResponse>(*resp);
10 std::cout << "Count: " << copy->count << std::endl;
11 }catch(const std::exception& e){
12 std::cerr << "Error: " << e.what() << std::endl;
13 }
14});
15

获取多个计数 Internal Link


参数

名称类型必需描述
tenantIdstring
ssostring

响应

返回:GetBannedUsersCountResponse

示例

getCounts 示例
Copy Copy
1
2api->getCounts(
3 utility::conversions::to_string_t("my-tenant-123"),
4 boost::optional<utility::string_t>(utility::conversions::to_string_t("john.doe@example.com"))
5).then([](pplx::task<std::shared_ptr<GetBannedUsersCountResponse>> t){
6 try{
7 auto response = t.get();
8 }catch(const std::exception&){
9 }
10});
11

获取日志 Internal Link

参数

名称类型必填描述
tenantIdstringYes
commentIdstringYes
ssostringNo

响应

返回: ModerationAPIGetLogsResponse

示例

getLogs 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("comment-456");
4boost::optional<utility::string_t> sso = U("sso-token-abc");
5
6api->getLogs(tenantId, commentId, sso).then([](pplx::task<std::shared_ptr<ModerationAPIGetLogsResponse>> t){
7 try{
8 auto response = t.get();
9 }catch(...){
10 }
11});
12

获取手动徽章 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
ssostringNo

响应

返回:GetTenantManualBadgesResponse

示例

getManualBadges 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<utility::string_t> sso = boost::make_optional(U("user@example.com"));
4
5api->getManualBadges(tenantId, sso)
6 .then([](pplx::task<std::shared_ptr<GetTenantManualBadgesResponse>> t) {
7 try {
8 auto response = t.get();
9 // 处理响应,例如 response->badgeList
10 } catch (const std::exception& ex) {
11 // 处理错误
12 }
13 });
14

获取用户的手动徽章 Internal Link

参数

名称类型必需描述
tenantIdstringYes
optionsconst GetManualBadgesForUserOptions&Yes

响应

返回:GetUserManualBadgesResponse

示例

getManualBadgesForUser 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetManualBadgesForUserOptions options;
4options.userEmail = boost::optional<utility::string_t>(U("user@example.com"));
5options.includeInactive = boost::optional<bool>(true);
6api->getManualBadgesForUser(tenantId, options).then([](pplx::task<std::shared_ptr<GetUserManualBadgesResponse>> task){
7 try{
8 auto response = task.get();
9 }catch(const std::exception&){
10 }
11});
12

获取审核评论 Internal Link

参数

名称类型必填描述
tenantIdstringYes
commentIdstringYes
optionsconst GetModerationCommentOptions&Yes

响应

返回: ModerationAPICommentResponse

示例

getModerationComment 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-456");
4GetModerationCommentOptions options;
5options.includeDeleted = boost::optional<bool>(true);
6options.locale = boost::optional<utility::string_t>(utility::conversions::to_string_t("en-US"));
7api->getModerationComment(tenantId, commentId, options)
8 .then([](pplx::task<std::shared_ptr<ModerationAPICommentResponse>> task) {
9 try {
10 auto response = task.get();
11 // 根据需要处理响应
12 } catch (const std::exception& ex) {
13 // 处理错误
14 }
15 });
16

获取审核评论文本 Internal Link

参数

名称类型必填描述
tenantIdstring
commentIdstring
ssostring

响应

返回: GetCommentTextResponse

示例

getModerationCommentText 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-987654");
4boost::optional<utility::string_t> sso = U("sso-token-abc");
5
6api->getModerationCommentText(tenantId, commentId, sso)
7 .then([](pplx::task<std::shared_ptr<GetCommentTextResponse>> t) {
8 try {
9 auto resp = t.get();
10 auto text = std::make_shared<std::string>(resp->commentText);
11 } catch (const std::exception&) {
12 }
13 });
14

获取预封禁摘要 Internal Link

参数

名称类型必填描述
tenantIdstringYes
commentIdstringYes
optionsconst GetPreBanSummaryOptions&Yes

响应

Returns: PreBanSummary

示例

getPreBanSummary 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("cmt-456789");
4GetPreBanSummaryOptions options;
5options.locale = boost::optional<utility::string_t>{utility::conversions::to_string_t("en-US")};
6
7api->getPreBanSummary(tenantId, commentId, options)
8 .then([](pplx::task<std::shared_ptr<PreBanSummary>> t) {
9 try {
10 auto summary = t.get();
11 // 处理摘要
12 } catch (const std::exception&) {
13 // 处理错误
14 }
15 });
16

获取搜索评论摘要 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
optionsconst GetSearchCommentsSummaryOptions&Yes

响应

返回:ModerationCommentSearchResponse

示例

getSearchCommentsSummary 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto options = std::make_shared<GetSearchCommentsSummaryOptions>();
4options->query = utility::conversions::to_string_t("spam");
5options->pageSize = boost::optional<int>(50);
6options->pageNumber = boost::optional<int>(1);
7options->fromDate = boost::none;
8api->getSearchCommentsSummary(tenantId, *options).then([](pplx::task<std::shared_ptr<ModerationCommentSearchResponse>> task){
9 try{
10 auto response = task.get();
11 }catch(const std::exception&){
12 }
13});
14

搜索页面 Internal Link

参数

名称类型必填描述
tenantIdstring
optionsconst GetSearchPagesOptions&

响应

返回: ModerationPageSearchResponse

示例

getSearchPages 示例
Copy Copy
1
2GetSearchPagesOptions options;
3options.pageNumber = boost::optional<int>(1);
4options.pageSize = boost::optional<int>(50);
5options.searchTerm = boost::optional<utility::string_t>(U("spam"));
6
7api->getSearchPages(U("my-tenant-123"), options)
8 .then([](pplx::task<std::shared_ptr<ModerationPageSearchResponse>> task) {
9 try {
10 auto response = task.get();
11 // 使用响应
12 } catch (const std::exception& e) {
13 // 处理错误
14 }
15 });
16

搜索站点 Internal Link

参数

名称类型必填描述
tenantIdstringYes
optionsconst GetSearchSitesOptions&Yes

响应

返回:ModerationSiteSearchResponse

示例

getSearchSites 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3GetSearchSitesOptions options;
4options.query = boost::make_optional(utility::string_t(U("example query")));
5options.limit = boost::make_optional(25);
6
7api->getSearchSites(tenantId, options)
8 .then([](pplx::task<std::shared_ptr<ModerationSiteSearchResponse>> t) {
9 try {
10 auto response = t.get();
11 auto respPtr = std::make_shared<ModerationSiteSearchResponse>(*response);
12 for (const auto& site : respPtr->sites) {
13 // 处理逻辑
14 }
15 } catch (const std::exception&) {
16 // 错误处理
17 }
18 });
19

获取搜索建议 Internal Link

参数

名称类型必填描述
tenantIdstringYes
optionsconst GetSearchSuggestOptions&Yes

响应

返回: ModerationSuggestResponse

示例

getSearchSuggest 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetSearchSuggestOptions opts;
4opts.query = U("search term");
5opts.limit = boost::optional<int>(5);
6opts.includeInactive = boost::optional<bool>(false);
7api->getSearchSuggest(tenantId, opts).then([](pplx::task<std::shared_ptr<ModerationSuggestResponse>> t){
8 try{
9 auto resp = t.get();
10 }catch(const std::exception&){ }
11}).wait();
12

搜索用户 Internal Link

参数

名称类型必需描述
tenantIdstring
optionsconst GetSearchUsersOptions&

响应

返回:ModerationUserSearchResponse

示例

getSearchUsers 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3GetSearchUsersOptions opts;
4opts.query = utility::string_t(U("john.doe@example.com"));
5opts.page = boost::optional<int>(1);
6opts.pageSize = boost::optional<int>(20);
7
8api->getSearchUsers(tenantId, opts)
9 .then([](std::shared_ptr<ModerationUserSearchResponse> resp) {
10 for (const auto& user : resp->users) {
11 std::wcout << user.id << L" - " << user.email << std::endl;
12 }
13 });
14

获取信任因子 Internal Link

参数

名称类型必填描述
tenantIdstring
optionsconst GetTrustFactorOptions&

响应

返回:GetUserTrustFactorResponse

示例

getTrustFactor 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3GetTrustFactorOptions options;
4options.userEmail = boost::optional<utility::string_t>(U("user@example.com"));
5options.ipAddress = boost::optional<utility::string_t>(U("203.0.113.42"));
6api->getTrustFactor(tenantId, options).then([](std::shared_ptr<GetUserTrustFactorResponse> resp) {
7 if (resp) {
8 std::cout << "Trust factor: " << resp->trustFactor << std::endl;
9 }
10});
11

获取用户封禁偏好 Internal Link

参数

名称类型必填描述
tenantIdstringYes
ssostringNo

响应

返回:APIModerateGetUserBanPreferencesResponse

示例

getUserBanPreference 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3boost::optional<utility::string_t> sso = boost::optional<utility::string_t>(U("user@example.com"));
4
5api->getUserBanPreference(tenantId, sso)
6 .then([](pplx::task<std::shared_ptr<APIModerateGetUserBanPreferencesResponse>> t) {
7 try {
8 auto resp = t.get();
9 } catch (const std::exception&) {
10 }
11 });
12

获取用户内部资料 Internal Link

参数

名称类型必需描述
tenantIdstring
optionsconst GetUserInternalProfileOptions&

响应

返回: GetUserInternalProfileResponse

示例

getUserInternalProfile 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetUserInternalProfileOptions options;
4options.email = boost::optional<utility::string_t>(U("user@example.com"));
5options.includeDetails = boost::optional<bool>(true);
6
7api->getUserInternalProfile(tenantId, options)
8 .then([](std::shared_ptr<GetUserInternalProfileResponse> response) {
9 if (response) {
10 auto name = response->displayName;
11 auto id = response->userId;
12 }
13 });
14

调整评论投票 Internal Link

参数

名称类型必填描述
tenantIdstringYes
commentIdstringYes
adjustCommentVotesParamsAdjustCommentVotesParamsYes
optionsconst PostAdjustCommentVotesOptions&Yes

响应

返回:AdjustVotesResponse

示例

postAdjustCommentVotes 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("cmt-456789");
4AdjustCommentVotesParams params;
5params.voteDelta = 1;
6params.userIdentifier = utility::conversions::to_string_t("user@example.com");
7params.reason = boost::optional<utility::string_t>(utility::conversions::to_string_t("Helpful"));
8PostAdjustCommentVotesOptions opts;
9opts.timeout = boost::optional<int>(30);
10api->postAdjustCommentVotes(tenantId, commentId, params, opts).then([](pplx::task<std::shared_ptr<AdjustVotesResponse>> t){
11 try{
12 auto resp = t.get();
13 }catch(const std::exception& e){
14 }
15});
16

提交 API 导出 Internal Link

参数

名称类型必需描述
tenantIdstring
optionsconst PostApiExportOptions&

响应

返回:ModerationExportResponse

示例

postApiExport 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3PostApiExportOptions options;
4options.format = utility::string_t(U("json"));
5options.email = utility::string_t(U("reports@example.com"));
6options.startDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-01T00:00:00Z")));
7options.endDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-31T23:59:59Z")));
8
9api->postApiExport(tenantId, options)
10 .then([](std::shared_ptr<ModerationExportResponse> response) {
11 if (response) {
12 // 处理成功的导出响应
13 }
14 })
15 .wait();
16

封禁用户(来自评论) Internal Link

参数

名称类型必填描述
tenantIdstringYes
commentIdstringYes
optionsconst PostBanUserFromCommentOptions&Yes

响应

返回: BanUserFromCommentResult

示例

postBanUserFromComment 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("comment-456789");
4PostBanUserFromCommentOptions options;
5options.reason = boost::optional<utility::string_t>(U("spam"));
6options.durationDays = boost::optional<int>(30);
7
8api->postBanUserFromComment(tenantId, commentId, options)
9 .then([](std::shared_ptr<BanUserFromCommentResult> result) {
10 // 结果处理
11 })
12 .then([](pplx::task<void> t) {
13 try { t.get(); } catch (const std::exception& e) { /* 错误处理 */ }
14 });
15

撤销用户封禁 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
banUserUndoParamsBanUserUndoParamsYes
ssostringNo

响应

返回: APIEmptyResponse

示例

postBanUserUndo 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3BanUserUndoParams banParams;
4banParams.userId = utility::string_t(U("user-567"));
5banParams.reason = utility::string_t(U("reinstated"));
6boost::optional<utility::string_t> sso = utility::string_t(U("sso-token-abc"));
7
8api->postBanUserUndo(tenantId, banParams, sso).then([](std::shared_ptr<APIEmptyResponse> resp){
9 // handle success
10});
11

批量预封禁摘要 Internal Link

参数

名称类型必填描述
tenantIdstring
bulkPreBanParamsBulkPreBanParams
optionsconst PostBulkPreBanSummaryOptions&

响应

返回: BulkPreBanSummary

示例

postBulkPreBanSummary 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3BulkPreBanParams bulkPreBanParams;
4bulkPreBanParams.emails = {
5 utility::conversions::to_string_t("spam1@example.com"),
6 utility::conversions::to_string_t("spam2@example.com")
7};
8bulkPreBanParams.reason = utility::conversions::to_string_t("spam");
9PostBulkPreBanSummaryOptions options;
10options.requestId = boost::optional<utility::string_t>(utility::conversions::to_string_t("req-456"));
11api->postBulkPreBanSummary(tenantId, bulkPreBanParams, options)
12 .then([](std::shared_ptr<BulkPreBanSummary> result) {
13 (void)result;
14 });
15

按 ID 获取评论 Internal Link

参数

名称类型必需描述
tenantIdstring
commentsByIdsParamsCommentsByIdsParams
ssostring

响应

返回:ModerationAPIChildCommentsResponse

示例

postCommentsByIds 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3CommentsByIdsParams params;
4params.commentIds = {U("cmt-001"), U("cmt-002")};
5boost::optional<utility::string_t> sso = U("sso-token-abc");
6api->postCommentsByIds(tenantId, params, sso).then([](pplx::task<std::shared_ptr<ModerationAPIChildCommentsResponse>> t){
7 try{
8 auto resp = t.get();
9 auto copy = std::make_shared<ModerationAPIChildCommentsResponse>(*resp);
10 }catch(const std::exception&){ }
11});
12

提交标记评论 Internal Link

参数

名称类型必需描述
tenantIdstring
commentIdstring
optionsconst PostFlagCommentOptions&

响应

返回:APIEmptyResponse

示例

postFlagComment 示例
Copy Copy
1
2PostFlagCommentOptions options;
3options.reason = boost::optional<utility::string_t>(U("spam"));
4options.reportedBy = boost::optional<utility::string_t>(U("moderator@example.com"));
5
6api->postFlagComment(U("my-tenant-123"), U("comment-456"), options)
7 .then([](std::shared_ptr<APIEmptyResponse> resp){
8 (void)resp;
9 })
10 .then([](pplx::task<void> t){
11 try{
12 t.get();
13 }catch(const std::exception&){
14 }
15 });
16

提交移除评论 Internal Link

参数

名称类型必需描述
tenantIdstring
commentIdstring
optionsconst PostRemoveCommentOptions&

响应

返回: PostRemoveCommentApiResponse

示例

postRemoveComment 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto commentId = utility::string_t(U("cmt-456789"));
4PostRemoveCommentOptions options;
5options.permanent = boost::optional<bool>(true);
6api->postRemoveComment(tenantId, commentId, options)
7 .then([](pplx::task<std::shared_ptr<PostRemoveCommentApiResponse>> task) {
8 try {
9 auto response = task.get();
10 // 处理响应
11 } catch (const std::exception& ex) {
12 // 处理错误
13 }
14 });
15

恢复已删除评论 Internal Link

参数

名称类型必需描述
tenantIdstring
commentIdstring
optionsconst PostRestoreDeletedCommentOptions&

响应

返回:APIEmptyResponse

示例

postRestoreDeletedComment 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-987654");
4PostRestoreDeletedCommentOptions options;
5options.reason = boost::optional<utility::string_t>(U("Restoring after accidental delete"));
6options.notifyUser = boost::optional<bool>(true);
7api->postRestoreDeletedComment(tenantId, commentId, options)
8 .then([](std::shared_ptr<APIEmptyResponse> resp){
9 });
10

设置评论审批状态 Internal Link

参数

名称类型必需描述
tenantIdstringYes
commentIdstringYes
optionsconst PostSetCommentApprovalStatusOptions&Yes

响应

返回:SetCommentApprovedResponse

示例

postSetCommentApprovalStatus 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("comment-abc123");
4auto options = std::make_shared<PostSetCommentApprovalStatusOptions>();
5options->approved = boost::optional<bool>(true);
6options->reason = boost::optional<utility::string_t>(utility::conversions::to_string_t("Inappropriate content"));
7api->postSetCommentApprovalStatus(tenantId, commentId, *options)
8 .then([](pplx::task<std::shared_ptr<SetCommentApprovedResponse>> task) {
9 try {
10 auto response = task.get();
11 } catch (const std::exception& ex) {
12 }
13 });
14

设置评论审核状态 Internal Link

参数

名称类型必填描述
tenantIdstringYes
commentIdstringYes
optionsconst PostSetCommentReviewStatusOptions&Yes

响应

返回: APIEmptyResponse

示例

postSetCommentReviewStatus 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("cmt-456789");
4PostSetCommentReviewStatusOptions opts;
5opts.status = utility::conversions::to_string_t("approved");
6opts.note = boost::optional<utility::string_t>(utility::conversions::to_string_t("Looks good"));
7api->postSetCommentReviewStatus(tenantId, commentId, opts)
8 .then([](pplx::task<std::shared_ptr<APIEmptyResponse>> t){
9 try{
10 auto resp = t.get();
11 }catch(const std::exception& e){
12 }
13 });
14

设置评论垃圾状态 Internal Link

参数

名称类型必填描述
tenantIdstring
commentIdstring
optionsconst PostSetCommentSpamStatusOptions&

响应

返回:APIEmptyResponse

示例

postSetCommentSpamStatus 示例
Copy Copy
1
2auto options = PostSetCommentSpamStatusOptions{};
3options.isSpam = true;
4options.reason = boost::optional<utility::string_t>{U"User reported spam"};
5
6api->postSetCommentSpamStatus(U("my-tenant-123"), U("comment-789"), options)
7 .then([](std::shared_ptr<APIEmptyResponse> resp) {
8 auto copy = std::make_shared<APIEmptyResponse>(*resp);
9 })
10 .then([](pplx::task<void> t) {
11 try { t.get(); } catch(const std::exception&) {}
12 });
13

设置评论文本 Internal Link

参数

名称类型必填描述
tenantIdstringYes
commentIdstringYes
setCommentTextParamsSetCommentTextParamsYes
optionsconst PostSetCommentTextOptions&Yes

响应

返回: SetCommentTextResponse

示例

postSetCommentText 示例
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto commentId = U("comment-456");
4SetCommentTextParams params;
5params.text = U("Revised comment content");
6PostSetCommentTextOptions options;
7options.requestId = boost::optional<utility::string_t>(U("req-987"));
8api->postSetCommentText(tenantId, commentId, params, options)
9 .then([](std::shared_ptr<SetCommentTextResponse> resp) {
10 auto updatedId = resp->commentId;
11 })
12 .then([](pplx::task<void> t) {
13 try { t.get(); } catch (const std::exception&) {}
14 });
15

提交取消标记评论 Internal Link

参数

名称类型必填描述
tenantIdstringYes
commentIdstringYes
optionsconst PostUnFlagCommentOptions&Yes

响应

返回: APIEmptyResponse

示例

postUnFlagComment 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-456789");
4PostUnFlagCommentOptions opts;
5opts.notifyUser = boost::optional<bool>(true);
6api->postUnFlagComment(tenantId, commentId, opts)
7 .then([](std::shared_ptr<APIEmptyResponse> resp) {
8 // 可以在此进行处理
9 })
10 .then([](pplx::task<void> t) {
11 try { t.get(); } catch (const std::exception&) {}
12 });
13

提交投票 Internal Link

参数

名称类型必填描述
tenantIdstringYes
commentIdstringYes
optionsconst PostVoteOptions&Yes

响应

返回:VoteResponse

示例

postVote 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t commentId = U("cmt-456789");
4PostVoteOptions options;
5options.upvote = boost::make_optional(true);
6options.reason = boost::make_optional<std::string>("Inappropriate content");
7api->postVote(tenantId, commentId, options)
8 .then([](pplx::task<std::shared_ptr<VoteResponse>> t) {
9 try {
10 auto resp = t.get();
11 auto count = resp->voteCount;
12 } catch (const std::exception& e) {
13 }
14 });
15

授予徽章 Internal Link

参数

名称类型必填描述
tenantIdstringYes
badgeIdstringYes
optionsconst PutAwardBadgeOptions&Yes

响应

返回: AwardUserBadgeResponse

示例

putAwardBadge 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto badgeId = utility::conversions::to_string_t("badge-456");
4PutAwardBadgeOptions opts;
5opts.userId = utility::conversions::to_string_t("user-42");
6opts.note = boost::optional<utility::string_t>(utility::conversions::to_string_t("Excellent comment"));
7api->putAwardBadge(tenantId, badgeId, opts).then([](pplx::task<std::shared_ptr<AwardUserBadgeResponse>> t){
8 try{
9 auto resp = t.get();
10 auto respCopy = std::make_shared<AwardUserBadgeResponse>(*resp);
11 }catch(const std::exception& e){
12 }
13});
14

关闭线程 Internal Link

参数

名称类型必需描述
tenantIdstring
urlIdstring
ssostring

响应

返回:APIEmptyResponse

示例

putCloseThread 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-4321"));
3auto urlId = utility::string_t(U("article-9876"));
4boost::optional<utility::string_t> sso = boost::make_optional<utility::string_t>(U("user@example.com"));
5
6api->putCloseThread(tenantId, urlId, sso).then([](pplx::task<std::shared_ptr<APIEmptyResponse>> task){
7 try{
8 auto response = task.get();
9 }catch(const std::exception&){
10 }
11});
12

移除徽章 Internal Link

参数

名称类型必填描述
tenantIdstring
badgeIdstring
optionsconst PutRemoveBadgeOptions&

响应

返回:RemoveUserBadgeResponse

示例

putRemoveBadge 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t badgeId = U("badge-abc-456");
4PutRemoveBadgeOptions options;
5options.reason = boost::optional<utility::string_t>(U("Spamming"));
6api->putRemoveBadge(tenantId, badgeId, options).then([](std::shared_ptr<RemoveUserBadgeResponse> resp) {
7 (void)resp;
8});
9

重新打开线程 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
ssostringNo

响应

返回: APIEmptyResponse

示例

putReopenThread 示例
Copy Copy
1
2api->putReopenThread(utility::string_t(U("my-tenant-123")), utility::string_t(U("thread-456")), boost::make_optional<utility::string_t>(U("user@example.com")))
3 .then([](std::shared_ptr<APIEmptyResponse> result){
4 std::cout << "Thread reopened" << std::endl;
5 });
6

设置信任因子 Internal Link

参数

名称类型必填描述
tenantIdstringYes
optionsconst SetTrustFactorOptions&Yes

响应

返回:SetUserTrustFactorResponse

示例

setTrustFactor 示例
Copy Copy
1
2SetTrustFactorOptions opts;
3opts.userId = utility::conversions::to_string_t("user@example.com");
4opts.trustFactor = 8;
5opts.reason = boost::optional<utility::string_t>(utility::conversions::to_string_t("Spam check passed"));
6api->setTrustFactor(utility::conversions::to_string_t("my-tenant-123"), opts)
7 .then([](pplx::task<std::shared_ptr<SetUserTrustFactorResponse>> task) {
8 try {
9 auto response = task.get();
10 } catch (const std::exception&) {
11 }
12 });
13

创建版主 Internal Link

参数

名称类型必需描述
tenantIdstringYes
createModeratorBodyCreateModeratorBodyYes

响应

返回:CreateModeratorResponse

示例

createModerator 示例
Copy Copy
1
2CreateModeratorBody moderatorBody;
3moderatorBody.email = utility::conversions::to_string_t("moderator@example.com");
4moderatorBody.name = utility::conversions::to_string_t("John Moderator");
5moderatorBody.notes = boost::optional<utility::string_t>(utility::conversions::to_string_t("Community moderator"));
6api->createModerator(utility::conversions::to_string_t("my-tenant-123"), moderatorBody)
7 .then([](std::shared_ptr<CreateModeratorResponse> resp) {});
8

删除版主 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes
sendEmailstringNo

响应

返回:APIEmptyResponse

示例

deleteModerator 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto moderatorId = utility::conversions::to_string_t("mod-456");
4boost::optional<utility::string_t> sendEmail = utility::conversions::to_string_t("admin@example.com");
5api->deleteModerator(tenantId, moderatorId, sendEmail)
6 .then([](std::shared_ptr<APIEmptyResponse> resp) {
7 // 处理成功
8 });
9

获取版主 Internal Link

参数

名称类型必需描述
tenantIdstringYes
idstringYes

响应

返回: GetModeratorResponse

示例

getModerator 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto moderatorId = utility::string_t(U("moderator-789"));
4api->getModerator(tenantId, moderatorId)
5 .then([](pplx::task<std::shared_ptr<GetModeratorResponse>> t) {
6 try {
7 auto response = t.get();
8 } catch (const std::exception&) {
9 }
10 });
11

获取版主列表 Internal Link

参数

名称类型必填描述
tenantIdstringYes
skipdoubleNo

响应

返回:GetModeratorsResponse

示例

getModerators 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<double> skip = 10.0;
4api->getModerators(tenantId, skip).then([](pplx::task<std::shared_ptr<GetModeratorsResponse>> t){
5 auto response = t.get();
6});
7

发送邀请 Internal Link


参数

名称类型必填描述
tenantIdstring
idstring
fromNamestring

响应

返回: APIEmptyResponse

示例

sendInvite 示例
Copy Copy
1
2boost::optional<utility::string_t> cc = utility::conversions::to_string_t("cc@example.com");
3api->sendInvite(
4 utility::conversions::to_string_t("my-tenant-123"),
5 utility::conversions::to_string_t("invitee@example.com"),
6 utility::conversions::to_string_t("John Doe")
7).then([](std::shared_ptr<APIEmptyResponse> resp) {
8 // 处理成功的邀请
9});
10

更新版主 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
idstringYes
updateModeratorBodyUpdateModeratorBodyYes

响应

Returns: APIEmptyResponse

示例

updateModerator 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto moderatorId = utility::conversions::to_string_t("mod-789");
4UpdateModeratorBody body;
5body.email = utility::conversions::to_string_t("moderator@example.com");
6body.isActive = true;
7body.notes = boost::optional<utility::string_t>(utility::conversions::to_string_t("Senior moderator"));
8api->updateModerator(tenantId, moderatorId, body)
9 .then([](std::shared_ptr<APIEmptyResponse>) {})
10 .then([](pplx::task<void> t) { try { t.get(); } catch (const std::exception&) {} });
11

删除通知计数 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes

响应

返回: APIEmptyResponse

示例

deleteNotificationCount 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto notificationId = utility::conversions::to_string_t("notif-789");
4
5api->deleteNotificationCount(tenantId, notificationId)
6 .then([](std::shared_ptr<APIEmptyResponse> resp) {})
7 .then([](pplx::task<void> t) { try { t.get(); } catch (const std::exception&) {} });
8

获取缓存的通知计数 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回: GetCachedNotificationCountResponse

示例

getCachedNotificationCount 示例
Copy Copy
1
2auto tenantId = boost::optional<utility::string_t>(utility::conversions::to_string_t("my-tenant-123"));
3auto userId = boost::optional<utility::string_t>(utility::conversions::to_string_t("user-456"));
4
5api->getCachedNotificationCount(tenantId.value(), userId.value())
6 .then([](pplx::task<std::shared_ptr<GetCachedNotificationCountResponse>> task) {
7 try {
8 auto response = task.get();
9 // process response
10 } catch (const std::exception&) {
11 // handle error
12 }
13 });
14

获取通知计数 Internal Link

参数

名称类型必填描述
tenantIdstringYes
optionsconst GetNotificationCountOptions&Yes

响应

返回:GetNotificationCountResponse

示例

getNotificationCount 示例
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3GetNotificationCountOptions options;
4options.filter = boost::optional<utility::string_t>(U("unread"));
5options.maxCount = boost::optional<int>(10);
6api->getNotificationCount(tenantId, options)
7 .then([](pplx::task<std::shared_ptr<GetNotificationCountResponse>> t) {
8 try {
9 auto response = t.get();
10 } catch (const std::exception& ex) {
11 }
12 });
13

获取通知 Internal Link

参数

名称类型必需描述
tenantIdstring
optionsconst GetNotificationsOptions&

响应

返回: GetNotificationsResponse

示例

getNotifications 示例
Copy Copy
1
2GetNotificationsOptions options;
3options.limit = 20;
4options.after = U("cursor-123");
5api->getNotifications(U("my-tenant-123"), options)
6 .then([](std::shared_ptr<GetNotificationsResponse> resp) {
7 (void)resp;
8 });
9

更新通知 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
updateNotificationBodyUpdateNotificationBody
userIdstring

响应

返回: APIEmptyResponse

示例

updateNotification 示例
Copy Copy
1
2auto updateBody = std::make_shared<UpdateNotificationBody>();
3updateBody->title = utility::conversions::to_string_t("System Maintenance");
4updateBody->message = utility::conversions::to_string_t("Scheduled downtime at 02:00 UTC.");
5api->updateNotification(
6 utility::conversions::to_string_t("my-tenant-123"),
7 utility::conversions::to_string_t("notif-456"),
8 updateBody,
9 boost::optional<utility::string_t>(utility::conversions::to_string_t("admin-user"))
10).then([](std::shared_ptr<APIEmptyResponse>){});
11

创建 V1 页面互动 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
titlestringNo

响应

返回: CreateV1PageReact

示例

createV1PageReact 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto urlId = utility::string_t(U("https://example.com/articles/789"));
4boost::optional<utility::string_t> title = utility::string_t(U("Understanding Async C++"));
5api->createV1PageReact(tenantId, urlId, title).then([](pplx::task<std::shared_ptr<CreateV1PageReact>> task) {
6 try {
7 auto response = task.get();
8 } catch (const std::exception&) {
9 }
10});
11

创建 V2 页面互动 Internal Link

参数

名称类型必填描述
tenantIdstring
urlIdstring
idstring
titlestring

响应

返回: CreateV1PageReact

示例

createV2PageReact 示例
Copy Copy
1
2api->createV2PageReact(
3 utility::string_t(U("my-tenant-789")),
4 utility::string_t(U("https://example.com/articles/12345")),
5 utility::string_t(U("user-42")),
6 boost::optional<utility::string_t>(U("Helpful"))
7).then([](pplx::task<std::shared_ptr<CreateV1PageReact>> task){
8 try{
9 auto response = task.get();
10 }catch(const std::exception&){ }
11});
12

删除 V1 页面互动 Internal Link

参数

名称类型必填描述
tenantIdstring
urlIdstring

响应

返回:CreateV1PageReact

示例

deleteV1PageReact 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto urlId = utility::conversions::to_string_t("page-abc-456");
4api->deleteV1PageReact(tenantId, urlId).then([](pplx::task<std::shared_ptr<CreateV1PageReact>> task){
5 try{
6 auto response = task.get();
7 boost::optional<std::shared_ptr<CreateV1PageReact>> optResponse = response;
8 }catch(...){
9 }
10});
11

删除 V2 页面互动 Internal Link

参数

名称类型必填描述
tenantIdstringYes
urlIdstringYes
idstringYes

响应

返回:CreateV1PageReact

示例

deleteV2PageReact 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto urlId = utility::conversions::to_string_t("page-456");
4auto reactId = utility::conversions::to_string_t("react-789");
5boost::optional<utility::string_t> correlationId = utility::conversions::to_string_t("corr-001");
6
7api->deleteV2PageReact(tenantId, urlId, reactId)
8 .then([](pplx::task<std::shared_ptr<CreateV1PageReact>> t) {
9 auto result = t.get();
10 });
11

获取 V1 页面点赞 Internal Link

参数

名称类型必需描述
tenantIdstringYes
urlIdstringYes

响应

返回: GetV1PageLikes

示例

getV1PageLikes 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto urlId = utility::conversions::to_string_t("article-789");
4boost::optional<utility::string_t> filter;
5
6api->getV1PageLikes(tenantId, urlId).then([=](pplx::task<std::shared_ptr<GetV1PageLikes>> task){
7 try{
8 auto raw = task.get();
9 auto likes = std::make_shared<GetV1PageLikes>(*raw);
10 auto total = likes->totalLikes;
11 }catch(...){
12 }
13});
14

获取 V2 页面互动 Internal Link

参数

名称类型必需描述
tenantIdstring
urlIdstring

响应

返回: GetV2PageReacts

示例

getV2PageReacts 示例
Copy Copy
1
2auto tenantId = utility::string_t("my-tenant-123");
3auto urlId = utility::string_t("https://example.com/article/42");
4boost::optional<utility::string_t> locale = utility::string_t("en-US");
5api->getV2PageReacts(tenantId, urlId)
6 .then([locale](std::shared_ptr<GetV2PageReacts> reacts){
7 if (locale) {}
8 })
9 .then([](pplx::task<void> t){
10 try { t.get(); } catch (...) {}
11 });
12

获取 V2 页面互动用户 Internal Link

参数

名称类型必填描述
tenantIdstring
urlIdstring
idstring

响应

Returns: GetV2PageReactUsersResponse

示例

getV2PageReactUsers 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto urlId = utility::conversions::to_string_t("page-456");
4auto id = utility::conversions::to_string_t("react-789");
5boost::optional<utility::string_t> maybeFilter;
6api->getV2PageReactUsers(tenantId, urlId, id).then([](pplx::task<std::shared_ptr<GetV2PageReactUsersResponse>> task){
7 try{
8 auto response = task.get();
9 // 根据需要使用响应
10 }catch(const std::exception&){
11 // 处理错误
12 }
13});
14

添加页面 Internal Link

参数

名称类型必填描述
tenantIdstring
createAPIPageDataCreateAPIPageData

响应

返回: AddPageAPIResponse

示例

addPage 示例
Copy Copy
1
2auto createData = CreateAPIPageData{};
3createData.title = utility::string_t(U("Welcome Page"));
4createData.url = utility::string_t(U("https://example.com/welcome"));
5createData.description = boost::optional<utility::string_t>(utility::string_t(U("Landing page for new users")));
6
7api->addPage(utility::string_t(U("my-tenant-123")), createData)
8 .then([](std::shared_ptr<AddPageAPIResponse> response) {
9 if (response && response->success) {
10 // 处理成功添加
11 } else {
12 // 处理错误
13 }
14 });
15

删除页面 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回: DeletePageAPIResponse

示例

deletePage 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto pageId = utility::conversions::to_string_t("page-456");
4
5api->deletePage(tenantId, pageId)
6 .then([](pplx::task<std::shared_ptr<DeletePageAPIResponse>> t) {
7 try {
8 auto response = t.get();
9 // 根据需要处理响应
10 } catch (const std::exception& ex) {
11 // 处理错误
12 }
13 });
14

获取离线用户 Internal Link

Past commenters on the page who are NOT currently online. Sorted by displayName.
Use this after exhausting /users/online to render a "Members" section.
Cursor pagination on commenterName: server walks the partial {tenantId, urlId, commenterName}
index from afterName forward via $gt, no $skip cost.

Parameters

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
optionsconst GetOfflineUsersOptions&Yes

Response

Returns: PageUsersOfflineResponse

Example

getOfflineUsers 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t urlId = U("page-456");
4GetOfflineUsersOptions options;
5options.limit = boost::optional<int>(50);
6options.includeDetails = boost::optional<bool>(true);
7
8api->getOfflineUsers(tenantId, urlId, options)
9 .then([](pplx::task<std::shared_ptr<PageUsersOfflineResponse>> t) {
10 try {
11 auto response = t.get();
12 } catch (const std::exception&) {
13 }
14 });
15

获取在线用户 Internal Link

当前在线的页面查看者:当前其 websocket 会话已订阅该页面的用户。
返回 anonCount + totalCount(全局房间订阅者,包括我们未列出的匿名查看者)。

参数

名称类型必需描述
tenantIdstringYes
urlIdstringYes
optionsconst GetOnlineUsersOptions&Yes

响应

返回: PageUsersOnlineResponse

示例

getOnlineUsers 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t urlId = U("article-456");
4auto options = std::make_shared<GetOnlineUsersOptions>();
5options->maxResults = boost::optional<int>(100);
6options->includeInactive = boost::optional<bool>(false);
7api->getOnlineUsers(tenantId, urlId, *options).then([](pplx::task<std::shared_ptr<PageUsersOnlineResponse>> task){
8 try{
9 auto response = task.get();
10 }catch(const std::exception&){
11 }
12});
13

通过 URL ID 获取页面 Internal Link

参数

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes

响应

返回: GetPageByURLIdAPIResponse

示例

getPageByURLId 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto urlId = utility::conversions::to_string_t("page-456");
4boost::optional<utility::string_t> correlationId = boost::make_optional(utility::conversions::to_string_t("corr-789"));
5
6api->getPageByURLId(tenantId, urlId)
7 .then([correlationId](pplx::task<std::shared_ptr<GetPageByURLIdAPIResponse>> task) {
8 try {
9 auto response = task.get();
10 } catch (const std::exception&) {
11 }
12 });
13

获取页面列表 Internal Link

参数

名称类型必填描述
tenantIdstring

响应

返回:GetPagesAPIResponse

示例

getPages 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3api->getPages(tenantId)
4 .then([](pplx::task<std::shared_ptr<GetPagesAPIResponse>> task) {
5 try {
6 auto response = task.get();
7 boost::optional<utility::string_t> nextCursor = response->nextCursor;
8 } catch (const std::exception&) {
9 }
10 });
11

获取公开页面 Internal Link


列出租户的页面。供 FChat 桌面客户端填充其房间列表使用。
每个页面的解析自定义配置中,需要将 enableFChat 设置为 true。
需要 SSO 的页面将根据请求用户的组访问权限进行过滤。

参数

名称类型必需描述
tenantIdstring
optionsconst GetPagesPublicOptions&

响应

返回:GetPublicPagesResponse

示例

getPagesPublic 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetPagesPublicOptions options;
4options.limit = boost::optional<int>(50);
5options.cursor = boost::optional<utility::string_t>(U("cursor-token"));
6api->getPagesPublic(tenantId, options).then([](pplx::task<std::shared_ptr<GetPublicPagesResponse>> task){
7 try{
8 auto response = task.get();
9 // process response if needed
10 }catch(const std::exception&){
11 // handle error if needed
12 }
13});
14

获取用户信息 Internal Link

Bulk user info for a tenant. Given userIds, return display info from User / SSOUser. Used by the comment widget to enrich users that just appeared via a presence event. No page context: privacy is enforced uniformly (private profiles are masked).

参数

名称类型必填描述
tenantIdstringYes
idsstringYes

响应

返回:PageUsersInfoResponse

示例

getUsersInfo 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t ids = U("alice@example.com,bob@example.com");
4boost::optional<utility::string_t> locale = boost::make_optional(U("en-US"));
5
6api->getUsersInfo(tenantId, ids).then([](pplx::task<std::shared_ptr<PageUsersInfoResponse>> t){
7 try{
8 auto response = t.get();
9 // 处理响应
10 }catch(const std::exception&){
11 // 处理错误
12 }
13});
14

部分更新页面 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes
updateAPIPageDataUpdateAPIPageDataYes

响应

返回:PatchPageAPIResponse

示例

patchPage 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t pageId = U("page-789");
4UpdateAPIPageData update;
5update.title = boost::optional<utility::string_t>(U("Updated Page Title"));
6update.metadata = boost::optional<utility::string_t>(U("{\"author\":\"jane.doe@example.com\"}"));
7api->patchPage(tenantId, pageId, update)
8 .then([](std::shared_ptr<PatchPageAPIResponse> response) {
9 if (response && response->isSuccess) {
10 // 处理成功
11 }
12 })
13 .then([](pplx::task<void> t) {
14 try { t.get(); } catch (const std::exception&) {}
15 });
16

删除待处理的 Webhook 事件 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回:APIEmptyResponse

示例

deletePendingWebhookEvent 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto eventId = utility::conversions::to_string_t("event-987654");
4boost::optional<utility::string_t> optTenant = tenantId;
5
6api->deletePendingWebhookEvent(optTenant.value(), eventId)
7 .then([](std::shared_ptr<APIEmptyResponse> resp) {
8 (void)resp;
9 })
10 .then([](pplx::task<void> t) {
11 try { t.get(); } catch (const std::exception& e) { }
12 });
13

获取待处理 Webhook 事件计数 Internal Link

参数

名称类型必填描述
tenantIdstringYes
optionsconst GetPendingWebhookEventCountOptions&Yes

响应

返回:GetPendingWebhookEventCountResponse

示例

getPendingWebhookEventCount 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3GetPendingWebhookEventCountOptions opts;
4opts.filter = boost::optional<utility::string_t>(utility::conversions::to_string_t("active"));
5api->getPendingWebhookEventCount(tenantId, opts)
6 .then([](std::shared_ptr<GetPendingWebhookEventCountResponse> resp){
7 auto count = resp->getCount();
8 });
9

获取待处理的 Webhook 事件 Internal Link

参数

名称类型必填描述
tenantIdstringYes
optionsconst GetPendingWebhookEventsOptions&Yes

响应

返回: GetPendingWebhookEventsResponse

示例

getPendingWebhookEvents 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3GetPendingWebhookEventsOptions opts;
4opts.pageSize = boost::optional<int>(100);
5opts.startAfter = boost::optional<utility::string_t>(U("event-abc-456"));
6api->getPendingWebhookEvents(tenantId, opts)
7 .then([](pplx::task<std::shared_ptr<GetPendingWebhookEventsResponse>> task) {
8 try {
9 auto resp = task.get();
10 auto copy = std::make_shared<GetPendingWebhookEventsResponse>(*resp);
11 } catch (const std::exception&) {}
12 });
13

创建问卷配置 Internal Link

参数

名称类型必填描述
tenantIdstring
createQuestionConfigBodyCreateQuestionConfigBody

响应

返回:CreateQuestionConfigResponse

示例

createQuestionConfig 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3CreateQuestionConfigBody configBody;
4configBody.question = utility::string_t(U("How satisfied are you with our service?"));
5configBody.required = true;
6configBody.defaultAnswer = boost::optional<utility::string_t>(utility::string_t(U("Very satisfied")));
7api->createQuestionConfig(tenantId, configBody).then([](pplx::task<std::shared_ptr<CreateQuestionConfigResponse>> task){
8 try{
9 auto response = task.get();
10 }catch(const std::exception&){}
11});
12

删除问卷配置 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回: APIEmptyResponse

示例

deleteQuestionConfig 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto configId = utility::conversions::to_string_t("question-config-456");
4
5api->deleteQuestionConfig(tenantId, configId)
6 .then([](std::shared_ptr<APIEmptyResponse> resp) {
7 // 处理成功删除
8 })
9 .then([](pplx::task<void> t) {
10 try {
11 t.get();
12 } catch (const std::exception&) {
13 // 处理错误
14 }
15 });
16

获取问卷配置 Internal Link


参数

名称类型必需描述
tenantIdstringYes
idstringYes

响应

返回:GetQuestionConfigResponse

示例

getQuestionConfig 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto questionId = utility::conversions::to_string_t("question-456");
4
5api->getQuestionConfig(tenantId, questionId)
6 .then([](pplx::task<std::shared_ptr<GetQuestionConfigResponse>> task) {
7 try {
8 auto response = task.get();
9 // 根据需要使用响应
10 } catch (const std::exception&) {
11 // 处理错误
12 }
13 });
14

获取问卷配置列表 Internal Link


参数

名称类型必需描述
tenantIdstring
skipdouble

响应

返回: GetQuestionConfigsResponse

示例

getQuestionConfigs 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3boost::optional<double> skip = 10.0;
4api->getQuestionConfigs(tenantId, skip).then([](std::shared_ptr<GetQuestionConfigsResponse> resp){
5 auto config = std::make_shared<GetQuestionConfigsResponse>(*resp);
6});
7

更新问卷配置 Internal Link

参数

名称类型必需描述
tenantIdstringYes
idstringYes
updateQuestionConfigBodyUpdateQuestionConfigBodyYes

响应

返回:APIEmptyResponse

示例

updateQuestionConfig 示例
Copy Copy
1
2UpdateQuestionConfigBody updateBody;
3updateBody.enabled = true;
4updateBody.maxResponses = boost::optional<int>{10};
5updateBody.notes = boost::optional<utility::string_t>{U("Config updated via SDK")};
6
7api->updateQuestionConfig(U("my-tenant-123"), U("config-789"), updateBody)
8 .then([](std::shared_ptr<APIEmptyResponse> resp) {
9 })
10 .then([](pplx::task<void> t) {
11 try { t.get(); } catch (const std::exception&) {}
12 });
13

创建问卷结果 Internal Link

参数

名称类型必填描述
tenantIdstringYes
createQuestionResultBodyCreateQuestionResultBodyYes

响应

返回:CreateQuestionResultResponse

示例

createQuestionResult 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3CreateQuestionResultBody body;
4body.questionId = U("question-456");
5body.result = U("approved");
6body.comment = boost::optional<utility::string_t>(U("Looks good"));
7api->createQuestionResult(tenantId, body)
8 .then([=](pplx::task<std::shared_ptr<CreateQuestionResultResponse>> t) {
9 try {
10 auto resp = t.get();
11 } catch (const std::exception&) {
12 }
13 });
14

删除问卷结果 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: APIEmptyResponse

示例

deleteQuestionResult 示例
Copy Copy
1
2boost::optional<utility::string_t> optTenant = utility::conversions::to_string_t( "my-tenant-123" );
3utility::string_t questionId = utility::conversions::to_string_t( "question-456" );
4
5if ( optTenant )
6{
7 api->deleteQuestionResult( *optTenant, questionId )
8 .then( []( pplx::task<std::shared_ptr<APIEmptyResponse>> t )
9 {
10 try
11 {
12 auto resp = t.get();
13 // 成功处理
14 }
15 catch ( const std::exception& e )
16 {
17 // 错误处理
18 }
19 } );
20}
21

获取问卷结果 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回:GetQuestionResultResponse

示例

getQuestionResult 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto questionId = utility::string_t(U("question-789"));
4boost::optional<utility::string_t> optionalParam = boost::none;
5
6api->getQuestionResult(tenantId, questionId)
7 .then([](pplx::task<std::shared_ptr<GetQuestionResultResponse>> task) {
8 try {
9 auto response = task.get();
10 } catch (const std::exception&) {
11 }
12 });
13

获取问卷结果列表 Internal Link


参数

名称类型必需描述
tenantIdstring
optionsconst GetQuestionResultsOptions&

响应

返回:GetQuestionResultsResponse

示例

getQuestionResults 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetQuestionResultsOptions options;
4options.questionId = boost::optional<utility::string_t>(U("question-456"));
5options.includeDeleted = boost::optional<bool>(false);
6api->getQuestionResults(tenantId, options)
7 .then([](pplx::task<std::shared_ptr<GetQuestionResultsResponse>> t) {
8 auto response = t.get();
9 // 处理响应
10 });
11

更新问卷结果 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
updateQuestionResultBodyUpdateQuestionResultBody

响应

返回: APIEmptyResponse

示例

updateQuestionResult 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto questionId = utility::string_t(U("question-456"));
4UpdateQuestionResultBody body;
5body.result = U("approved");
6body.note = boost::optional<utility::string_t>(U("Reviewed by admin"));
7api->updateQuestionResult(tenantId, questionId, body)
8 .then([](pplx::task<std::shared_ptr<APIEmptyResponse>> t) {
9 try {
10 auto respPtr = std::make_shared<APIEmptyResponse>(*t.get());
11 } catch (const std::exception&) {
12 }
13 });
14

聚合问卷结果 Internal Link

参数

名称类型必需描述
tenantIdstring
optionsconst AggregateQuestionResultsOptions&

响应

返回:AggregateQuestionResultsResponse

示例

aggregateQuestionResults 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3AggregateQuestionResultsOptions opts;
4opts.questionId = utility::conversions::to_string_t("question-789");
5opts.startDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-01T00:00:00Z"), utility::datetime::ISO_8601));
6opts.endDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-31T23:59:59Z"), utility::datetime::ISO_8601));
7api->aggregateQuestionResults(tenantId, opts)
8 .then([](std::shared_ptr<AggregateQuestionResultsResponse> resp) {
9 static_cast<void>(resp);
10 });
11

批量聚合问卷结果 Internal Link

参数

名称类型必需描述
tenantIdstringYes
bulkAggregateQuestionResultsRequestBulkAggregateQuestionResultsRequestYes
forceRecalculateboolNo

响应

返回:BulkAggregateQuestionResultsResponse

示例

bulkAggregateQuestionResults 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3BulkAggregateQuestionResultsRequest request;
4request.questionIds = {
5 utility::conversions::to_string_t("q123"),
6 utility::conversions::to_string_t("q456")
7};
8request.startDate = utility::datetime::from_string(U("2023-01-01T00:00:00Z"));
9request.endDate = utility::datetime::from_string(U("2023-01-31T23:59:59Z"));
10boost::optional<bool> forceRecalc = true;
11api->bulkAggregateQuestionResults(tenantId, request, forceRecalc)
12 .then([](pplx::task<std::shared_ptr<BulkAggregateQuestionResultsResponse>> t) {
13 auto resp = t.get();
14 });
15

将评论与问卷结果合并 Internal Link

参数

名称类型必填描述
tenantIdstring
optionsconst CombineCommentsWithQuestionResultsOptions&

响应

返回: CombineQuestionResultsWithCommentsResponse

示例

combineCommentsWithQuestionResults 示例
Copy Copy
1
2utility::string_t tenantId = utility::string_t("my-tenant-123");
3CombineCommentsWithQuestionResultsOptions options;
4options.questionId = utility::string_t("question-789");
5options.maxComments = boost::optional<int>(50);
6api->combineCommentsWithQuestionResults(tenantId, options).then(
7 [](pplx::task<std::shared_ptr<CombineQuestionResultsWithCommentsResponse>> task){
8 try{
9 auto respPtr = task.get();
10 auto combined = std::make_shared<CombineQuestionResultsWithCommentsResponse>(*respPtr);
11 // 根据需要使用 combined
12 }catch(const std::exception&){
13 }
14 });
15

添加 SSO 用户 Internal Link

参数

名称类型必填描述
tenantIdstring
createAPISSOUserDataCreateAPISSOUserData

响应

返回: AddSSOUserAPIResponse

示例

addSSOUser 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3CreateAPISSOUserData createAPISSOUserData;
4createAPISSOUserData.email = utility::conversions::to_string_t("john.doe@example.com");
5createAPISSOUserData.externalId = utility::conversions::to_string_t("ext-9876");
6createAPISSOUserData.firstName = boost::optional<utility::string_t>(utility::conversions::to_string_t("John"));
7createAPISSOUserData.lastName = boost::optional<utility::string_t>(utility::conversions::to_string_t("Doe"));
8api->addSSOUser(tenantId, createAPISSOUserData)
9 .then([](std::shared_ptr<AddSSOUserAPIResponse> resp) {
10 });
11

删除 SSO 用户 Internal Link


参数

名称类型必填描述
tenantIdstring
idstring
optionsconst DeleteSSOUserOptions&

响应

返回: DeleteSSOUserAPIResponse

示例

deleteSSOUser 示例
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto userId = U("user-456");
4DeleteSSOUserOptions options;
5options.dryRun = boost::optional<bool>(true);
6api->deleteSSOUser(tenantId, userId, options).then([](std::shared_ptr<DeleteSSOUserAPIResponse> resp) {
7 if (resp) {
8 (void)resp;
9 }
10});
11

通过邮箱获取 SSO 用户 Internal Link

参数

名称类型必需描述
tenantIdstring
emailstring

响应

返回: GetSSOUserByEmailAPIResponse

示例

getSSOUserByEmail 示例
Copy Copy
1
2auto correlationId = boost::optional<utility::string_t>(utility::conversions::to_string_t("corr-001"));
3
4api->getSSOUserByEmail(
5 utility::conversions::to_string_t("my-tenant-123"),
6 utility::conversions::to_string_t("user@example.com")
7).then([](pplx::task<std::shared_ptr<GetSSOUserByEmailAPIResponse>> t) {
8 try {
9 auto response = t.get();
10 } catch (const std::exception&) {
11 }
12});
13

通过 ID 获取 SSO 用户 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回:GetSSOUserByIdAPIResponse

示例

getSSOUserById 示例
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto ssoUserId = U("user-789");
4api->getSSOUserById(tenantId, ssoUserId)
5 .then([](std::shared_ptr<GetSSOUserByIdAPIResponse> resp) {
6 boost::optional<utility::string_t> email;
7 if (resp && resp->email) email = resp->email;
8 if (email) {
9 auto e = *email;
10 }
11 });
12

获取 SSO 用户列表 Internal Link

参数

名称类型必需描述
tenantIdstring
skipint32_t

响应

返回: GetSSOUsersResponse

示例

getSSOUsers 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3boost::optional<int32_t> skip = 25;
4api->getSSOUsers(tenantId, skip).then([](pplx::task<std::shared_ptr<GetSSOUsersResponse>> t) {
5 try {
6 auto response = t.get();
7 } catch (const std::exception&) {
8 }
9});
10

部分更新 SSO 用户 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
updateAPISSOUserDataUpdateAPISSOUserData
updateCommentsbool

响应

返回:PatchSSOUserAPIResponse

示例

patchSSOUser 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t userId = U("user-456");
4UpdateAPISSOUserData updateData;
5updateData.email = U("jane.doe@example.com");
6updateData.displayName = U("Jane Doe");
7boost::optional<bool> updateComments = true;
8
9api->patchSSOUser(tenantId, userId, updateData, updateComments)
10 .then([](pplx::task<std::shared_ptr<PatchSSOUserAPIResponse>> t){
11 try{
12 auto resp = t.get();
13 (void)resp;
14 }catch(const std::exception&){
15 }
16 });
17

替换 SSO 用户 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes
updateAPISSOUserDataUpdateAPISSOUserDataYes
updateCommentsboolNo

响应

返回:PutSSOUserAPIResponse

示例

putSSOUser 示例
Copy Copy
1
2UpdateAPISSOUserData userData;
3userData.email = utility::conversions::to_string_t("alice@example.com");
4userData.first_name = utility::conversions::to_string_t("Alice");
5userData.last_name = utility::conversions::to_string_t("Smith");
6userData.role = utility::conversions::to_string_t("moderator");
7
8api->putSSOUser(
9 utility::conversions::to_string_t("my-tenant-123"),
10 utility::conversions::to_string_t("alice.smith"),
11 userData,
12 boost::optional<bool>(true)
13).then([](pplx::task<std::shared_ptr<PutSSOUserAPIResponse>> t) {
14 auto response = t.get();
15});
16

创建订阅 Internal Link

参数

名称类型必填描述
tenantIdstring
createAPIUserSubscriptionDataCreateAPIUserSubscriptionData

响应

返回:CreateSubscriptionAPIResponse

示例

createSubscription 示例
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3CreateAPIUserSubscriptionData subscriptionData;
4subscriptionData.email = U("user@example.com");
5subscriptionData.planId = U("premium-plan");
6subscriptionData.couponCode = boost::optional<utility::string_t>(U("WELCOME10"));
7api->createSubscription(tenantId, subscriptionData)
8 .then([](pplx::task<std::shared_ptr<CreateSubscriptionAPIResponse>> task) {
9 try {
10 auto response = task.get();
11 } catch (const std::exception&) {
12 }
13 });
14

删除订阅 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
userIdstring

响应

返回:DeleteSubscriptionAPIResponse

示例

deleteSubscription 示例
Copy Copy
1
2api->deleteSubscription(utility::string_t(U("my-tenant-123")), utility::string_t(U("sub-456")), boost::optional<utility::string_t>(utility::string_t(U("user@example.com"))))
3 .then([](std::shared_ptr<DeleteSubscriptionAPIResponse> resp){
4 if (resp) {
5 }
6 });
7

获取订阅 Internal Link

参数

名称类型必需描述
tenantIdstring
userIdstring

响应

返回:GetSubscriptionsAPIResponse

示例

getSubscriptions 示例
Copy Copy
1
2auto tenant = utility::conversions::to_string_t("my-tenant-123");
3boost::optional<utility::string_t> user = utility::conversions::to_string_t("user@example.com");
4
5api->getSubscriptions(tenant, user).then(
6 [](pplx::task<std::shared_ptr<GetSubscriptionsAPIResponse>> t) {
7 try {
8 auto response = t.get();
9 // 处理响应
10 } catch (const std::exception& e) {
11 // 处理错误
12 }
13 }
14);
15

更新订阅 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes
updateAPIUserSubscriptionDataUpdateAPIUserSubscriptionDataYes
userIdstringNo

响应

Returns: UpdateSubscriptionAPIResponse

示例

updateSubscription 示例
Copy Copy
1
2UpdateAPIUserSubscriptionData subscriptionData;
3subscriptionData.plan = utility::conversions::to_string_t("premium");
4subscriptionData.active = true;
5
6api->updateSubscription(
7 utility::conversions::to_string_t("my-tenant-123"),
8 utility::conversions::to_string_t("sub-987654"),
9 subscriptionData,
10 boost::optional<utility::string_t>(utility::conversions::to_string_t("admin-user-456"))
11).then([](std::shared_ptr<UpdateSubscriptionAPIResponse> response){
12 bool ok = response && response->isSuccess;
13 (void)ok;
14});
15

获取租户每日使用量 Internal Link

参数

名称类型必填描述
tenantIdstring
optionsconst GetTenantDailyUsagesOptions&

响应

返回:GetTenantDailyUsagesResponse

示例

getTenantDailyUsages 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetTenantDailyUsagesOptions opts;
4opts.startDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-01T00:00:00Z")));
5opts.endDate = boost::optional<utility::datetime>(utility::datetime::from_string(U("2023-01-31T23:59:59Z")));
6api->getTenantDailyUsages(tenantId, opts).then([](std::shared_ptr<GetTenantDailyUsagesResponse> resp){
7 auto result = std::make_shared<GetTenantDailyUsagesResponse>(*resp);
8}).wait();
9

创建租户套餐 Internal Link

参数

名称类型必填描述
tenantIdstring
createTenantPackageBodyCreateTenantPackageBody

响应

返回:CreateTenantPackageResponse

示例

createTenantPackage 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3CreateTenantPackageBody body;
4body.name = utility::conversions::to_string_t("Pro Plan");
5body.maxUsers = 100;
6body.expiryDate = boost::optional<utility::datetime>(utility::datetime::utc_now() + std::chrono::hours(24 * 30));
7body.notes = boost::none;
8api->createTenantPackage(tenantId, body).then([](pplx::task<std::shared_ptr<CreateTenantPackageResponse>> t){
9 try{
10 auto resp = t.get();
11 }catch(const std::exception&){
12 }
13});
14

删除租户套餐 Internal Link

参数

名称类型必需描述
tenantIdstringYes
idstringYes

响应

返回: APIEmptyResponse

示例

deleteTenantPackage 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto packageId = utility::conversions::to_string_t("pkg-456");
4boost::optional<utility::string_t> optTenant = tenantId;
5boost::optional<utility::string_t> optPackage = packageId;
6api->deleteTenantPackage(optTenant.value(), optPackage.value())
7 .then([](std::shared_ptr<APIEmptyResponse>){ })
8 .then([](pplx::task<void> t){ try{ t.get(); }catch(const std::exception&){ } });
9

获取租户套餐 Internal Link

参数

名称类型必需描述
tenantIdstringYes
idstringYes

响应

返回: GetTenantPackageResponse

示例

getTenantPackage 示例
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto packageId = U("pkg-456");
4api->getTenantPackage(tenantId, packageId).then([](pplx::task<std::shared_ptr<GetTenantPackageResponse>> task){
5 try{
6 auto resp = task.get();
7 auto result = std::make_shared<GetTenantPackageResponse>(*resp);
8 }catch(...){}
9});
10

获取租户套餐列表 Internal Link

参数

名称类型必需描述
tenantIdstringYes
skipdoubleNo

响应

返回: GetTenantPackagesResponse

示例

getTenantPackages 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3boost::optional<double> skip = 20.0;
4api->getTenantPackages(tenantId, skip)
5 .then([](std::shared_ptr<GetTenantPackagesResponse> resp) {
6 (void)resp;
7 });
8

替换租户套餐 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
idstring
replaceTenantPackageBodyReplaceTenantPackageBody

响应

Returns: APIEmptyResponse

示例

replaceTenantPackage 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto pkgId = utility::conversions::to_string_t("pkg-456");
4ReplaceTenantPackageBody body;
5body.planId = utility::conversions::to_string_t("enterprise");
6body.notes = boost::optional<utility::string_t>(utility::conversions::to_string_t("Upgrade request"));
7api->replaceTenantPackage(tenantId, pkgId, body)
8 .then([](std::shared_ptr<APIEmptyResponse>) { })
9 .then([](pplx::task<void> t) {
10 try { t.get(); } catch (const std::exception&) { }
11 });
12

更新租户套餐 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
updateTenantPackageBodyUpdateTenantPackageBody

响应

返回:APIEmptyResponse

示例

updateTenantPackage 示例
Copy Copy
1
2auto body = std::make_shared<UpdateTenantPackageBody>();
3body->packageId = utility::conversions::to_string_t("premium-plan");
4body->expirationDate = utility::conversions::to_string_t("2025-12-31");
5body->notes = boost::optional<utility::string_t>(utility::conversions::to_string_t("Upgraded package"));
6
7api->updateTenantPackage(utility::conversions::to_string_t("my-tenant-123"),
8 utility::conversions::to_string_t("pkg-456"),
9 body)
10 .then([](pplx::task<std::shared_ptr<APIEmptyResponse>> task) {
11 try {
12 auto response = task.get();
13 // 成功处理
14 } catch (const std::exception& ex) {
15 // 错误处理
16 }
17 });
18

创建租户用户 Internal Link

参数

名称类型必填描述
tenantIdstringYes
createTenantUserBodyCreateTenantUserBodyYes

响应

返回: CreateTenantUserResponse

示例

createTenantUser 示例
Copy Copy
1
2auto body = CreateTenantUserBody{};
3body.email = utility::conversions::to_string_t("newuser@example.com");
4body.firstName = utility::conversions::to_string_t("Alice");
5body.lastName = utility::conversions::to_string_t("Smith");
6body.role = boost::optional<utility::string_t>(utility::conversions::to_string_t("moderator"));
7
8api->createTenantUser(utility::conversions::to_string_t("my-tenant-123"), body)
9 .then([](pplx::task<std::shared_ptr<CreateTenantUserResponse>> task) {
10 try {
11 auto response = task.get();
12 } catch (const std::exception&) {
13 }
14 });
15

删除租户用户 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
optionsconst DeleteTenantUserOptions&

响应

返回:APIEmptyResponse

示例

deleteTenantUser 示例
Copy Copy
1
2DeleteTenantUserOptions options;
3options.reason = boost::optional<utility::string_t>(U("User requested deletion"));
4
5api->deleteTenantUser(U("my-tenant-123"), U("user@example.com"), options)
6 .then([](std::shared_ptr<APIEmptyResponse> resp){
7 (void)resp;
8 });
9

获取租户用户 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回:GetTenantUserResponse

示例

getTenantUser 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto userId = utility::conversions::to_string_t("user@example.com");
4api->getTenantUser(tenantId, userId)
5 .then([](pplx::task<std::shared_ptr<GetTenantUserResponse>> task) {
6 try {
7 auto response = task.get();
8 // 根据需要使用响应
9 } catch (const std::exception&) {
10 // 错误处理
11 }
12 });
13

获取租户用户列表 Internal Link

参数

名称类型必需描述
tenantIdstring
skipdouble

响应

返回: GetTenantUsersResponse

示例

getTenantUsers 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3boost::optional<double> skip = 10;
4
5api->getTenantUsers(tenantId, skip).then([](pplx::task<std::shared_ptr<GetTenantUsersResponse>> t){
6 try {
7 auto resp = t.get();
8 } catch (const std::exception&) {
9 }
10});
11

替换租户用户 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
replaceTenantUserBodyReplaceTenantUserBody
updateCommentsstring

响应

返回:APIEmptyResponse

示例

replaceTenantUser 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto userId = utility::string_t(U("john.doe@example.com"));
4ReplaceTenantUserBody replaceBody;
5replaceBody.email = utility::string_t(U("john.doe@example.com"));
6replaceBody.role = utility::string_t(U("admin"));
7boost::optional<utility::string_t> updateComments = utility::string_t(U("Promoted to admin"));
8api->replaceTenantUser(tenantId, userId, replaceBody, updateComments)
9 .then([](std::shared_ptr<APIEmptyResponse> resp){ });
10

参数

名称类型必填描述
tenantIdstring
idstring
redirectURLstring

响应

返回:APIEmptyResponse

示例

sendLoginLink 示例
Copy Copy
1
2api->sendLoginLink(
3 U("my-tenant-123"),
4 U("user@example.com"),
5 boost::make_optional(U("https://myapp.com/auth/callback"))
6).then([](std::shared_ptr<APIEmptyResponse> resp) {
7});
8

更新租户用户 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
updateTenantUserBodyUpdateTenantUserBody
updateCommentsstring

响应

返回: APIEmptyResponse

示例

updateTenantUser 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t userId = U("user-456");
4UpdateTenantUserBody body;
5body.email = U("john.doe@example.com");
6body.role = U("admin");
7boost::optional<utility::string_t> updateComments = U("Promoted to admin");
8
9api->updateTenantUser(tenantId, userId, body, updateComments)
10 .then([](std::shared_ptr<APIEmptyResponse>){ });
11

创建租户 Internal Link

参数

名称类型必填描述
tenantIdstring
createTenantBodyCreateTenantBody

响应

返回: CreateTenantResponse

示例

createTenant 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3CreateTenantBody body;
4body.setName(utility::conversions::to_string_t("Acme Corp"));
5body.setAdminEmail(utility::conversions::to_string_t("admin@acme.com"));
6body.setPlan(utility::conversions::to_string_t("enterprise"));
7body.setDescription(boost::optional<utility::string_t>(utility::conversions::to_string_t("Primary tenant for Acme")));
8
9api->createTenant(tenantId, body).then([](pplx::task<std::shared_ptr<CreateTenantResponse>> t){
10 auto resp = t.get();
11});
12

删除租户 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
surestring

响应

返回:APIEmptyResponse

示例

deleteTenant 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto userId = utility::conversions::to_string_t("user@example.com");
4boost::optional<utility::string_t> sure = utility::conversions::to_string_t("true");
5api->deleteTenant(tenantId, userId, sure)
6 .then([](pplx::task<std::shared_ptr<APIEmptyResponse>> t){
7 try{
8 auto resp = t.get();
9 auto result = std::make_shared<APIEmptyResponse>(*resp);
10 }catch(const std::exception&){})
11

获取租户 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring

响应

返回: GetTenantResponse

示例

getTenant 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto id = utility::conversions::to_string_t("tenant-admin-456");
4boost::optional<utility::string_t> includeDetails = utility::conversions::to_string_t("full");
5api->getTenant(tenantId, id)
6 .then([](std::shared_ptr<GetTenantResponse> resp) {
7 if (resp) {
8 std::wcout << resp->toString() << std::endl;
9 }
10 });
11

获取租户列表 Internal Link

参数

名称类型必填描述
tenantIdstring
optionsconst GetTenantsOptions&

响应

返回:GetTenantsResponse

示例

getTenants 示例
Copy Copy
1
2GetTenantsOptions options;
3options.includeDeleted = boost::make_optional(false);
4options.searchTerm = boost::make_optional(utility::string_t(U("enterprise")));
5
6api->getTenants(utility::string_t(U("my-tenant-123")), options)
7 .then([](std::shared_ptr<GetTenantsResponse> response) {
8 })
9 .then([](pplx::task<void> t){ try{ t.get(); }catch(...){} });
10

更新租户 Internal Link


参数

名称类型必填描述
tenantIdstring
idstring
updateTenantBodyUpdateTenantBody

响应

返回:APIEmptyResponse

示例

updateTenant 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto recordId = utility::string_t(U("tenant-456"));
4UpdateTenantBody body;
5body.name = boost::optional<utility::string_t>(U("Acme Corp"));
6body.contactEmail = boost::optional<utility::string_t>(U("admin@acme.com"));
7api->updateTenant(tenantId, recordId, body).then([](std::shared_ptr<APIEmptyResponse> resp) {
8 auto log = std::make_shared<utility::string_t>(U("Tenant update succeeded"));
9 (void)resp;
10 (void)log;
11});
12

更改工单状态 Internal Link


参数

名称类型必填描述
tenantIdstringYes
userIdstringYes
idstringYes
changeTicketStateBodyChangeTicketStateBodyYes

响应

返回:ChangeTicketStateResponse

示例

changeTicketState 示例
Copy Copy
1
2auto body = std::make_shared<ChangeTicketStateBody>();
3body->state = U("closed");
4body->comment = boost::optional<utility::string_t>(U("Ticket resolved"));
5api->changeTicketState(U("my-tenant-123"), U("user@example.com"), U("ticket-456"), *body)
6 .then([](std::shared_ptr<ChangeTicketStateResponse>) {});
7

创建工单 Internal Link

参数

名称类型必填描述
tenantIdstring
userIdstring
createTicketBodyCreateTicketBody

响应

返回: CreateTicketResponse

示例

createTicket 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto userId = utility::conversions::to_string_t("john.doe@example.com");
4CreateTicketBody ticketBody;
5ticketBody.setSubject(utility::conversions::to_string_t("Login Issue"));
6ticketBody.setDescription(utility::conversions::to_string_t("Cannot log in after password reset."));
7boost::optional<int> priority = 2;
8ticketBody.setPriority(priority);
9api->createTicket(tenantId, userId, ticketBody).then([](pplx::task<std::shared_ptr<CreateTicketResponse>> task){
10 try{
11 auto response = task.get();
12 // 根据需要使用响应
13 }catch(const std::exception&){
14 // 处理错误
15 }
16});
17

获取工单 Internal Link

参数

名称类型必需描述
tenantIdstring
idstring
userIdstring

响应

返回:GetTicketResponse

示例

getTicket 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t ticketId = U("ticket-789");
4boost::optional<utility::string_t> userId = U("alice@example.com");
5api->getTicket(tenantId, ticketId, userId).then([](pplx::task<std::shared_ptr<GetTicketResponse>> task){
6 try{
7 auto resp = task.get();
8 }catch(const std::exception&){
9 }
10});
11

获取工单列表 Internal Link

参数

名称类型必填描述
tenantIdstring
optionsconst GetTicketsOptions&

响应

返回:GetTicketsResponse

示例

getTickets 示例
Copy Copy
1
2auto options = GetTicketsOptions{};
3options.page = boost::optional<int>(1);
4options.status = boost::optional<utility::string_t>(U("open"));
5api->getTickets(U("my-tenant-123"), options).then([](pplx::task<std::shared_ptr<GetTicketsResponse>> task) {
6 try {
7 auto response = task.get();
8 auto responseCopy = std::make_shared<GetTicketsResponse>(*response);
9 } catch (const std::exception&) {
10 }
11});
12

获取翻译 Internal Link

参数

名称类型必需描述
r_namespacestring
componentstring
optionsconst GetTranslationsOptions&

响应

返回:GetTranslationsResponse

示例

getTranslations 示例
Copy Copy
1
2utility::string_t ns = U("my-tenant-123");
3utility::string_t comp = U("comments");
4auto optsPtr = std::make_shared<GetTranslationsOptions>();
5optsPtr->language = boost::make_optional(U("en"));
6optsPtr->fallback = boost::none;
7api->getTranslations(ns, comp, *optsPtr)
8 .then([](pplx::task<std::shared_ptr<GetTranslationsResponse>> t) {
9 try {
10 auto resp = t.get();
11 } catch (const std::exception& e) {
12 }
13 });
14

上传图片 Internal Link

Upload and resize an image

参数

NameTypeRequiredDescription
tenantIdstringYes
fileHttpContentYes
optionsconst UploadImageOptions&Yes

响应

Returns: UploadImageResponse

示例

uploadImage 示例
Copy Copy
1
2auto fileStream = concurrency::streams::fstream::open_istream(U("avatar.png"), std::ios::in).get();
3HttpContent file(fileStream, U("image/png"));
4UploadImageOptions options;
5options.description = boost::optional<utility::string_t>(U("Profile picture"));
6options.width = boost::optional<int>(256);
7options.height = boost::optional<int>(256);
8api->uploadImage(U("my-tenant-123"), file, options).then([](pplx::task<std::shared_ptr<UploadImageResponse>> t){
9 auto resp = t.get();
10});
11

通过 ID 获取用户徽章进度 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes

响应

返回: APIGetUserBadgeProgressResponse

示例

getUserBadgeProgressById 示例
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto userId = U("user-456");
4api->getUserBadgeProgressById(tenantId, userId)
5 .then([=](pplx::task<std::shared_ptr<APIGetUserBadgeProgressResponse>> t){
6 try{
7 auto resp = t.get();
8 boost::optional<std::shared_ptr<APIGetUserBadgeProgressResponse>> optResp = resp;
9 if(optResp){}
10 }catch(const std::exception&){}
11 });
12

通过用户 ID 获取用户徽章进度 Internal Link

参数

名称类型必填描述
tenantIdstring
userIdstring

响应

返回: APIGetUserBadgeProgressResponse

示例

getUserBadgeProgressByUserId 示例
Copy Copy
1
2boost::optional<std::shared_ptr<APIGetUserBadgeProgressResponse>> responseOpt;
3api->getUserBadgeProgressByUserId(
4 utility::conversions::to_string_t("my-tenant-123"),
5 utility::conversions::to_string_t("user@example.com"))
6 .then([&responseOpt](pplx::task<std::shared_ptr<APIGetUserBadgeProgressResponse>> t) {
7 try {
8 responseOpt = t.get();
9 } catch (...) {
10 responseOpt = boost::none;
11 }
12 });
13

获取用户徽章进度列表 Internal Link

参数

名称类型必需描述
tenantIdstring
optionsconst GetUserBadgeProgressListOptions&

响应

返回:APIGetUserBadgeProgressListResponse

示例

getUserBadgeProgressList 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3GetUserBadgeProgressListOptions options;
4options.userId = U("user@example.com");
5options.page = boost::optional<int>(1);
6options.pageSize = boost::optional<int>(20);
7api->getUserBadgeProgressList(tenantId, options)
8 .then([](std::shared_ptr<APIGetUserBadgeProgressListResponse> resp) {
9 if (!resp) return;
10 for (const auto& badge : resp->badges) {
11 // process badge
12 }
13 });
14

创建用户徽章 Internal Link

参数

名称类型必填描述
tenantIdstring
createUserBadgeParamsCreateUserBadgeParams

响应

返回:APICreateUserBadgeResponse

示例

createUserBadge 示例
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3CreateUserBadgeParams badgeParams;
4badgeParams.userEmail = U("user@example.com");
5badgeParams.badgeCode = U("gold");
6badgeParams.expirationDate = boost::optional<utility::datetime>(utility::datetime::utc_now() + utility::datetime::from_seconds(2592000));
7api->createUserBadge(tenantId, badgeParams).then([](std::shared_ptr<APICreateUserBadgeResponse> resp){
8 if (resp && resp->success) {
9 auto result = std::make_shared<APICreateUserBadgeResponse>(*resp);
10 }
11});
12

删除用户徽章 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes

响应

返回: APIEmptySuccessResponse

示例

deleteUserBadge 示例
Copy Copy
1
2auto tenantId = boost::optional<utility::string_t>(U("my-tenant-123"));
3auto badgeId = utility::string_t(U("badge-789"));
4api->deleteUserBadge(tenantId.value(), badgeId)
5 .then([](std::shared_ptr<APIEmptySuccessResponse> resp){
6 auto copy = std::make_shared<APIEmptySuccessResponse>(*resp);
7 })
8 .then([](pplx::task<void> t){
9 try{ t.get(); } catch(const std::exception&){ }
10 });
11

获取用户徽章 Internal Link

参数

名称类型必填描述
tenantIdstringYes
idstringYes

响应

返回:APIGetUserBadgeResponse

示例

getUserBadge 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t userId = U("user-456");
4api->getUserBadge(tenantId, userId).then([](pplx::task<std::shared_ptr<APIGetUserBadgeResponse>> t){
5 try{
6 auto resp = t.get();
7 boost::optional<std::string> badgeUrl = resp->badge_url ? boost::optional<std::string>(*resp->badge_url) : boost::none;
8 }catch(const std::exception&){
9 }
10});
11

获取用户徽章列表 Internal Link

参数

名称类型必需描述
tenantIdstring
optionsconst GetUserBadgesOptions&

响应

返回:APIGetUserBadgesResponse

示例

getUserBadges 示例
Copy Copy
1
2GetUserBadgesOptions opts;
3opts.userId = boost::make_optional(U("user@example.com"));
4opts.includeExpired = boost::make_optional(false);
5
6api->getUserBadges(U("my-tenant-123"), opts)
7 .then([](pplx::task<std::shared_ptr<APIGetUserBadgesResponse>> t) {
8 try {
9 auto response = t.get();
10 } catch (const std::exception&) {
11 }
12 });
13

更新用户徽章 Internal Link

参数

名称类型必需描述
tenantIdstringYes
idstringYes
updateUserBadgeParamsUpdateUserBadgeParamsYes

响应

返回: APIEmptySuccessResponse

示例

updateUserBadge 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto userId = utility::conversions::to_string_t("user@example.com");
4UpdateUserBadgeParams params;
5params.badgeId = utility::conversions::to_string_t("vip-badge");
6params.expiration = boost::optional<utility::datetime>(utility::datetime::from_string(U("2024-12-31T23:59:59Z")));
7api->updateUserBadge(tenantId, userId, params)
8 .then([](std::shared_ptr<APIEmptySuccessResponse> resp){
9 std::cout << "Badge updated successfully\n";
10 })
11 .catch([](std::exception const& e){
12 std::cerr << "Error updating badge: " << e.what() << "\n";
13 });
14

获取用户通知计数 Internal Link

参数

NameTypeRequiredDescription
tenantIdstring
ssostring

响应

返回:GetUserNotificationCountResponse

示例

getUserNotificationCount 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3boost::optional<utility::string_t> sso = utility::conversions::to_string_t("user@example.com");
4api->getUserNotificationCount(tenantId, sso).then([](pplx::task<std::shared_ptr<GetUserNotificationCountResponse>> t){
5 try{
6 auto resp = t.get();
7 // 根据需要使用 resp
8 }catch(const std::exception&){
9 // 处理错误
10 }
11});
12

获取用户通知 Internal Link

参数

名称类型必需描述
tenantIdstring
optionsconst GetUserNotificationsOptions&

响应

返回:GetMyNotificationsResponse

示例

getUserNotifications 示例
Copy Copy
1
2utility::string_t tenantId = utility::string_t("my-tenant-123");
3GetUserNotificationsOptions options;
4options.limit = boost::optional<int>(20);
5options.unreadOnly = boost::optional<bool>(true);
6api->getUserNotifications(tenantId, options)
7 .then([](pplx::task<std::shared_ptr<GetMyNotificationsResponse>> task){
8 auto resp = task.get();
9 auto notifications = std::make_shared<GetMyNotificationsResponse>(*resp);
10 });
11

重置用户通知计数 Internal Link


参数

名称类型必填描述
tenantIdstring
ssostring

响应

返回:ResetUserNotificationsResponse

示例

resetUserNotificationCount 示例
Copy Copy
1
2auto resetTask = api->resetUserNotificationCount(
3 U("my-tenant-123"),
4 boost::optional<utility::string_t>(U("user@example.com"))
5).then([](std::shared_ptr<ResetUserNotificationsResponse> resp){
6});
7

重置用户通知 Internal Link

参数

名称类型必填描述
tenantIdstringYes
optionsconst ResetUserNotificationsOptions&Yes

响应

返回: ResetUserNotificationsResponse

示例

resetUserNotifications 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3ResetUserNotificationsOptions options;
4options.email = boost::optional<utility::string_t>(U("user@example.com"));
5api->resetUserNotifications(tenantId, options)
6 .then([](std::shared_ptr<ResetUserNotificationsResponse> resp) {
7 // Process response
8 });
9

更新用户评论订阅状态 Internal Link


为特定评论启用或禁用通知。

参数

名称类型必填描述
tenantIdstring
notificationIdstring
optedInOrOutstring
commentIdstring
ssostring

响应

返回:UpdateUserNotificationCommentSubscriptionStatusResponse

示例

updateUserNotificationCommentSubscriptionStatus 示例
Copy Copy
1
2auto updateTask = api->updateUserNotificationCommentSubscriptionStatus(
3 utility::conversions::to_string_t("my-tenant-123"),
4 utility::conversions::to_string_t("notif-456"),
5 utility::conversions::to_string_t("optedIn"),
6 utility::conversions::to_string_t("comment-789"),
7 boost::optional<utility::string_t>(utility::conversions::to_string_t("sso-token-abc"))
8).then([](std::shared_ptr<UpdateUserNotificationCommentSubscriptionStatusResponse> resp){
9 (void)resp;
10});
11

更新用户页面订阅状态 Internal Link

启用或禁用页面的通知。当用户订阅页面时,会为新的根评论创建通知,并且

Parameters

NameTypeRequiredDescription
tenantIdstringYes
urlIdstringYes
urlstringYes
pageTitlestringYes
subscribedOrUnsubscribedstringYes
ssostringNo

Response

返回: UpdateUserNotificationPageSubscriptionStatusResponse

Example

updateUserNotificationPageSubscriptionStatus 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t urlId = U("page-456");
4utility::string_t url = U("https://example.com/articles/awesome-article");
5utility::string_t pageTitle = U("Awesome Article");
6utility::string_t subscription = U("subscribed");
7boost::optional<utility::string_t> sso = boost::make_optional<utility::string_t>(U("sso-token-789"));
8
9api->updateUserNotificationPageSubscriptionStatus(tenantId, urlId, url, pageTitle, subscription, sso)
10 .then([](std::shared_ptr<UpdateUserNotificationPageSubscriptionStatusResponse> resp) {
11 // 如有需要,处理 resp
12 });
13

更新用户通知状态 Internal Link

参数

名称类型必填描述
tenantIdstring
notificationIdstring
newStatusstring
ssostring

响应

返回:UpdateUserNotificationStatusResponse

示例

updateUserNotificationStatus 示例
Copy Copy
1
2api->updateUserNotificationStatus(
3 U("my-tenant-123"),
4 U("notif-456"),
5 U("read"),
6 boost::optional<utility::string_t>(U("sso-token-abc"))
7).then([](std::shared_ptr<UpdateUserNotificationStatusResponse> resp) {
8}).wait();
9

获取用户在线状态 Internal Link

参数

名称类型必填描述
tenantIdstringYes
urlIdWSstringYes
userIdsstringYes

响应

返回:GetUserPresenceStatusesResponse

示例

getUserPresenceStatuses 示例
Copy Copy
1
2auto tenantId = U("my-tenant-123");
3auto urlIdWS = U("article-789");
4auto userIds = U("alice@example.com,bob@example.com");
5boost::optional<utility::string_t> optionalFilter = boost::none;
6api->getUserPresenceStatuses(tenantId, urlIdWS, userIds)
7 .then([](pplx::task<std::shared_ptr<GetUserPresenceStatusesResponse>> t){
8 try{
9 auto response = t.get();
10 }catch(...){
11 }
12 });
13

搜索用户 Internal Link

参数

名称类型必填描述
tenantIdstringYes
urlIdstringYes
optionsconst SearchUsersOptions&Yes

响应

返回:SearchUsersResult

示例

searchUsers 示例
Copy Copy
1
2utility::string_t tenantId = U("my-tenant-123");
3utility::string_t urlId = U("article-456");
4SearchUsersOptions options;
5options.query = U("john.doe@example.com");
6options.page = boost::optional<int>(1);
7options.pageSize = boost::optional<int>(20);
8api->searchUsers(tenantId, urlId, options).then([](pplx::task<std::shared_ptr<SearchUsersResult>> task){
9 try{
10 auto result = task.get();
11 }catch(const std::exception&){}
12});
13

获取用户 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring

响应

返回:GetUserResponse

示例

getUser 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto userId = utility::conversions::to_string_t("user-789");
4boost::optional<utility::string_t> optTag = boost::none;
5
6api->getUser(tenantId, userId)
7 .then([=](pplx::task<std::shared_ptr<GetUserResponse>> task) {
8 try {
9 auto response = task.get();
10 if (!response) {
11 response = std::make_shared<GetUserResponse>();
12 }
13 // 根据需要处理响应
14 } catch (const std::exception&) {
15 // 处理错误
16 }
17 });
18

创建投票 Internal Link

参数

名称类型必填描述
tenantIdstring
commentIdstring
directionstring
optionsconst CreateVoteOptions&

响应

返回:VoteResponse

示例

createVote 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto commentId = utility::conversions::to_string_t("cmt-456");
4auto direction = utility::conversions::to_string_t("up");
5auto optionsPtr = std::make_shared<CreateVoteOptions>();
6optionsPtr->userId = utility::conversions::to_string_t("user-789");
7optionsPtr->ipAddress = boost::optional<utility::string_t>(utility::conversions::to_string_t("192.168.1.100"));
8api->createVote(tenantId, commentId, direction, *optionsPtr)
9 .then([](std::shared_ptr<VoteResponse> resp){});
10

删除投票 Internal Link

参数

名称类型必填描述
tenantIdstring
idstring
editKeystring

响应

返回:VoteDeleteResponse

示例

deleteVote 示例
Copy Copy
1
2auto tenantId = utility::conversions::to_string_t("my-tenant-123");
3auto voteId = utility::conversions::to_string_t("vote-9876");
4boost::optional<utility::string_t> editKey = utility::conversions::to_string_t("edit-abc123");
5
6api->deleteVote(tenantId, voteId, editKey).then([](pplx::task<std::shared_ptr<VoteDeleteResponse>> task) {
7 try {
8 auto response = task.get();
9 // 根据需要处理响应
10 } catch (const std::exception&) {
11 // 处理错误
12 }
13});
14

获取投票 Internal Link

参数

名称类型必填描述
tenantIdstring
urlIdstring

响应

Returns: GetVotesResponse

示例

getVotes 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto urlId = utility::string_t(U("article-456"));
4boost::optional<utility::string_t> extraHeader = boost::none;
5
6api->getVotes(tenantId, urlId).then([=](pplx::task<std::shared_ptr<GetVotesResponse>> task) {
7 try {
8 auto original = task.get();
9 auto response = std::make_shared<GetVotesResponse>(*original);
10 } catch (...) {
11 // 错误处理
12 }
13});
14

获取用户的投票 Internal Link

参数

名称类型必填描述
tenantIdstringYes
urlIdstringYes
optionsconst GetVotesForUserOptions&Yes

响应

返回:GetVotesForUserResponse

示例

getVotesForUser 示例
Copy Copy
1
2auto tenantId = utility::string_t(U("my-tenant-123"));
3auto urlId = utility::string_t(U("post-456"));
4GetVotesForUserOptions options;
5options.page = boost::optional<int>(2);
6options.pageSize = boost::optional<int>(50);
7api->getVotesForUser(tenantId, urlId, options).then([](std::shared_ptr<GetVotesForUserResponse> response) {
8 if (response) {
9 // handle response, e.g., iterate votes
10 }
11});
12

需要帮助?

如果您在使用 C++ SDK 时遇到任何问题或有任何疑问,请:

贡献

欢迎贡献!请访问 GitHub 仓库 查看贡献指南。