回复评价

借助 Google Play Developer Reply to Reviews API,您可以查看用户对您应用的反馈并对其进行回复。您可以使用该 API 直接在您现有的客户服务工具包(例如 CRM 系统)中与用户互动。

借助 Reply to Reviews API,您只可访问正式版应用的相关反馈。如果您想查看有关应用的 Alpha 版或 Beta 版的反馈,请改用 Google Play 管理中心。另外请注意,该 API 仅显示包含评论的评价。如果用户仅对您的应用评分,但未提供评论,则无法通过该 API 访问其反馈。

获得访问权限

如需使用 Reply to Reviews API,您需要使用 OAuth 客户端或服务帐号进行授权。如果您使用的是服务帐号,请在此帐号中启用“回复评价”权限。如需详细了解如何建立对该 API 的授权访问权限,请参阅设置 API 访问客户端

检索评价

使用 Reply to Reviews API 时,您可以检索针对您应用的所有最新评价,也可以查看单个评价。

检索一组评价

使用 GET 方法请求检索您应用的评价列表。在请求中包含您应用的完全限定软件包名称(如 com.google.android.apps.maps),以及您在获取 API 访问权限时收到的授权令牌。

GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews?
access_token=your_auth_token

响应是一个 JSON 字符串,其中包含您应用的评价列表。列表中的第一个结果显示的是最新创建或修改的用户评论。

在以下示例中,第一条评价展示了所有结果共通的元数据,第二条评价展示了仅某些结果具备的元数据:

{
  "reviews": [
    {
      "reviewId": "12345678",
      "authorName": "Jane Bloggs",
      "comments": [
        {
          "userComment": {
            "text": "This is the best app ever!",
            "lastModified": {
              "seconds": "1443676826",
              "nanos": 713000000
            },
            "starRating": 5
          }
        }
      ]
    },
    {
      "reviewId": "11223344",
      "authorName": "John Doe",
      "comments": [
        {
          "userComment": {
            "text": "I love using this app!",
            "lastModified": {
              "seconds": "141582134",
              "nanos": 213000000
            },
            "starRating": 5,
            "reviewerLanguage": "en",
            "device": "trltecan",
            "androidOsVersion": 21,
            "appVersionCode": 12345,
            "appVersionName": "1.2.3",
            "thumbsUpCount": 10,
            "thumbsDownCount": 3,
            "deviceMetadata": {
              "productName": "E5333 (Xperia™ C4 Dual)",
              "manufacturer": "Sony",
              "deviceClass": "phone",
              "screenWidthPx": 1080,
              "screenHeightPx": 1920,
              "nativePlatform": "armeabi-v7a,armeabi,arm64-v8a",
              "screenDensityDpi": 480,
              "glEsVersion": 196608,
              "cpuModel": "MT6752",
              "cpuMake": "Mediatek",
              "ramMb": 2048
            }
          }
        },
        {
          "developerComment": {
            "text": "That's great to hear!",
            "lastModified": {
              "seconds": "1423101467",
              "nanos": 813000000
            }
          }
        }
      ]
    }
  ],
  "tokenPagination": {
    "nextPageToken": "12334566"
  }
}

每个结果都包含以下元数据:

reviewId
独一无二地标识相应评价。它还可指示特定用户的评价,因为用户对某个特定应用只能撰写一条评价。
authorName

撰写评价的用户的名称。

注意:在极少数情况下,结果可能不具备 authorName

comments

一个列表,其中包含用户对应用的反馈。如果该评价包含标题,那么相应的标题和评价正文都会显示在 text 元素中,并由制表符将标题和正文分开。lastModified 元素指示用户最近一次提交评价的时间。

如果您已回复该评价,您的回复会显示为评论列表中的第二个元素。

starRating

用户对您应用的评分(评分范围为 1 到 5 分)。5 分表示用户对您的应用非常满意。

默认情况下,每个页面会显示 10 条评价。通过在请求中设置 maxResults 参数,您可以让每个页面最多显示 100 条评价。

如果评价列表延续到另一个页面上,该 API 会在响应中包含 tokenPagination 元素。请求检索下一评价页面时,请包含 token 元素。将该元素的值设为 nextPageToken 值(原始响应中给出的值)。

注意:您只能检索用户在过去一周内创建或修改的评价。如果您想检索您的应用自发布以来收到的所有评价,您可以使用 Google Play 管理中心将这些评价下载为 CSV 文件

以下 GET 请求示例会显示下一个评价页面。该请求假定当前评价页面(如上述请求响应中所示)包含 nextPageToken"12334566"。该请求还指示下一页最多应显示 50 条评价。

GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews?
access_token=your_auth_token&token=12334566&maxResults=50

检索单个评价

您还可以使用 GET 方法来检索单个评价。您需要提供检索一组评价时所用的相同网址,但还需要包含与要查看的评价对应的 review_id

GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews/
review_id?access_token=your_auth_token

相应的响应是一个 JSON 字符串,其中包含单个评价的内容和元数据:

{
  "reviewId": "87654321",
  "authorName": "Joan Smith",
  "comments": [
    {
      "userComment": {
        "text": "This app is awesome!",
        "lastModified": {
          "seconds": "1452114723",
          "nanos": 913000000
        },
        "starRating": 5
      }
    }
  ]
}

翻译评价文字

系统可在从 Reviews API 返回评价文字之前自动翻译相应文字。在检索评价列表或单个评价时,请为查询添加 translationLanguage 参数。例如:

GET https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews?
access_token=your_auth_token&translationLanguage=en

translationLanguage 参数可以指定为包含或不包含国家/地区代码的语言代码。例如,“en”和“en_GB”都是有效的。

如果您指定的翻译语言与原文不同,系统便会在 text 属性中返回译文,并在 originalText 属性中返回原文。示例如下:

    {
      "reviewId": "12345678",
      "authorName": "Jane Bloggs",
      "comments": [
        {
          "userComment": {
            "text": "This is the best app ever!",
            "lastModified": {
              "seconds": "1443676826",
              "nanos": 713000000
            },
            "starRating": 5,
            "originalText": "Dies ist die beste App überhaupt!"
          }
        }
      ]
    }

回复评价

您还可以通过回复评价来与您应用的用户进行互动。在您提交回复后,用户会收到通知,表明您已回复其反馈。

我们不建议您对评价使用自动回复(打算在日后手动更新相应回复)。此外,虽然您可以根据需要多次回复同一条评价,但只有您首次回复所创建或修改的评价时,用户才会收到通知。下表说明了用户在您与其互动期间是如何收到通知的:

用户-开发者互动 向用户发送通知?
用户撰写评价;开发者提交回复
开发者更新对原始评价的回复
用户更新评价;开发者更新回复

注意:由于您对评价的回复会公开显示在应用商店页面上,因此在撰写回复时,请勿包含关于用户的敏感信息。

如需针对用户评价提交回复,请使用 POST 方法。在您的请求中,指明 Content-Typeapplication/json,并添加包含您的回复内容的 JSON 文档:

POST https://www.googleapis.com/androidpublisher/v3/applications/your_package_name/reviews/
review_id:reply?access_token=your_access_token
Content-Type: application/json

{
  "replyText": "Thanks for your feedback!"
}

注意:您在 POST 请求中添加的 replyText 最多可包含 350 个字符。您应该在回复中使用纯文本;系统会移除格式正确的 HTML 标记,并且不会将其计入您回复的字符数量。不过,系统会保留您在格式正确的 HTML 标记内放置的内容。

如果请求成功,您会收到以下 JSON 字符串作为响应。lastEdited 元素指示 API 记录您对用户评价做出回复的时间点。

{
  "result": {
    "replyText": "Thanks for your feedback!",
    "lastEdited": {
      "seconds": "1453978803",
      "nanos": 796000000
    }
  }
}

不过,如果您的 POST 请求无效,该响应便会改为显示以下某一错误代码:

400 Bad Reply Request
replyText 太长或缺失。
404 Not Found
具有指定 review_id 的评价不存在。

配额

为了方便其他开发者,我们会对 Reply to Reviews API 实施配额限制。这些配额是针对各个应用单独实施的:

  • GET 请求(用于检索评价列表和单个评价)- 每小时 60 个

  • POST 请求(用于回复评价)- 每天 500 个

如果您的应用需要检索或回复的评价数量超出这些配额所允许的数量,请提交申请以提高您应用的配额。