Tek bir konum veya hesabınızın tamamı için yorumları getirin
Konumun son yorumlarını listeleyin, yanıtsız düşük puanlıları filtreleyin, imleçle sayfalarda gezinin, hesabı tarayın ve webhook ile bildirim alın.
API'de yorumlar interactions olarak adlandırılır. Google, Facebook veya Yelp'teki tüm yorumlar, konum başına tek bir listede ve hesap genelinde tek bir toplu sonuçta döndürülür; böylece tek bir entegrasyon, bağladığınız tüm kaynakları kapsar.
1. Tek bir konumun en son yorumlarını listeleyin
GET /locations/{locationId}/reviews, data.interactions adresindeki imleç tabanlı bir bağlantıdır. Sonuçlar en yeniden başlayarak döndürülür ve first varsayılan olarak 20'dir; bu nedenle tek bir çağrı hiçbir zaman geçmişin tamamını getirmez. Yol, base64 kimliğini veya düz sayıyı kabul eder.
curl "https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/reviews?first=10" \-H "Authorization: API $LISTINGSAPI_KEY"{ "data": { "interactions": { "pageInfo": { "hasNextPage": true, "endCursor": "SW50ZXJhY3Rpb246MV8xNTU0..." }, "edges": [ { "node": { "id": "9e26d2a8-a6ed-42ea-8454-47d1c92ea841", "source": "maps.google.com", "content": "nice place for family together", "authorName": "vaibhav nakate", "rating": 5, "date": "2019-04-02T22:11:13.036997+00:00", "responded": false, "responseCount": 0, "canRespond": true, "permalink": "https://maps.google.com/maps?cid=..." }, "cursor": "SW50ZXJhY3Rpb246MV8xNTU0..." } ], "totalCount": 425 } }}data.interactions.edges[].node değerini okuyun. id, base64 Relay kimliği değil, düz bir UUID'dir ve yanıt verirken ilettiğiniz değerdir. totalCount, bu sayfadaki değil, sonuç kümesinin tamamındaki eşleşme sayısıdır. canRespond, ilgili kaynağın API üzerinden işletme sahibi yanıtlarını kabul edip etmediğini belirtir.
2. Yanıtsız düşük puanlı yorumları filtreleyin
Dizi filtreleri, sorgu dizesinde JSON dizeleri olarak yer alır: ratingFilters=[1,2] bir ve iki yıldızlı yorumları, responseStatus=["PENDING"] ise işletme sahibi yanıtı olmayan yorumları seçer. Köşeli parantezler ve tırnak işaretleri URL kodlamasından geçirilmelidir; bu nedenle cURL örneğinde, her değeri kodlayıp sizin için URL'ye ekleyen -G, --data-urlencode ile birlikte kullanılır. Buna karşılık gelen sorgu dizesinin doğrudan yazılmış hali ratingFilters=%5B1%2C2%5D&responseStatus=%5B%22PENDING%22%5D şeklindedir.
curl -G "https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/reviews" \-H "Authorization: API $LISTINGSAPI_KEY" \--data-urlencode 'ratingFilters=[1,2]' \--data-urlencode 'responseStatus=["PENDING"]' \--data-urlencode 'sortOrder=["NEWEST_FIRST"]' \--data-urlencode 'first=50'Birlikte kullanabileceğiniz filtreler:
3. İmleçlerle sayfalar arasında ilerleyin
pageInfo.endCursor değerini after olarak geri gönderin. hasNextPage değeri false olduğunda veya bir sayfa boş bir edges dizisi döndürdüğünde durun; sınırın en eski yoruma denk gelmesi durumunda ardından bir boş sayfa gelir. Her iki SDK da sayfaları sizin için okuyabilir.
curl "https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/reviews?first=50&after=SW50ZXJhY3Rpb246MV8xNTU0..." \-H "Authorization: API $LISTINGSAPI_KEY"Her istek, istek hızı limitinizden düşülür ve 425 yorumu olan bir konum için first=50 kullanıldığında dokuz çağrı gerekir. 429 durumunda, sonraki sayfayı istemeden önce Retry-After uyarınca bekleyin. Zamanlanmış bir senkronizasyon için geçmişi yeniden okumak yerine çalıştırmanın kapsamını startDate ve endDate ile sınırlayın. İstek hızı limitleri bölümüne bakın.
4. Toplu sonuçla hesabın tamamını tarayın
GET /rollup_interactions, anahtarın erişebildiği tüm konumlardaki aynı düğümleri data.rollupInteractions adresinde döndürür ve her düğümde bir locationId bulunur. Aynı filtrelere ek olarak, varsayılan değeri all olan tag parametresini kabul eder. Konum filtresi yoktur; locationId değerine göre gruplamayı kendiniz yapın. Henüz iki SDK'dan hiçbiri bu uç nokta için bir sarmalayıcı sağlamaz; bu nedenle SDK örnekleri bu uç noktayı requests ve fetch ile çağırır.
curl -G "https://listingsapi.com/api/v4/rollup_interactions" \-H "Authorization: API $LISTINGSAPI_KEY" \--data-urlencode 'responseStatus=["PENDING"]' \--data-urlencode 'sortOrder=["NEWEST_FIRST"]' \--data-urlencode 'first=50'Her düğüm, 1. adımdakiyle aynı yapıdadır ve ek olarak mağazanın databaseId değeri olan sayısal bir locationId içerir. Toplu sonucun pageInfo alanı endCursor içermeyebilir; bu nedenle son kenarın cursor değerini after olarak alın; iki değer eşdeğerdir.
5. Kimliğe göre tüm ayrıntıları getirin
Kaydettiğiniz kimlikler varsa GET /reviewDetails, sayfalama yapmadan güncel kopyaları döndürür. interactionIds, diğer filtreler gibi URL kodlamasından geçirilmiş bir JSON dizisidir. Yanıt, data.interactionDetails.interactions konumunda düz bir dizidir ve her interaction kendi responses alanını içerir.
curl -G "https://listingsapi.com/api/v4/reviewDetails" \-H "Authorization: API $LISTINGSAPI_KEY" \--data-urlencode 'interactionIds=["9e26d2a8-a6ed-42ea-8454-47d1c92ea841"]'{ "data": { "interactionDetails": { "interactions": [ { "id": "9e26d2a8-a6ed-42ea-8454-47d1c92ea841", "responded": true, "responseCount": 1, "responses": [ { "id": "2090753a-ece6-4837-8336-8494ad308523", "content": "Thank you so much for the kind words!", "interactionStatus": "CONFIRMED" } ] } ] } }}Başka bir hesaba ait kimlik kullanıldığında interactionDetails: null ve bir SY90001 hatasıyla birlikte 200 döndürülür; bu nedenle dizinle erişmeden önce null olup olmadığını kontrol edin.
6. Düzenli sorgulama yerine webhook olaylarını alın
Bir webhook URL'si yapılandırıldığında, bir yorum sisteme alındığında veya değiştiğinde interaction.review olayı tetiklenir. Yorum alanları doğrudan data altında değil, data.interaction altındadır ve data.interaction.id, listenin döndürdüğü UUID ile aynıdır.
Dikkat edilmesi gereken iki nokta. Bu olaydaki location_id normalleştirilmeden iletilir: sayısal bir dize veya null olabilir, bu nedenle türüne güvenmek yerine dönüştürmeyi kendiniz yapın. Ayrıca yorum her değiştiğinde aynı id yeniden gelir, bu nedenle olayı tek seferlik bir ekleme olarak değil, yorumu yeniden okumak için bir sinyal olarak ele alın. İletim yalnızca bir kez denenir ve yeniden deneme yapılmaz, bu nedenle yedek önlem olarak 4. adımdaki periyodik taramayı sürdürün. Kurulum, Webhook'larla olaylara tepki verme bölümünde açıklanmıştır.
Sonraki adımlar
- Yorumları yanıtlayın: az önce bulduğunuz bekleyen yorumları yanıtlayın, ardından yanıtı düzenleyin veya arşivleyin.
- Yorum analitiği: aynı konum için puan, yorum sayısı ve yanıt oranı.
- Başvuru: Etkileşimleri listeleme, Toplu etkileşim verilerini alma, Kimliklere göre etkileşimleri alma, Etkileşim öznitelikleri.
- SDK'lar: Python yorumları, Node yorumları.