Balas ulasan, lalu edit atau arsipkan balasan

Temukan ulasan yang dapat dibalas pemilik, kirim balasan, pastikan sampai ke platform publikasi, lalu perbaiki redaksinya atau arsipkan.

Balasan pemilik diterbitkan di platform publikasi atas nama Anda. API langsung menerimanya dan mengirimkannya secara asinkron; urutannya adalah: pilih ulasan yang dapat dibalas, kirimkan balasan, lalu konfirmasikan dengan membaca ulang.

1. Pilih ulasan yang dapat dibalas

Ambil daftar ulasan lokasi tersebut dan pilih ulasan dengan canRespond bernilai true dan responded bernilai false. Filter responseStatus=["PENDING"] melakukan pemeriksaan kedua di sisi server; nilai JSON harus dikodekan dalam format URL, yang ditangani oleh --data-urlencode.

Answerable reviews
curl -G "https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/reviews" \-H "Authorization: API $LISTINGSAPI_KEY" \--data-urlencode 'responseStatus=["PENDING"]' \--data-urlencode 'first=25'
JSON
{  "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 bernilai false untuk sumber yang tidak menerima balasan pemilik melalui API. Lewati ulasan dari sumber tersebut; upaya membalasnya tidak akan sampai ke platform publikasi. Untuk menyusun draf, Daftar frasa ulasan menunjukkan hal yang paling sering disebutkan pelanggan, sehingga balasan dapat menanggapinya.

2. Kirim balasan

POST /locations/reviews/respond menerima field secara langsung di body, tanpa dibungkus dalam input. interactionId adalah id ulasan. respondedWith bersifat opsional dan berisi nama templat balasan jika Anda menggunakannya.

Respond
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!"}'
JSON
{  "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    }  }}

Simpan interaction.id: nilai tersebut adalah responseId yang Anda perlukan untuk mengedit atau mengarsipkan balasan nanti. Balasan yang ditolak dikembalikan sebagai 200 dengan errors terisi di dalam data.respondToInteraction, jadi baca body respons. SDK memunculkan ValidationError dalam kasus tersebut.

3. Pastikan balasan sampai ke platform publikasi

interactionStatus awalnya bernilai CREATED dan berlanjut tanpa pemanggilan tambahan. Baca ulang ulasan berdasarkan id setelah menunggu sebentar dan periksa responded, responseCount, serta status balasan di dalam responses[].

StatusArti
CREATEDDiterima dan masuk antrean untuk dikirim ke platform publikasi.
COMPLETEDDiterbitkan di platform publikasi. Beberapa platform berhenti pada tahap ini.
CONFIRMEDDiterbitkan dan dikonfirmasi oleh platform publikasi.
FAILEDPlatform publikasi menolaknya. remarks pada respons menjelaskan alasannya.
Re-read
curl -G "https://listingsapi.com/api/v4/reviewDetails" \-H "Authorization: API $LISTINGSAPI_KEY" \--data-urlencode 'interactionIds=["9e26d2a8-a6ed-42ea-8454-47d1c92ea841"]'
JSON
{  "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 dengan balasan berstatus CONFIRMED atau COMPLETED berarti pelanggan dapat melihatnya. Jika Anda melihat FAILED, baca remarks pada respons untuk mengetahui alasan dari platform publikasi sebelum mencoba lagi.

4. Edit balasan

POST /locations/reviews/respond/edit memerlukan kedua id: reviewId adalah id ulasan, responseId adalah id balasan dari langkah 2. Hasil edit dikirim ulang, sehingga interactionStatus balasan kembali ke CREATED dan editedResponse menjadi true setelah hasil edit sampai ke platform publikasi.

Edit reply
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."}'
JSON
{  "data": {    "editResponse": {      "status": "true",      "reviewId": "9e26d2a8-a6ed-42ea-8454-47d1c92ea841",      "responseId": "2090753a-ece6-4837-8336-8494ad308523"    }  }}

status bernilai string "true" saat hasil edit diterima. Konfirmasikan redaksi baru dengan cara yang sama seperti pada langkah 3.

5. Arsipkan balasan

POST /locations/reviews/respond/archive hanya menerima responseId. Pengarsipan menghapus balasan dari responses interaksi di Listings API. Tindakan ini tidak menarik kembali balasan yang sudah tayang di Google atau Facebook, jadi gunakan untuk membersihkan draf yang gagal atau sudah digantikan, dan gunakan pengeditan untuk balasan yang sudah diterbitkan.

Archive reply
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" }'
JSON
{  "data": {    "archiveResponse": {      "status": "true"    }  }}

Setelah pengarsipan, responseCount ulasan berkurang dan responded mencerminkan balasan yang tersisa.

6. Terima peristiwa balasan melalui webhook

Peristiwa interaction.response dipicu saat balasan diterbitkan, diedit, atau diarsipkan. Payload berada di bawah data.interaction dengan type: "Response" dan parent_id diatur ke id ulasan, sehingga Anda dapat mencocokkannya dengan catatan Anda sendiri tanpa pemanggilan tambahan. Seperti interaction.review, location_id pada peristiwa ini tidak dinormalisasi dan dapat bernilai null. Petunjuk penyiapannya tersedia di Tanggapi peristiwa dengan webhook.

Langkah selanjutnya