Responde a las opiniones

La API de Google Play Developer Reply to Reviews te permite ver y responder los comentarios de los usuarios sobre tu app. Puedes usar esta API para interactuar con los usuarios directamente dentro de tu kit de herramientas existente de asistencia al cliente, como un sistema de CRM.

La API de Reply to Reviews te permite acceder únicamente a los comentarios de las versiones de producción de tu app. Si quieres ver comentarios de las versiones alfa o beta de la app, utiliza Google Play Console. Además, ten en cuenta que la API solo muestra las opiniones que incluyen comentarios. Si un usuario califica la app, pero no proporciona un comentario, no podrás acceder a sus comentarios desde la API.

Cómo obtener acceso

Para trabajar con la API de Reply to Reviews, debes proporcionar autorización con un cliente de OAuth o una cuenta de servicio. Si usas una cuenta de servicio, habilita el permiso "Responder a opiniones" en ella. Si quieres obtener más información para establecer el acceso autorizado a esta API, consulta Cómo configurar el acceso de clientes a la API.

Cómo recuperar opiniones

Cuando usas la API de Reply to Reviews, puedes recuperar una lista de todas las opiniones recientes sobre tu app, o bien puedes ver una opinión individual.

Cómo recuperar un conjunto de opiniones

Utiliza el método GET para solicitar una lista de opiniones sobre tu app. En la solicitud, incluye el nombre de paquete completamente calificado de tu app (por ejemplo, com.google.android.apps.maps) y el token de autorización que recibiste cuando obtuviste acceso a la API.

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

La respuesta es una cadena JSON que contiene una lista de opiniones sobre tu app. El primer resultado de la lista corresponde al comentario que se creó o modificó en la fecha más reciente.

En el siguiente ejemplo, la primera opinión muestra metadatos que aparecen en todos los resultados, y la segunda muestra metadatos que aparecen solo en algunos resultados:

{
  "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"
  }
}

Cada resultado incluye los siguientes metadatos:

reviewId
Identifica esta opinión de forma única. También indica la opinión de un usuario específico, dado que los usuarios solo pueden escribir una opinión para una app en particular.
authorName

Corresponde al nombre del usuario que escribe la opinión.

Nota: En casos excepcionales, es posible que authorName no aparezca en un resultado determinado.

comments

Es una lista que incluye los comentarios del usuario sobre la app. Si esta opinión incluye un título, este y el texto del cuerpo de la opinión aparecen en el elemento text, y un carácter de tabulación separa el primero del segundo. El elemento lastModified indica la hora a la que el usuario envió su opinión por última vez.

Si ya respondiste esta opinión, tus comentarios aparecerán como el segundo elemento de la lista de comentarios.

starRating

Indica la evaluación que le otorgó el usuario a tu app en una escala del 1 al 5. Una puntuación de 5 indica que el usuario está muy satisfecho con la app.

De forma predeterminada, aparecen 10 opiniones en cada página. Puedes configurar el parámetro maxResults en la solicitud para mostrar hasta 100 opiniones por página.

Si la lista de opiniones continúa en otra página, la API incluye un elemento tokenPagination en la respuesta. Cuando solicites la siguiente página de opiniones, deberás incluir el elemento token. Configura el valor de este elemento con nextPageToken, que aparece en la respuesta original.

Nota: Solo puedes recuperar las opiniones que los usuarios hayan creado o modificado en la última semana. Si quieres recuperar todas las opiniones de tu app desde el principio, puedes descargarlas como un archivo CSV desde Google Play Console.

El siguiente ejemplo de una solicitud de GET muestra la siguiente página de opiniones. En esta solicitud, se supone que la página actual de opiniones (como se muestra en la respuesta de la solicitud anterior) contiene un valor de "12334566" para nextPageToken. La solicitud también indica que la página siguiente debe mostrar hasta 50 opiniones.

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

Cómo recuperar una opinión individual

También puedes usar el método GET para recuperar una opinión individual. Debes proporcionar la misma URL que la que se usó para recuperar un conjunto de opiniones, excepto que también tienes que incluir el elemento review_id correspondiente a la opinión que deseas ver:

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

La respuesta correspondiente es una cadena JSON que incluye contenido y metadatos de una sola opinión:

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

Cómo traducir el texto de las opiniones

El texto de las opiniones se puede traducir automáticamente antes de que lo muestre la API de opiniones. Cuando recuperes una lista de opiniones o una individual, agrega un parámetro translationLanguage a la búsqueda. Por ejemplo:

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

El parámetro translationLanguage puede especificar un idioma con o sin país. Por ejemplo, tanto "es" como "es_MX" son opciones válidas.

Si especificas un idioma de traducción diferente del que se usa en el texto original, el sistema mostrará el texto traducido en la propiedad text y el original en originalText. Por ejemplo:

    {
      "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!"
          }
        }
      ]
    }

Cómo responder a las opiniones

También puedes responder a las opiniones de los usuarios de tu app para interactuar con ellos. Después de que envíes la respuesta, el usuario recibirá una notificación en la que se indicará que respondiste sus comentarios.

No se recomienda usar respuestas automáticas para las opiniones con la intención de actualizar esas respuestas de forma manual en otro momento. Además, aunque puedes responder a una opinión tantas veces como quieras, el usuario recibirá una notificación solo después de la primera vez que respondas a una opinión creada o modificada. En la siguiente tabla, se muestra cómo se notifica a los usuarios durante las interacciones con ellos:

Interacción entre el usuario y el desarrollador ¿Se envía una notificación al usuario?
El usuario escribe la opinión y el desarrollador envía una respuesta
El desarrollador actualiza la respuesta a la opinión original No
El usuario actualiza la opinión y el desarrollador modifica la respuesta

Nota: Debido a que tus respuestas a las opiniones aparecen públicamente en la página de la tienda de aplicaciones, es importante que no incluyas información sensible sobre los usuarios cuando escribas estas respuestas.

Para enviar la respuesta a la opinión de un usuario, usa el método POST. En tu solicitud, indica que Content-Type es application/json y, además, incluye un documento JSON que contenga tu respuesta:

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!"
}

Nota: El texto de replyText que incluyas con tu solicitud de POST puede contener un máximo de 350 caracteres. Debes usar texto sin formato en la respuesta; se quitan las etiquetas HTML con formato válido y no se incluyen en el recuento de caracteres de tu respuesta. Sin embargo, se conserva el contenido que hayas colocado dentro de etiquetas HTML con formato válido.

Si tu solicitud se procesa correctamente, recibirás la siguiente cadena JSON como respuesta. El elemento lastEdited indica la hora a la que la API registra tu respuesta a la opinión del usuario.

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

Sin embargo, si tu solicitud de POST no es válida, la respuesta muestra uno de los siguientes códigos de error:

400 Bad Reply Request
Falta el texto de replyText o es demasiado largo.
404 Not Found
No existe la opinión con el review_id especificado.

Cuotas

Como cortesía para otros desarrolladores, la API de Reply to Reviews establece varias cuotas. Estas cuotas se aplican por app de manera independiente:

  • Solicitudes de GET (para recuperar listas y opiniones individuales): 200 por hora

  • Solicitudes de POST (para responder a opiniones): 2,000 por día

Si tu app necesita recuperar o responder una cantidad de opiniones más alta de la que permiten estas cuotas, envía una solicitud para aumentar la cuota de tu app.