ऑडियंस
`audiences.list`, `get`, `create`, `update`, `delete`, `empty`, `growth`, `list_contacts`, `add_contact`, `add_contacts`, `import_contacts`, `remove_contact` और `remove_contacts`।
हर मेथड
from openemail import openemail audiences = openemail.audiences.list_all()everyone = next((audience for audience in audiences if audience['builtin'] == 'default'), None) created = openemail.audiences.create({ 'name': 'Product updates', 'description': 'Customers who asked to hear about releases',})audience_id = created['id'] openemail.contacts.create({'email': '[email protected]', 'name': 'Grace Hopper'})openemail.audiences.add_contact(audience_id, {'email': '[email protected]'}) bulk = openemail.audiences.add_contacts(audience_id, { 'emails': ['[email protected]', '[email protected]'],}) imported = openemail.audiences.import_contacts(audience_id, { 'contacts': [{'email': '[email protected]', 'name': 'Katherine Johnson'}],}) members = openemail.audiences.list_all_contacts( audience_id, q='grace', sort='added-newest', limit=200,) growth = openemail.audiences.growth(audience_ids=[audience_id], days=30) openemail.audiences.update(audience_id, {'name': 'Release notes'})openemail.audiences.remove_contact(audience_id, '[email protected]')openemail.audiences.remove_contacts(audience_id, {'emails': ['[email protected]']})openemail.audiences.empty(audience_id)openemail.audiences.delete(audience_id) print(everyone['contactCount'] if everyone else None, bulk['missing'], imported['created'])print(len(members), growth['totals']['added'])ऑडियंस इस वर्कस्पेस के contacts की एक नामित सूची है। हर contact अपने बनते ही अंतर्निहित डिफ़ॉल्ट ऑडियंस में होता है, और builtin वही है जो उस पंक्ति का नाम बताता है; बाक़ी बनाना, भरना और हटाना आपका काम है। नाम के बजाय builtin पर शाखा बनाएँ, क्योंकि नाम कोई भी बदल सकता है।
openemail.broadcasts.send से एक या अधिक ऑडियंस को भेजें, Broadcasts पेज पर। किसी संपर्क को ऑडियंस में डालना ऑडियंस पर लिखना है, संपर्क पर नहीं, इसलिए सिर्फ़ audiences:write जाँचा जाता है। import_contacts अपवाद है: यह संपर्क बनाता है, इसलिए इसे contacts:write भी चाहिए।
add_contact ऐसा पता लेता है जो पहले से contact है और जो नहीं है उसे 422 contact_not_found के साथ अस्वीकार करता है। पहले openemail.contacts.create से उसे सहेजें। किसी को दो बार जोड़ने पर वही सदस्यता लौटती है जो पहले से है, अपने मूल addedAt के साथ, इसलिए कॉल दोबारा करना सुरक्षित है।
डिफ़ॉल्ट ऑडियंस का नाम और विवरण किसी भी दूसरी की तरह बदला जा सकता है, पर उसे न हटाया जा सकता है और न छाँटा जा सकता है। दोनों 409 audience_immutable के साथ अस्वीकार होते हैं। जब आपका मतलब contact को हटाने से हो, तो contact को ही हटाएँ।
प्रतिक्रिया: AudienceResource
list इनका एक पेज लौटाता है, items, hasMore और nextCursor वाला एक dict, जिसमें डिफ़ॉल्ट ऑडियंस सबसे पहले और बाकी नई से पुरानी के क्रम में होती हैं, और list_all तथा iterate हर पेज से गुज़रते हैं। get, create और update हर एक इनमें से एक लौटाता है। list_contacts इसकी जगह AudienceContactResource का एक पेज लौटाता है, यानी सदस्यता रिकॉर्ड नहीं बल्कि ख़ुद संपर्क, हर एक के जुड़ने की तारीख़ के साथ, और उसके साथ list_all_contacts और iterate_contacts भी हैं।
idstr- टिकाऊ हैंडल, `aud_` के बाद 24 hex अक्षर। नाम अद्वितीय नहीं होते, इसलिए संग्रहीत कॉन्फ़िगरेशन में यही रखना चाहिए।
namestr- लिखते समय trim किया जाता है, 1 से 120 अक्षर। दो ऑडियंस एक ही नाम रख सकती हैं, क्योंकि ऑडियंस को उसके id से संबोधित किया जाता है।
descriptionstr | None- उनके लिए मुक्त टेक्स्ट जो यह सूची बाद में पढ़ेंगे। जब किसी ने कुछ न लिखा हो तो `None`, और `update` पर स्पष्ट `None` इसे मिटा देता है।
builtinAudienceBuiltin | str | None- हर वर्कस्पेस में ठीक एक पंक्ति पर `default`, यानी वह ऑडियंस जो हर संपर्क रखती है, और किसी के बनाए हर ऑडियंस पर `None`। type खुला रहता है, literal के साथ `str` भी, ताकि बाद में जोड़ा गया कोई built-in मान इस type के हिसाब से लिखे गए कोड को न तोड़े।
contactCountint- ऑडियंस में कितने contacts हैं, जो कैश से नहीं बल्कि पढ़ने के क्षण गिने जाते हैं। `contacts.create` के दोनों ओर किए गए दो पाठ एक से अलग होंगे।
lastContactAtstr | None- ISO-8601 UTC, कि सबसे हाल में जुड़ा संपर्क इस ऑडियंस में कब जुड़ा। ऑडियंस ख़ाली रहने तक `None`।
createdAtstr- ISO-8601 UTC, कि ऑडियंस कब बनाई गई। डिफ़ॉल्ट वाली के बाद सूची का क्रम यही तय करता है।
updatedAtstr- ISO-8601 UTC, नाम या विवरण बदलने पर बढ़ता है। सदस्यता में बदलाव इसे नहीं छूते।
पैरामीटर: audiences.list_contacts
limitint- हर पेज पर कितने संपर्क: 1 से 200 तक का पूर्णांक, डिफ़ॉल्ट 50।
cursorstr- पिछले पेज का `nextCursor`, वही `q`, `source` और `sort` के साथ भेजा गया। ऐसा कर्सर जो इस ऑडियंस से बाहर के संपर्क की ओर इशारा करे 400 `invalid_cursor` देता है।
qstr- नाम और पते में खोजता है, 200 अक्षरों तक। अगर पहले पेज पर कुछ भी ठीक-ठीक मेल न खाए, तो उसकी जगह मिलती-जुलती वर्तनियाँ लौटती हैं, और आगे के पेज उसी तरह मिलान करते रहते हैं।
sourceContactSource- `'manual'` उन संपर्कों के लिए जिन्हें किसी ने जानबूझकर सहेजा, `'auto'` उनके लिए जिन्हें ऐप के कंपोज़र ने दर्ज किया। ऑडियंस के सभी लोगों के लिए इसे छोड़ दें।
sortAudienceMemberSort- `'last-heard-newest'` (डिफ़ॉल्ट) और `'last-heard-oldest'` `lastSeenAt` के हिसाब से चलते हैं, और जिन संपर्कों को कभी मेल नहीं भेजा गया वे पहले में अंत में और दूसरे में शुरू में आते हैं। `'added-newest'` और `'added-oldest'` इस हिसाब से चलते हैं कि हर संपर्क इस ऑडियंस में कब जुड़ा, और `'name'` अक्षरों के छोटे-बड़े होने को अनदेखा करता है और बिना नाम वाले संपर्क को उसके पते से क्रमबद्ध करता है।
statusesSequence[AudienceMemberStatus]- `['subscribed']` उन सदस्यों को रखता है जिन्होंने सदस्यता नहीं छोड़ी और `['unsubscribed']` उन्हें जिन्होंने छोड़ी। ऑडियंस के सभी लोगों के लिए इसे छोड़ दें या दोनों दें। मान `AUDIENCE_MEMBER_STATUSES` में हैं।
प्रतिक्रिया: AudienceContactResource
list_contacts एक Page[AudienceContactResource] लौटाता है, और list_all_contacts तथा iterate_contacts उन्हीं विकल्पों के साथ हर पेज पढ़ते हैं। हर पंक्ति एक ContactResource है, जिसके फ़ील्ड संपर्क पेज पर हैं, साथ में दो और फ़ील्ड। किसी ऑडियंस को एक्सपोर्ट करने का तरीक़ा हर पेज पढ़ना है।
addedAtstr- ISO-8601 UTC, जब संपर्क इस ऑडियंस में जुड़ा। किसी संपर्क को निकालकर फिर से जोड़ने पर यह नए सिरे से शुरू होता है।
unsubscribedAtstr | None- ISO-8601 UTC, जब संपर्क ने इस ऑडियंस को भेजे गए broadcast से सदस्यता छोड़ी, या जब तक वह सदस्य है तब तक `None`। सदस्यता छोड़ चुका संपर्क ऑडियंस में रहता है, और उस ऑडियंस को भेजे गए broadcast उसे छोड़ देते हैं। उसे निकालकर फिर जोड़ने से वह फिर से सदस्य बन जाता है।
एक साथ कई जोड़ना और हटाना
add_contacts और remove_contacts {'emails': [...]} लेते हैं, 1 से 200 पते, और एक ही अनुरोध में एक ऑडियंस बदलते हैं। add_contacts कभी संपर्क नहीं बनाता: जो पता संपर्क नहीं है वह missing में लौटता है, और उन्हें बनाने वाली कॉल import_contacts है। दोनों को दोहराना सुरक्षित है, इसलिए टाइमआउट के बाद दोबारा कोशिश विफल होने के बजाय उन्हीं लोगों को पहले से हो चुका बताती है।
डिफ़ॉल्ट ऑडियंस में जोड़ने पर 'added': 0 मिलता है, क्योंकि हर संपर्क पहले से उसमें है, और उस पर remove_contacts 409 audience_immutable के साथ अस्वीकार होता है। किसी को ऑडियंस से निकालने पर वह पता-पुस्तिका में, डिफ़ॉल्ट ऑडियंस में और अपनी दूसरी ऑडियंस में बना रहता है।
audienceIdstr- वह ऑडियंस जिसे कॉल ने बदला, दोनों नतीजों में।
addedint- `AudienceBatchAddResource` पर: इस कॉल से बनी नई सदस्यताएँ।
unchangedint- `AudienceBatchAddResource` पर: वे संपर्क जो पहले से ऑडियंस में थे। उनके लिए कुछ नहीं लिखा गया।
removedint- `AudienceBatchRemoveResource` पर: इस कॉल से हटाई गई सदस्यताएँ।
notInAudiencelist[str]- `AudienceBatchRemoveResource` पर: वे संपर्क जो ऑडियंस में नहीं थे, इसलिए उनके साथ कुछ नहीं हुआ।
missinglist[str]- दोनों पर: वे पते जो इस वर्कस्पेस में संपर्क नहीं हैं, छोटे अक्षरों में और बिना दोहराव के।
इम्पोर्ट करना
import_contacts ऑडियंस पेज का CSV इम्पोर्ट है। यह {'contacts': [...]} लेता है, 1 से 500 पंक्तियाँ, हर एक में एक email और वैकल्पिक name: हर सही बना पता, अगर अभी संपर्क नहीं है, तो संपर्क बन जाता है, और सब ऑडियंस में पहुँचते हैं। लंबी सूची कई कॉल में भेजें। इसे audiences:write और contacts:write चाहिए।
जो पता पहले से संपर्क है उसे दोबारा इस्तेमाल किया जाता है और उसका नाम बना रहता है, और यहाँ का name सिर्फ़ खाली नाम भरता है। नया संपर्क manual के रूप में सहेजा जाता है और डिफ़ॉल्ट ऑडियंस में भी जुड़ता है, और जो पता पुस्तिका से हटाया गया था वह वापस आ जाता है। वही पंक्तियाँ दोबारा भेजने से कुछ भी दो बार नहीं बनता।
audienceIdstr- वह ऑडियंस जिसमें पंक्तियाँ गईं।
createdint- इस कॉल से सहेजे गए नए संपर्क।
addedint- इस ऑडियंस में नई सदस्यताएँ, उन संपर्कों सहित जो पहले से मौजूद थे और अभी इसमें नहीं थे।
skippedint- वे पंक्तियाँ जो पता ग़लत बना होने के कारण इम्पोर्ट नहीं हुईं।
invalidlist[str]- ग़लत बने पते, ठीक वैसे ही जैसे वे भेजे गए।
खाली करना
empty(id) एक ही अनुरोध में एक ऑडियंस से हर संपर्क को निकालता है और एक EmptiedAudienceResource लौटाता है: ऑडियंस जैसी वह अभी है, contactCount 0 के साथ, और साथ में removed, यानी हटाई गई सदस्यताओं की संख्या। ऑडियंस अपनी id, नाम और विवरण रखती है, और हर संपर्क पता-पुस्तिका में और अपनी दूसरी ऑडियंस में बना रहता है।
इसे पूर्ववत नहीं किया जा सकता और कहीं दर्ज नहीं होता कि सूची में कौन था, इसलिए अगर आप उसे वापस चाह सकते हैं तो पहले list_all_contacts पढ़ लें। डिफ़ॉल्ट ऑडियंस खाली नहीं की जा सकती, और कॉल 409 audience_immutable के साथ अस्वीकार होती है।
वृद्धि
growth() पढ़ता है कि अभी ख़त्म होने वाली अवधि में, दिन, घंटे या मिनट के हिसाब से, हर ऑडियंस में कितने संपर्क जुड़े, जो ऑडियंस पेज का चार्ट है। इसे audiences:read चाहिए और यह एक AudienceGrowthResource लौटाता है।
ऑडियंस दर्ज करती है कि कोई कब जुड़ा, यह कभी नहीं कि कब गया, इसलिए जुड़ने की हर संख्या उन लोगों को गिनती है जो आज भी सूची में हैं, उनके जुड़ने की तारीख़ के हिसाब से, और कोई रेखा कभी नीचे नहीं जाती। जो संपर्क जुड़ा और बाद में चला गया वह किसी संख्या में नहीं है।
पैरामीटर
audience_idsSequence[str]- 50 तक ऑडियंस ID, अल्पविराम से जोड़कर भेजी जाती हैं। सभी ऑडियंस के लिए इसे छोड़ दें। जो ID इस वर्कस्पेस की ऑडियंस नहीं है वह 404 `audience_not_found` देती है।
daysint- अवधि कितनी पीछे तक जाती है, 1 से 1095। जब न `days` दिया जाए न `minutes`, तो यह 30 है।
minutesint- मिनटों में अवधि, 1 से 1576800, एक दिन से छोटी अवधि के लिए। दोनों दिए जाने पर यह `days` पर भारी पड़ता है।
grainTrackingGrain- हर बकेट का आकार: `day` (डिफ़ॉल्ट), `hour` या `minute`।
offset_minutesint- देखने वाले का UTC से मिनटों में अंतर, -840 से 840, ताकि दिन और घंटे के बकेट उसकी स्थानीय सीमा पर शुरू हों। डिफ़ॉल्ट 0।
प्रतिक्रिया
sincestr- ISO-8601 UTC, पहले बकेट की शुरुआत।
untilstr- ISO-8601 UTC, पढ़ने का क्षण।
totalsAudienceGrowthTotals- `contacts` हर व्यक्ति को एक बार गिनता है, चाहे वह कितनी भी सूचियों में हो, और `memberships` सूचियों को जोड़ता है, इसलिए कोई व्यक्ति पढ़ी गई हर उस सूची के लिए एक बार गिना जाता है जिसमें वह है। `subscribed` उन लोगों को, हर एक को एक बार, गिनता है जो पढ़ी गई सूचियों में से कम से कम एक के अब भी सदस्य हैं। `added` अवधि के जुड़ावों का जोड़ है, `unsubscribed` उसमें हुए सदस्यता छोड़ने का, `lists` बताता है कि कितनी ऑडियंस पढ़ी गईं, और `busiest` सबसे ज़्यादा जुड़ाव वाला बकेट है, या `None`।
serieslist[AudienceGrowthSeries]- हर ऑडियंस की एक प्रविष्टि, सबसे बड़ी पहले: `id`, `name`, `builtin` (डिफ़ॉल्ट ऑडियंस पर `True`), `total` अभी के सदस्य, `subscribed` (उनमें से वे जिन्होंने सदस्यता नहीं छोड़ी), `before` (जो `since` से पहले जुड़े), `added` (जो अवधि के भीतर जुड़े), `unsubscribed` (जिन्होंने उसके भीतर सदस्यता छोड़ी) और `buckets`, जिनमें से हर एक `bucket`, `added` और `unsubscribed` का dict है। सिर्फ़ वे बकेट सूचीबद्ध होते हैं जिनमें कोई जुड़ा या किसी ने सदस्यता छोड़ी, और उनकी कुंजियाँ ऑफ़सेट के स्थानीय समय में `YYYY-MM-DD`, `YYYY-MM-DDTHH` या `YYYY-MM-DDTHH:MM` होती हैं।
संदर्भ
audiences.list()पूरा रेफ़रेंसaudiences.list_all()पूरा रेफ़रेंसaudiences.iterate()पूरा रेफ़रेंसaudiences.get()पूरा रेफ़रेंसaudiences.create()पूरा रेफ़रेंसaudiences.update()पूरा रेफ़रेंसaudiences.delete()पूरा रेफ़रेंसaudiences.empty()पूरा रेफ़रेंसaudiences.growth()पूरा रेफ़रेंसaudiences.list_contacts()पूरा रेफ़रेंसaudiences.list_all_contacts()पूरा रेफ़रेंसaudiences.iterate_contacts()पूरा रेफ़रेंसaudiences.add_contact()पूरा रेफ़रेंसaudiences.add_contacts()पूरा रेफ़रेंसaudiences.import_contacts()पूरा रेफ़रेंसaudiences.remove_contact()पूरा रेफ़रेंसaudiences.remove_contacts()पूरा रेफ़रेंस