Gönderiler
listingsapi-js SDK ile Google ve Facebook'ta duyurular, etkinlikler ve teklifler yayınlayın.
Gönderi metotları, Google Business Profile ve Facebook'ta içerik yayımlar, ardından site bazında yayımlanma durumunu ve analiz verilerini izlemenizi sağlar. Tüm gönderi metotları doğrudan ListingsAPI istemci örneğinde bulunur.
Yayımlama işlemi asenkrondur: oluşturma çağrıları status: 'INPROGRESS' döndürür ve gönderi arka planda yayımlanır. Durum SUCCESS olana kadar fetchPost ile düzenli aralıklarla sorgulama yapın ve site bazındaki hatalar için publishDetails[].submissionError alanını kontrol edin.
bulkPublish
Tek bir çağrıyla bir gönderiyi birden çok konum için Google ve Facebook'ta yayımlayın. sites varsayılan olarak her ikisini de içerir. Mesaj (veya site bazındaki eşleme), her site için bir girdi oluşturacak şekilde genişletilir, konum kimlikleri otomatik olarak kodlanır ve herhangi bir ağ çağrısından önce veri yükü istemci tarafında doğrulanır (geçersiz bir veri yükü hemen ValidationError hatasını fırlatır).
const result = await client.bulkPublish({name: 'Holiday hours',locationIds: [16808, 16809, 16810],message: 'Open until 10pm through the holidays!',mediaUrl: 'https://cdn.example.com/holiday.jpg',ctaType: 'LEARN_MORE',ctaUrl: 'https://example.com/holiday-hours',});console.log(result.socialPost.id, result.socialPost.status); // INPROGRESS, publishes asyncSiteye özel metinler için message olarak bir nesne geçirin:
await client.bulkPublish({name: 'Holiday hours',locationIds: [16808, 16809],message: { GOOGLE: 'Open until 10pm through the holidays. Book online!', FACEBOOK: 'We are staying open late for the holidays. See you soon!',},});Seçenekler
createAnnouncement
Bir ANNOUNCEMENT gönderisi oluşturun: isteğe bağlı CTA ve medya içeren düz bir mesaj. postType ve contextInfo dışında bulkPublish ile aynı seçenekleri alır; burada sites için varsayılan değer ['GOOGLE'].
await client.createAnnouncement({name: 'Grand Opening',locationIds: [16808],message: 'Acme Dental is now open in the Mission!',sites: ['GOOGLE'],ctaType: 'LEARN_MORE',ctaUrl: 'https://example.com/opening',});createEvent
Bir başlık ve başlangıç/bitiş aralığı içeren bir EVENT gönderisi oluşturun. title zorunludur (Google bunu zorunlu kılar); startDay ve endDay, YYYY-MM-DD biçiminde tarihlerdir; startTime/endTime ise isteğe bağlı olarak gösterilen saatlerdir. sites için varsayılan değer ['GOOGLE'].
await client.createEvent({name: 'Live music',locationIds: [16808],message: 'Join us Friday for live jazz!',title: 'Jazz Night',startDay: '2026-08-01',endDay: '2026-08-01',startTime: '7:00pm',endTime: '10:00pm',});createOffer
Kupon, indirim ve koşullar içeren bir OFFER gönderisi oluşturun. title zorunludur; diğer tüm teklif alanları isteğe bağlıdır. sites için varsayılan değer ['GOOGLE'].
await client.createOffer({name: 'Summer sale',locationIds: [16808],message: '20% off whitening all week!',title: 'Summer Sale',couponCode: 'SUMMER20',discount: '20%',redeemUrl: 'https://example.com/sale',termsConditions: 'One per customer.',startDay: '2026-08-01',endDay: '2026-08-07',});Teklif seçenekleri
createPost
İstemci tarafında doğrulama yapmadan, iç içe olmayan alanlardan oluşan ham bir gövdeden gönderi oluşturun. Metot, ilettiğiniz verileri API'nin gerektirdiği input nesnesiyle sarmalar; böylece ağ üzerinden gönderilen gövde {"input": {...}} olur; tamamen düz bir gövde HTTP 400 ile reddedilir. Bu gövdeyi sizin için oluşturan ve doğrulayan createAnnouncement, createEvent veya createOffer metotlarını tercih edin.
await client.createPost({postName: 'Grand Opening',locationIds: ['TG9jYXRpb246MTY4MDg='],postType: 'ANNOUNCEMENT',postSites: ['GOOGLE'],postMessage: [{ site: 'GOOGLE', message: 'We are now open!' }],});fetchPost
Bir gönderiyi içeriği, site bazında yayımlanma durumu ve analiz verileriyle birlikte alın. Bir INPROGRESS gönderisini yayımlanana kadar düzenli aralıklarla sorgulamak için kullanın.
let post = await client.fetchPost('U29jaWFsUG9zdDo0NDEyMg=='); while (post.status === 'INPROGRESS') {await new Promise((resolve) => setTimeout(resolve, 5000));post = await client.fetchPost('U29jaWFsUG9zdDo0NDEyMg==');} for (const detail of post.publishDetails ?? []) {if (detail.submissionError) { console.log('failed:', detail.submissionError);}}deletePost
Bir gönderiyi silin ve yayımlandığı tüm sitelerden kaldırın.
await client.deletePost('U29jaWFsUG9zdDo0NDEyMg==');fetchLocationPosts
Bir konumu hedefleyen gönderi kampanyalarını listeleyin. Ofset tabanlı sayfalama (page ve perPage) kullanır ve işlem tamamlandığında postsByLocation döndürür.
Bu yol tag seçeneğini reddettiği için SDK, 0.3.2 sürümünden itibaren geriye dönük uyumluluk amacıyla bu seçeneği kabul eder ve hiçbir zaman ağ üzerinden göndermez. Etiket filtrelemesine ihtiyaç duyduğunuzda fetchLocationBulkPosts kullanın.
const posts = await client.fetchLocationPosts(16808, { page: 1, perPage: 10 });Seçenekler
fetchBulkPost
Bir toplu kampanyayı konum bazında yayımlanma durumu ve analiz verileriyle birlikte alın.
const bulk = await client.fetchBulkPost('QnVsa1Bvc3Q6OTk=');fetchLocationBulkPosts
Bir konumu içeren toplu (birden çok konuma yönelik) kampanyaları listeleyin. fetchLocationPosts ile aynı seçenekleri alır.
const campaigns = await client.fetchLocationBulkPosts(16808, { page: 1, perPage: 10 });İlgili kaynaklar
- Konumlar, konum kimliklerini bulma
- Hata işleme,
ValidationErrorve platform hata kodları