Responda a avaliações e depois edite ou arquive uma resposta
Encontre avaliações que aceitam resposta do proprietário, responda, confirme o recebimento na plataforma de publicação e edite ou arquive a resposta.
Uma resposta do proprietário é publicada na plataforma de publicação em seu nome. A API a aceita imediatamente e a entrega de forma assíncrona; a sequência é: escolher uma avaliação que possa ser respondida, publicar a resposta e depois confirmar com uma nova consulta.
1. Selecione avaliações que possam ser respondidas
Liste as avaliações do local e mantenha aquelas em que canRespond é true e responded é false. O filtro responseStatus=["PENDING"] faz a segunda verificação no servidor; o valor JSON precisa ser codificado para URL, o que é feito por --data-urlencode.
curl -G "https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/reviews" \-H "Authorization: API $LISTINGSAPI_KEY" \--data-urlencode 'responseStatus=["PENDING"]' \--data-urlencode 'first=25'{ "node": { "id": "9e26d2a8-a6ed-42ea-8454-47d1c92ea841", "source": "maps.google.com", "rating": 5, "content": "nice place for family together", "responded": false, "responseCount": 0, "canRespond": true }}canRespond é false para fontes que não aceitam respostas do proprietário pela API. Ignore essas avaliações; uma tentativa de resposta não chegará à plataforma de publicação. Para elaborar o texto, Liste frases de avaliações informa o que os clientes mais mencionam, para que uma resposta possa abordar esses pontos.
2. Publique uma resposta
POST /locations/reviews/respond recebe os campos diretamente no corpo, sem envolvê-los em input. interactionId é o id da avaliação. respondedWith é opcional e indica o nome de um modelo de resposta, caso você tenha usado um.
curl -X POST https://listingsapi.com/api/v4/locations/reviews/respond \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "interactionId": "9e26d2a8-a6ed-42ea-8454-47d1c92ea841", "responseContent": "Thank you for visiting Jenny Home: we are glad you enjoyed your experience!"}'{ "data": { "respondToInteraction": { "interaction": { "id": "2090753a-ece6-4837-8336-8494ad308523", "interactionId": "9e26d2a8-a6ed-42ea-8454-47d1c92ea841", "content": "Thank you for visiting Jenny Home: we are glad you enjoyed your experience!", "interactionStatus": "CREATED", "editedResponse": false }, "errors": null } }}Guarde interaction.id: esse é o responseId de que você precisa para editar ou arquivar a resposta depois. Uma resposta rejeitada retorna como 200 com errors preenchido dentro de data.respondToInteraction, então leia o corpo. Os SDKs lançam ValidationError nesse caso.
3. Confirme que a resposta chegou à plataforma de publicação
interactionStatus é CREATED inicialmente e avança sem chamadas adicionais. Consulte a avaliação novamente pelo id após uma breve espera e verifique responded, responseCount e o status da resposta dentro de responses[].
curl -G "https://listingsapi.com/api/v4/reviewDetails" \-H "Authorization: API $LISTINGSAPI_KEY" \--data-urlencode 'interactionIds=["9e26d2a8-a6ed-42ea-8454-47d1c92ea841"]'{ "id": "9e26d2a8-a6ed-42ea-8454-47d1c92ea841", "responded": true, "responseCount": 1, "responses": [ { "id": "2090753a-ece6-4837-8336-8494ad308523", "content": "Thank you for visiting Jenny Home: we are glad you enjoyed your experience!", "interactionStatus": "CONFIRMED", "editedResponse": false } ]}responded: true com uma resposta CONFIRMED ou COMPLETED significa que o cliente pode vê-la. Se você vir FAILED, leia remarks na resposta para saber o motivo informado pela plataforma de publicação antes de tentar novamente.
4. Edite uma resposta
POST /locations/reviews/respond/edit precisa dos dois ids: reviewId é o da avaliação, e responseId é o da resposta da etapa 2. A edição é reenviada, então o campo interactionStatus da resposta volta a CREATED e editedResponse passa a ser true quando ela chega à plataforma de publicação.
curl -X POST https://listingsapi.com/api/v4/locations/reviews/respond/edit \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "reviewId": "9e26d2a8-a6ed-42ea-8454-47d1c92ea841", "responseId": "2090753a-ece6-4837-8336-8494ad308523", "responseContent": "Thank you again: we have updated our reply to include our new store hours."}'{ "data": { "editResponse": { "status": "true", "reviewId": "9e26d2a8-a6ed-42ea-8454-47d1c92ea841", "responseId": "2090753a-ece6-4837-8336-8494ad308523" } }}status é a string "true" quando a edição é aceita. Confirme o novo texto da mesma forma que na etapa 3.
5. Arquive uma resposta
POST /locations/reviews/respond/archive recebe apenas responseId. O arquivamento remove a resposta de responses da interação na Listings API. Ele não retira uma resposta que já esteja publicada no Google ou no Facebook, então use-o para remover um rascunho cujo envio falhou ou que foi substituído, e use a edição para qualquer resposta publicada.
curl -X POST https://listingsapi.com/api/v4/locations/reviews/respond/archive \-H "Authorization: API $LISTINGSAPI_KEY" \-H "Content-Type: application/json" \-d '{ "responseId": "2090753a-ece6-4837-8336-8494ad308523" }'{ "data": { "archiveResponse": { "status": "true" } }}Após o arquivamento, o valor de responseCount da avaliação diminui e responded reflete as respostas restantes.
6. Receba eventos de resposta por webhook
Um evento interaction.response é disparado quando uma resposta é publicada, editada ou arquivada. O payload fica em data.interaction, com type: "Response" e parent_id definidos como o id da avaliação, para que você possa associá-lo ao seu próprio registro sem outra chamada. Assim como em interaction.review, seu location_id não é normalizado e pode ser null. A configuração está em Reaja a eventos com webhooks.
Próximos passos
- Buscar avaliações: crie a fila de avaliações pendentes em toda a conta.
- Análise de avaliações: acompanhe
review-response-rateà medida que você avança pela fila. - Referência: Responder a uma interação, Editar uma resposta, Arquivar uma resposta, Atributos da interação.
- SDKs: Avaliações em Python, Avaliações em Node.