ब्रॉडकास्ट
`broadcasts.preview`, `send`, `list`, `listAll`, `iterate`, `get` और `cancel`।
हर मेथड
const draft = { audienceIds: ['aud_4c1b8e2a7d9f05c36b4e8a71'], from: 'Acme <[email protected]>', subject: '{{firstName|Hello}}, the September release is out', html: '<p>Hi {{firstName|there}},</p><p>Here is what changed this month.</p>', text: 'Hi {{firstName|there}}, here is what changed this month. Unsubscribe: {{unsubscribeUrl}}', tags: { campaign: 'release-2026-09' },} const reach = await openemail.broadcasts.preview(draft)console.log(reach.recipients, reach.unsubscribed, reach.suppressed) const broadcast = await openemail.broadcasts.send(draft) let latest = await openemail.broadcasts.get(broadcast.id)while (['scheduled', 'queued', 'sending'].includes(latest.status)) { await new Promise((resolve) => setTimeout(resolve, 5_000)) latest = await openemail.broadcasts.get(broadcast.id)} for await (const copy of openemail.emails.iterate({ broadcastId: broadcast.id })) { console.log(copy.id, copy.status)} const later = await openemail.broadcasts.send({ ...draft, scheduledAt: 'P1D' })await openemail.broadcasts.cancel(later.id) const history = await openemail.broadcasts.list({ audienceId: draft.audienceIds[0] })console.log(latest.status, latest.counts.sent, history.items.length)broadcast एक या अधिक ऑडियंस में सभी को एक संदेश भेजता है, हर व्यक्ति के लिए अलग कॉपी के रूप में। हर कॉपी का ठीक एक प्राप्तकर्ता होता है और कोई cc या bcc नहीं, इसलिए कोई नहीं देखता कि यह और किसे गई, और हर कॉपी अपने msg_ id, events, ट्रैकिंग और webhooks वाला सामान्य ईमेल है। emails.list({ broadcastId }) उन्हें सूचीबद्ध करता है। कॉपियाँ Sent फ़ोल्डर में नहीं रखी जातीं, क्योंकि broadcast ही रिकॉर्ड है।
send तुरंत broadcast के साथ queued में resolve होता है, या scheduledAt देने पर scheduled में, और भेजना बैकग्राउंड में चलता है। send को emails:send और audiences:read चाहिए, preview को audiences:read, list, listAll, iterate और get को emails:read, और cancel को emails:send।
हर send में एक Idempotency-Key होती है, options.idempotencyKey से आपकी या SDK की बनाई हुई, इसलिए नेटवर्क विफलता के बाद दोबारा कोशिश पहली कोशिश से बने broadcast के साथ जवाब देती है, दो बार भेजने के बजाय। preview, get और cancel दोहराने में सुरक्षित हैं और दोबारा आज़माए जाते हैं।
मर्ज फ़ील्ड
subject, html और text हर व्यक्ति के लिए उसके संपर्क से भरे जाते हैं। {{firstName}} संपर्क के नाम का पहला शब्द है, {{lastName}} बाकी हिस्सा, {{name}} पूरा नाम, {{email}} वह पता जिस पर कॉपी जाती है और {{unsubscribeUrl}} वह लिंक जो उसकी सदस्यता छुड़ाता है।
हर फ़ील्ड बार के बाद एक फ़ॉलबैक लेता है, जो तब इस्तेमाल होता है जब संपर्क के पास उसका मान न हो, इसलिए बिना नाम सहेजे गए संपर्क के लिए {{firstName|there}} "there" बन जाता है। html में मान escape किए जाते हैं, और कोई भी दूसरा {{…}} ठीक वैसा ही छोड़ा जाता है जैसा लिखा है।
सहेजा गया टेम्पलेट भेजने के लिए html और text के बजाय template दें। वही पाँच मान उस तक props के रूप में पहुँचते हैं, पर सिर्फ़ वे props जिन्हें टेम्पलेट घोषित करता है, इसलिए जो टेम्पलेट firstName घोषित करता है उसे वह मिलता है और जो नहीं करता वह इसके कारण कभी मना नहीं होता। template.props में जो कुछ है वह हर कॉपी में एक जैसा जाता है।
सदस्यता छोड़ना
हर कॉपी में एक-क्लिक सदस्यता छोड़ने के हेडर होते हैं जिनसे मेल क्लाइंट अपना सदस्यता छोड़ने का बटन दिखा पाता है, जो बड़े मेलबॉक्स प्रदाता थोक मेल से माँगते हैं। जो html या text मुख्य भाग ख़ुद {{unsubscribeUrl}} नहीं रखता उसे लिंक वाला एक पंक्ति का फ़ुटर मिलता है। टेम्पलेट ठीक वैसा ही भेजा जाता है जैसा है, इसलिए {{unsubscribeUrl}} टेम्पलेट में डालें।
सदस्यता छोड़ना व्यक्ति को हर उस ऑडियंस में सदस्यता छोड़ा हुआ चिह्नित करता है जिसमें वह broadcast गया था, और AudienceContactResource.unsubscribedAt इसे audiences.listContacts पर दिखाता है। वह ऑडियंस और पता पुस्तिका में रहता है, उसकी दूसरी ऑडियंस नहीं छुई जातीं, और उसे एक-एक करके भेजे गए मेल अब भी जाते हैं। उसे ऑडियंस से निकालकर फिर जोड़ने से वह फिर से सदस्य बन जाता है।
किसे छोड़ा जाता है
broadcast audienceIds में से कम से कम एक के हर संपर्क तक पहुँचता है, एक बार, चाहे कितनी भी उसे रखती हों। यह उस संपर्क को छोड़ता है जिसने उनमें से हर उस ऑडियंस की सदस्यता छोड़ दी है जिसमें वह है, और उस पते को जो बाउंस या शिकायत के बाद, या किसी के जोड़ने से, रोक सूची में है। send के बाद पर भेजना पहुँचने से पहले किसी ऑडियंस में जोड़े गए संपर्क को भी मिलता है।
preview बिना भेजे वही संख्याएँ लौटाता है: recipients, unsubscribed और suppressed। जो send किसी तक नहीं पहुँचेगा वह 422 no_recipients फेंकता है।
कुछ भी लिखे जाने से पहले पूरे भेजे जाने की तुलना प्लान की मासिक भेजने की सीमा से की जाती है, इसलिए जिस broadcast को कोटा पूरा नहीं कर सकता वह 429 send_quota_exceeded फेंकता है और पीछे कुछ नहीं छोड़ता। हर कॉपी एक भेजना गिनी जाती है।
स्थिति और प्रगति
get कॉपियों से counts सीधे पढ़ता है, इसलिए broadcast भेजते समय इसे बार-बार जाँचें। status scheduled या queued से sending पर जाता है और सौंपी गई हर कॉपी के जाने या विफल होने पर sent पर टिकता है। जब तक कॉपियाँ इंतज़ार में हैं यह sending रहता है, भले ही completedAt बताए कि आख़िरी व्यक्ति तक पहुँच गया। failed का मतलब है पूरा broadcast रुक गया, और lastError बताता है क्यों: from पते से अब भेजा नहीं जा सकता, टेम्पलेट हल होना बंद हो गया, प्लान बीच में ख़त्म हो गया, भेजना ख़ुद बार-बार विफल होता रहा, या एक भी कॉपी लिखी नहीं जा सकी।
cancel उस broadcast को रोकता है जो scheduled, queued या sending है। कोई और नहीं जोड़ा जाता और इंतज़ार कर रही हर कॉपी रद्द होती है, जबकि जा चुकी कॉपियाँ वापस नहीं लाई जा सकतीं। जब हर कॉपी जा चुकी हो, cancel 409 broadcast_not_cancellable फेंकता है, और रद्द broadcast को रद्द करना उसे जैसा है वैसा resolve करता है।
जवाब: BroadcastResource
send, get और cancel हर एक इनमें से एक पर resolve होते हैं। list इनके एक पेज पर resolve होता है, { items, hasMore, nextCursor }, सबसे नया पहले, और listAll और iterate हर पेज से गुज़रते हैं। preview एक BroadcastPreviewResource पर resolve होता है जिसमें audienceIds, recipients, unsubscribed और suppressed होते हैं।
idstring- स्थायी पहचान, `brd_` के बाद 24 hex अक्षर।
statusBroadcastStatus- `scheduled`, `queued`, `sending`, `sent`, `cancelled` या `failed`। `BROADCAST_STATUSES` हर एक का नाम देता है।
modeApiKeyMode- `live` या `test`, उस key से जिसने इसे बनाया। test broadcast की कॉपियाँ भेजी गई चिह्नित होती हैं और किसी को नहीं पहुँचाई जातीं।
sourceEmailSource- यह कहाँ से शुरू हुआ: key के लिए `api`, जुड़े ऐप के लिए `oauth`, ऐप के लिए `composer`, सहायक के लिए `mcp`।
audienceIdsstring[]- वे ऑडियंस जिन्हें यह भेजा गया, हर एक एक बार।
fromstring- वह पता जिससे हर कॉपी भेजी जाती है।
subjectstring- लिखे गए अनुसार विषय, मर्ज फ़ील्ड समेत। ख़ाली जब टेम्पलेट विषय देता है।
countsBroadcastCounts- `recipients` `send` के समय लिया गया अनुमान है। `created` लिखी गई कॉपियाँ गिनता है, `skipped` वे लोग जिन्हें छोड़ा गया क्योंकि तब तक उनका पता रोका जा चुका था, और `failedToQueue` वे लोग जिनकी कॉपी लिखी नहीं जा सकी। `queued`, `sending`, `sent`, `failed` और `cancelled` कॉपियों को उस स्थिति के हिसाब से गिनते हैं जिसमें हर एक अभी है।
lastErrorstring | null- broadcast क्यों विफल हुआ, या सबसे हाल की वह कॉपी जो लिखी नहीं जा सकी और क्यों। जब तक कुछ ग़लत नहीं हुआ तब तक null।
scheduledAtstring | null- ISO-8601 UTC, भेजना कब शुरू होना है। तुरंत भेजे गए broadcast के लिए null।
startedAtstring | null- ISO-8601 UTC, भेजना पहले लोगों तक कब पहुँचा।
completedAtstring | null- ISO-8601 UTC, आख़िरी व्यक्ति तक कब पहुँचा। इसके बाद भी कॉपियाँ जाने का इंतज़ार कर सकती हैं।
cancelledAtstring | null- ISO-8601 UTC, जब `cancel` ने इसे रोका।
createdAtstring- ISO-8601 UTC, जब `send` बुलाया गया। सूची का क्रम तय करता है।
updatedAtstring- ISO-8601 UTC, भेजना आगे बढ़ने के साथ अपडेट होता है।