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 elementolastModified
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 | Sí |
El desarrollador actualiza la respuesta a la opinión original | No |
El usuario actualiza la opinión y el desarrollador modifica la respuesta | Sí |
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 horaSolicitudes 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.