Gönderiler
client.posts aracılığıyla Google ve Facebook'ta duyurular, etkinlikler ve teklifler yayımlayın.
Tüm gönderi metotları client.posts altında yer alır. location_id alan metotlar, sayısal veya base64 ile kodlanmış kimlikleri kabul eder; bkz. Konum kimlikleri.
Gönderiler iki sitede yayımlanır: GOOGLE ve FACEBOOK. Gönderi türleri ANNOUNCEMENT, EVENT, OFFER, COVID19 ve PRODUCT şeklindedir. Harekete geçirici mesaj türleri BOOK, ORDER, SHOP, LEARN_MORE, SIGN_UP ve GET_OFFER şeklindedir; cta_type ve cta_url her zaman birlikte sağlanmalıdır.
Asenkron yayımlama
Yayımlama asenkron olarak gerçekleşir. Oluşturma çağrıları status: INPROGRESS döndürür; durum SUCCESS olana kadar posts.retrieve() öğesini (toplu kampanyalar için posts.bulk_retrieve() öğesini) düzenli aralıklarla sorgulayın ve site bazındaki hatalar için publishDetails[].submissionError öğesini kontrol edin.
Site bazında mesajlar
Her oluşturma metodu, message için her sitede aynı metni yayımlayan düz bir dizeyi veya siteleri metinlerle eşleştiren bir dict değerini kabul eder:
message = { "GOOGLE": "Book your summer checkup today!", "FACEBOOK": "Summer checkups are here. Tag a friend who needs one!",}message bir dict olduğunda, sites içindeki her site için bir öğe içermelidir; herhangi biri eksikse SDK, herhangi bir ağ çağrısı yapmadan önce ValidationError hatasını üretir.
posts.bulk_publish
Tek bir çağrıyla Google ve Facebook'ta birçok konum için bir gönderi yayımlayın. Gönderi yayımlamak için önerilen yöntem budur: sites varsayılan olarak her ikisini de içerir, tek mesaj (veya site bazındaki dict) her site için bir öğeye dönüştürülür, konum kimlikleri otomatik olarak kodlanır ve gönderilecek veri herhangi bir ağ çağrısından önce istemci tarafında doğrulanır.
client.posts.bulk_publish( *, name: str, location_ids: list[str | int], message: str | dict[str, str], sites: list[str] | None = None, post_type: str = "ANNOUNCEMENT", cta_type: str | None = None, cta_url: str | None = None, media_url: str | None = None, scheduled_dates: dict | None = None, context_info: dict | None = None, additional_fields: dict | None = None,) -> APIObjectresult = client.posts.bulk_publish( name="Holiday hours", location_ids=[16808, 16809, 16810], message="Open until 10pm through the holidays!", media_url="https://cdn.example.com/holiday.jpg", cta_type="LEARN_MORE", cta_url="https://example.com/holiday-hours",)print(result.socialPost.id, result.socialPost.status) # INPROGRESS, publishes asyncposts.create_announcement
Bir ANNOUNCEMENT gönderisi oluşturun: isteğe bağlı CTA ve medya içeren düz bir mesaj. sites için varsayılan değer ["GOOGLE"] şeklindedir.
client.posts.create_announcement( *, name: str, location_ids: list[str | int], message: str | dict[str, str], sites: list[str] | None = None, cta_type: str | None = None, cta_url: str | None = None, media_url: str | None = None, scheduled_dates: dict | None = None, additional_fields: dict | None = None,) -> APIObjectresult = client.posts.create_announcement( name="Grand Opening", location_ids=[16808], message="Acme Dental is now open!", sites=["GOOGLE"], cta_type="LEARN_MORE", cta_url="https://acmedental.example.com/opening",)print(result.socialPost.id)posts.create_event
Başlık ve başlangıç/bitiş zaman aralığı içeren bir EVENT gönderisi oluşturun. Google etkinlik başlığını zorunlu tutar; başlık eksikse SDK, ValidationError hatasını üretir. start_day ve end_day tarih değerleridir (YYYY-MM-DD); start_time ve end_time ise "10:00am" gibi, görüntüleme amaçlı dizelerdir.
client.posts.create_event( *, name: str, location_ids: list[str | int], message: str | dict[str, str], title: str, start_day: str, end_day: str, start_time: str | None = None, end_time: str | None = None, sites: list[str] | None = None, cta_type: str | None = None, cta_url: str | None = None, media_url: str | None = None, scheduled_dates: dict | None = None, additional_fields: dict | None = None,) -> APIObjectresult = client.posts.create_event( name="Free checkup day", location_ids=[16808], message="Join us for free dental checkups!", title="Free Checkup Day", start_day="2026-08-01", end_day="2026-08-01", start_time="10:00am", end_time="4:00pm", cta_type="BOOK", cta_url="https://acmedental.example.com/book",)print(result.socialPost.id)posts.create_offer
Kupon, indirim ve koşullar içeren bir OFFER gönderisi oluşturun. title teklifi adlandırır ve zorunludur; start_day ve end_day (YYYY-MM-DD) teklifin geçerlilik süresini sınırlar.
client.posts.create_offer( *, name: str, location_ids: list[str | int], message: str | dict[str, str], title: str, coupon_code: str | None = None, discount: str | None = None, redeem_url: str | None = None, terms_conditions: str | None = None, start_day: str | None = None, end_day: str | None = None, sites: list[str] | None = None, cta_type: str | None = None, cta_url: str | None = None, media_url: str | None = None, scheduled_dates: dict | None = None, additional_fields: dict | None = None,) -> APIObjectresult = client.posts.create_offer( name="Summer whitening sale", location_ids=[16808], message="20% off teeth whitening all week!", title="Summer Whitening Sale", coupon_code="SUMMER20", discount="20%", redeem_url="https://acmedental.example.com/sale", terms_conditions="One per patient. Not valid with other offers.", start_day="2026-08-01", end_day="2026-08-07",)print(result.socialPost.id)posts.create
Ham bir gövde dict değerinden gönderi oluşturun. Alanları camelCase içinde iç içe yerleştirmeden iletirsiniz ve yardımcı işlev, göndermeden önce bunları API'nin gerektirdiği input nesnesine yerleştirir: ağ üzerinden gönderilen gövde {"input": {...}} şeklindedir ve hiçbir zaman düz bir gövde değildir. locationIds önceden base64 ile kodlanmış olmalıdır. Anahtar sözcüklü argümanlar, otomatik kimlik kodlama ve istemci tarafında doğrulama için yukarıdaki tür belirtilmiş oluşturma metotlarını tercih edin.
client.posts.create(body: dict) -> APIObjectZorunlu alanlar: postName, locationIds (base64), postType, postSites.
result = client.posts.create({ "postName": "Grand Opening", "locationIds": ["TG9jYXRpb246MTY4MDg="], "postType": "ANNOUNCEMENT", "postSites": ["GOOGLE"], "postMessage": [{"site": "GOOGLE", "message": "We are now open!"}],})print(result.socialPost.id)posts.retrieve
Bir gönderiyi içeriği, site bazında yayımlama durumu ve analiz verileriyle birlikte alın. Oluşturma işleminden sonra status değeri SUCCESS olana kadar bu metodu düzenli aralıklarla çağırın.
client.posts.retrieve(post_id: str) -> APIObjectpost = client.posts.retrieve("U29jaWFsUG9zdDo0NDEyMg==")print(post.status)for detail in post.publishDetails: print(detail.site, detail.submissionError)posts.delete
Bir gönderiyi silin ve yayımlandığı her siteden kaldırın.
client.posts.delete(post_id: str) -> APIObjectclient.posts.delete("U29jaWFsUG9zdDo0NDEyMg==")posts.list_for_location
Bir konumu hedefleyen gönderi kampanyalarını listeleyin. Sayfalama offset tabanlıdır: sonuç, .records öğesinin yanı sıra totalPages, totalRecords ve hasNextPage içeren .pageInfo öğesini de içerir. Yanıt postsByLocation altında gelir.
Bu uç nokta tag argümanını reddeder; bu nedenle SDK, 0.5.3 sürümünden itibaren geriye dönük uyumluluk için bu argümanı kabul eder ve hiçbir zaman ağ üzerinden göndermez. Etikete göre filtreleme gerektiğinde posts.bulk_list_for_location kullanın.
client.posts.list_for_location( location_id: str | int, *, tag: str = "all", page: int | None = None, per_page: int | None = None, filters: dict | None = None, sort_fields: dict | None = None,) -> APIObjectresult = client.posts.list_for_location(16808, page=1, per_page=10)for post in result.records: print(post.id, post.name)print(result.pageInfo.totalRecords)posts.bulk_retrieve
Toplu (birden çok konumu kapsayan) bir kampanyayı, konum bazında yayımlama durumu ve analiz verileriyle birlikte alın.
client.posts.bulk_retrieve(bulk_post_id: str) -> APIObjectbulk = client.posts.bulk_retrieve("QnVsa1Bvc3Q6OTk=")print(bulk.status)posts.bulk_list_for_location
Bir konumu içeren toplu (birden çok konumu kapsayan) kampanyaları listeleyin. Parametreler ve sonuç yapısı posts.list_for_location ile aynıdır.
client.posts.bulk_list_for_location( location_id: str | int, *, tag: str = "all", page: int | None = None, per_page: int | None = None, filters: dict | None = None, sort_fields: dict | None = None,) -> APIObjectresult = client.posts.bulk_list_for_location(16808, page=1, per_page=10)for campaign in result.records: print(campaign.id, campaign.name)Ayrıca bkz.
- Konumlar: paylaşım yaptığınız konumları oluşturun ve yönetin
- İşletme kayıtları: her konumun senkronizasyon durumunu kontrol edin
- Analizler: Google, Bing, Facebook profil analizleri