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:

Python
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.

Python
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,) -> APIObject
ArgümanTürAçıklama
namestrDahili kampanya adı (müşterilere gösterilmez). Zorunludur.
location_idslist[str | int]Gönderinin yayımlanacağı tüm konumlar (sayısal veya base64 kimlikleri). Zorunludur.
messagestr | dictHer site için gönderi gövdesi veya site bazında bir dict. Zorunludur.
siteslist[str]Hedef siteler. Varsayılan değer ["GOOGLE", "FACEBOOK"] şeklindedir.
post_typestrANNOUNCEMENT (varsayılan), EVENT, OFFER, COVID19 veya PRODUCT.
cta_typestrİsteğe bağlı harekete geçirici mesaj düğmesi; cta_url gerektirir.
cta_urlstrCTA düğmesinin yönlendirdiği hedef.
media_urlstrHer sitede eklenen, isteğe bağlı ve herkese açık görsel URL'si.
scheduled_datesdictİsteğe bağlı {"startDatetime", "endDatetime"} zaman aralığı.
context_infodictpost_type gerektirdiğinde sağlanan etkinlik veya teklif ayrıntıları.
additional_fieldsdictOlduğu gibi birleştirilen, iç içe olmayan ek camelCase alanları.
Python
result = 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 async

posts.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.

Python
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,) -> APIObject
Python
result = 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.

Python
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,) -> APIObject
Python
result = 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.

Python
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,) -> APIObject
Python
result = 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.

Python
client.posts.create(body: dict) -> APIObject

Zorunlu alanlar: postName, locationIds (base64), postType, postSites.

Python
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.

Python
client.posts.retrieve(post_id: str) -> APIObject
Python
post = 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.

Python
client.posts.delete(post_id: str) -> APIObject
Python
client.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.

Python
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,) -> APIObject
Python
result = 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.

Python
client.posts.bulk_retrieve(bulk_post_id: str) -> APIObject
Python
bulk = 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.

Python
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,) -> APIObject
Python
result = 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