Kalo te dokumentacioni
Ruby

Transmetime

`broadcasts.preview`, `send`, `list`, `list_all`, `iterate`, `get`, `list_recipients`, `list_all_recipients`, `iterate_recipients`, `get_recipient`, `stats`, `analytics` dhe `cancel`.

Çdo metodë

broadcasts.rb
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"}} reach = client.broadcasts.preview(draft)puts reach[:recipients], reach[:unsubscribed], reach[:suppressed] broadcast = client.broadcasts.send(draft) latest = client.broadcasts.get(broadcast[:id])while %w[scheduled queued sending].include?(latest[:status])  sleep 5  latest = client.broadcasts.get(broadcast[:id])end client.broadcasts.iterate_recipients(broadcast[:id]) do |copy|  puts copy[:email], copy[:status], copy[:opens], copy[:clicks]end bounced = client.broadcasts.list_recipients(broadcast[:id], filter: "bounced")bounced.items.each { |row| puts "#{row[:emailId]} #{row[:email]}" } copy = client.broadcasts.get_recipient(broadcast[:id], "msg_01dad25067bc4dac966d515d")puts copy[:subject], copy[:bouncedAt] stats = client.broadcasts.stats(broadcast[:id], grain: "day")puts stats.dig(:totals, :opened), stats.dig(:totals, :clicked), stats.dig(:totals, :unsubscribed) lately = client.broadcasts.stats(broadcast[:id], days: 1)puts lately.dig(:window, :opened) later = client.broadcasts.send(draft, scheduledAt: "P1D")client.broadcasts.cancel(later[:id]) history = client.broadcasts.list(audience_id: draft[:audienceIds].first)puts latest[:status], latest.dig(:counts, :sent), history.items.size month = client.broadcasts.analytics(days: 30)month[:broadcasts].each do |row|  puts row[:subject], row[:sent], row[:opened]end

Një transmetim dërgon një mesazh te të gjithë në një ose më shumë audienca, si kopje më vete për çdo person. Çdo kopje ka saktësisht një marrës dhe as cc, as bcc, ndaj askush nuk sheh se kujt tjetër i shkoi, dhe çdo kopje është një email i zakonshëm me id-në e vet msg_, ngjarje, gjurmim dhe webhook-e. list_recipients i liston me atë që ndodhi me secilën. Kopjet nuk ruhen në dosjen Të dërguarat, sepse regjistri është vetë transmetimi.

send kthehet menjëherë me transmetimin queued, ose scheduled kur jepni scheduledAt:, dhe dërgimi kryhet në sfond. send kërkon emails:send dhe audiences:read, dhe preview kërkon audiences:read. list, list_all, iterate, get, list_recipients, list_all_recipients, iterate_recipients, get_recipient, stats dhe analytics kërkojnë emails:read, dhe cancel kërkon emails:send.

Çdo send mbart një Idempotency-Key, tuajin përmes idempotency_key: ose një që e krijon gem-i, ndaj një riprovim pas një dështimi të rrjetit përgjigjet me transmetimin që krijoi përpjekja e parë, me replayed të vendosur në true, në vend që të dërgojë dy herë. preview, get, cancel dhe çdo lexim janë të sigurta për t’u përsëritur dhe riprovohen.

schedule_broadcast.rb
broadcast = client.broadcasts.send(  audienceIds: ["aud_4c1b8e2a7d9f05c36b4e8a71"],  from: "Acme <[email protected]>",  subject: "Doors open on Friday",  text: "Hi {{firstName|there}}, doors open at nine. Unsubscribe: {{unsubscribeUrl}}",  scheduledAt: Time.now + 3600,  idempotency_key: "doors-open-2026-10") puts broadcast[:id], broadcast[:status], broadcast[:replayed]

Fushat e një transmetimi janë argumente me fjalë kyçe ose një Hash i vetëm, dhe ruajnë emrat camelCase të API-së (audienceIds:, scheduledAt:). idempotency_key: dhe api_key: janë opsione të thirrjes dhe nuk dërgohen kurrë si fusha. Fjalët kyçe të dhëna pranë një Hash-i bashkohen me të, ndaj send(draft, scheduledAt: "P1D") e dërgon të njëjtin draft një ditë më vonë. scheduledAt: merr një Time, një DateTime, një string ISO 8601 ose një kohëzgjatje si PT2H, dhe një Time dërgohet si çast UTC. preview dërgon vetëm audienceIds nga ajo që i jepni, ndaj merr të njëjtin Hash si send. Një përgjigje është një Hash me çelësa Symbol, ndaj broadcast[:status] lexon statusin.

Fushat e bashkimit

subject, html dhe text plotësohen për çdo person nga kontakti i tij. {{firstName}} është fjala e parë e emrit të kontaktit, {{lastName}} pjesa tjetër, {{name}} emri i plotë, {{email}} adresa ku shkon kopja dhe {{unsubscribeUrl}} lidhja që e çregjistron.

Çdo fushë pranon një vlerë rezervë pas një vije, e përdorur kur kontakti nuk ka vlerë për të, ndaj {{firstName|there}} bëhet "there" për një kontakt të ruajtur pa emër. Vlerat maskohen në html, dhe çdo {{…}} tjetër lihet saktësisht siç është shkruar.

Jepni template: në vend të html: dhe text: për të dërguar një shabllon të ruajtur, si Hash me id dhe, sipas dëshirës, version, props dhe slots. Të njëjtat pesë vlera i mbërrijnë si props, por vetëm props që shablloni deklaron, ndaj një shabllon që deklaron firstName e merr atë, dhe një që nuk e deklaron nuk refuzohet kurrë për shkak të tij. Çdo gjë te props e tij shkon njësoj te çdo kopje.

Çregjistrimi

Çdo kopje mban kokat e çregjistrimit me një klikim që i lejojnë një klienti poste të shfaqë butonin e vet të çregjistrimit, gjë që kërkojnë ofruesit e mëdhenj të kutive postare nga posta masive. Një trup html ose text që nuk e vendos vetë {{unsubscribeUrl}} merr një fundfaqe me një rresht me lidhjen. Një shabllon dërgohet saktësisht ashtu siç është, ndaj vendosni {{unsubscribeUrl}} në shabllon.

Çregjistrimi e shënon personin si të çregjistruar në çdo audiencë ku shkoi ai transmetim, dhe audiences.list_contacts e tregon këtë te unsubscribedAt i rreshtit të tij, siç përshkruan faqja e audiencave. Ai mbetet në audiencë dhe në librin e adresave, audiencat e tjera të tij nuk preken, dhe posta që i dërgohet një mesazh në herë vazhdon të dalë. Heqja nga audienca dhe shtimi sërish e bën përsëri të regjistruar.

Kush kapërcehet

Një transmetim arrin çdo kontakt në të paktën një nga audienceIds, një herë sado prej tyre ta mbajnë. Kapërcen një kontakt që është çregjistruar nga çdo prej atyre audiencave ku ndodhet, dhe një adresë në listën e bllokimit pas një kthimi ose ankese, ose sepse dikush e shtoi aty. Një kontakt i shtuar në një nga audiencat pas send, por para se dërgimi ta arrijë, përfshihet.

preview kthen të njëjtët numra pa dërguar: recipients, unsubscribed dhe suppressed. Një send që nuk do të arrinte askënd ngre 422 no_recipients si OpenEmail::ValidationError.

I gjithë dërgimi krahasohet me dërgimet mujore të planit para se të shkruhet ndonjë gjë, ndaj një transmetim që kuota nuk e mbulon ngre 429 send_quota_exceeded si OpenEmail::RateLimitError dhe nuk lë asgjë pas. Çdo kopje numërohet si një dërgim.

Gjendja dhe ecuria

get i lexon counts drejtpërdrejt nga kopjet, ndaj pyeteni periodikisht ndërsa një transmetim dërgon, me sleep midis thirrjeve siç bën shembulli më lart. status kalon nga scheduled ose queued te sending dhe ngulet te sent pasi çdo kopje e dorëzuar ka dalë ose ka dështuar. Mbetet sending sa kohë që kopjet ende presin, edhe pasi completedAt thotë se u arrit personi i fundit. failed do të thotë se i gjithë transmetimi u ndal, dhe lastError tregon pse: nga adresa from nuk mund të dërgohet më, shablloni pushoi së zgjidhuri, plani mbaroi në mes të rrugës, vetë dërgimi vazhdoi të dështonte, ose nuk u shkrua dot asnjë kopje.

cancel ndal një transmetim që është scheduled, queued ose sending. Nuk shtohet askush tjetër dhe çdo kopje që pret ende anulohet, ndërsa kopjet që kanë dalë nuk mund të tërhiqen. Pasi ka dalë çdo kopje, cancel ngre 409 broadcast_not_cancellable si OpenEmail::ConflictError, dhe anulimi i një transmetimi të anuluar e kthen atë ashtu siç është.

Kë arriti

list_recipients kthen një OpenEmail::Page me njerëzit te të cilët shkoi një transmetim, një rresht për çdo kopje, të renditur sipas adresës, me items, has_more? dhe next_cursor. list_all_recipients i përshkon të gjitha faqet në një Array të vetëm, dhe iterate_recipients ia jep kopjet një nga një një blloku, duke marrë faqen e radhës vetëm kur cikli e kërkon. Pa bllok kthen një Enumerator. limit: shkon nga 1 deri në 200, me 50 si parazgjedhje, dhe një cursor: jepet prapa me të njëjtat filter: dhe q:.

`filter:`Mban
pendingKopje ende në radhë, të planifikuara ose duke u dërguar.
sentKopje që u nisën.
deliveredKopje që serveri marrës i pranoi.
openedKopje të hapura të paktën një herë.
not_openedKopje të dërguara dhe kurrë të hapura.
clickedKopje me të paktën një klikim të gjurmuar.
bouncedKopje që u kthyen.
complainedKopje që personi i raportoi si spam.
failedKopje që dështuan ose u anuluan.
unsubscribedPersona që u çregjistruan pasi u nis transmetimi.

OpenEmail::BROADCAST_RECIPIENT_FILTERS emërton çdo filtër, dhe q: kërkon te adresa dhe emri, pa dalluar shkronjat e mëdha a të vogla. Hapjet dhe klikimet i lënë jashtë proxy-t e imazheve dhe skanuesit e lidhjeve, dhe mbeten 0 kur transmetimi u nis me gjurmimin të çaktivizuar.

get_recipient(id, email_id) kthen një kopje: i njëjti rresht, plus subject, html dhe text saktësisht siç i mori ai person, me fushat e bashkimit të plotësuara dhe lidhjen e vet të çregjistrimit. Jepni emailId e një rreshti si email_id. HTML-ja është nga para se të shtohej gjurmimi i hapjeve dhe klikimeve. Një email_id që nuk është kopje e këtij transmetimi ngre 404 recipient_not_found, dhe një transmetim i panjohur ngre 404 broadcast_not_found, të dyja si OpenEmail::NotFoundError.

stats kthen totalet dhe një seri. totals numëron kopjet sent, delivered, bounced, complained dhe failed, me pending për ato që ende presin, dhe personat që opened, clicked dhe unsubscribed, me opens dhe clicks si numërime ngjarjesh. series është e rrallë dhe nis nga më e vjetra, një interval për çdo grain: (minute, hour ose day, me parazgjedhje hour) në të cilin ndodhi diçka, i ndarë në zonën offset_minutes: në lindje të UTC. Jepni Time.now.utc_offset / 60 për zonën lokale. Ajo e numëron çdo person një herë, në herën e parë kur i ndodhi, ndaj shuma përputhet me totalet.

Jepini days: ose minutes: te stats për të lexuar edhe çfarë ndodhi së fundmi. Atëherë window numëron çfarë u dorëzua, u kthye, u raportua si spam, u hap, u klikua dhe u çregjistrua brenda saj, dhe series mban vetëm intervalet e saj, ndërsa totals mbulon ende gjithë transmetimin. Pa asnjërën prej tyre, window është nil.

Një çelës i kufizuar në adresa ose domene të caktuara arrin vetëm transmetimet e dërguara nga një adresë ose domen që mban. list, list_all dhe iterate i lënë jashtë të tjerat, dhe get, metodat e marrësve, stats dhe cancel ngrenë 404 broadcast_not_found për to.

Përgjigjja: një transmetim

send, get dhe cancel kthejnë secili një të tillë, një Hash me çelësa Symbol, dhe send shton replayed. list kthen një OpenEmail::Page me to, nga më i riu, dhe list_all e iterate përshkojnë çdo faqe. preview kthen një Hash me audienceIds, recipients, unsubscribed dhe suppressed. list_recipients kthen një OpenEmail::Page me rreshta marrësish, get_recipient kthen një rresht me përmbajtjen e tij, dhe stats kthen një Hash me broadcastId, grain, totals, window dhe series. analytics kthen një Hash me totals, series dhe një rresht për çdo transmetim te broadcasts. Kohët janë string-e ISO 8601, të cilat i analizon Time.iso8601.

idString
Identifikuesi i qëndrueshëm, `brd_` i ndjekur nga 24 shenja heksadecimale.
statusString
`scheduled`, `queued`, `sending`, `sent`, `cancelled` ose `failed`. `OpenEmail::BROADCAST_STATUSES` emërton secilin.
modeString
`live` ose `test`, sipas çelësit që e krijoi. Kopjet e një transmetimi testues shënohen të dërguara dhe nuk i dorëzohen askujt.
sourceString
Ku nisi: `api` për një çelës, `oauth` për një aplikacion të lidhur, `composer` për aplikacionin, `mcp` për një asistent.
audienceIdsArray<String>
Audiencat ku u dërgua, secila një herë.
fromString
Adresa nga e cila dërgohet çdo kopje.
subjectString
Subjekti siç është shkruar, me fushat e bashkimit. Bosh kur subjektin e jep një shabllon.
countsHash
`recipients` është vlerësimi i marrë te `send`. `created` numëron kopjet e shkruara, `skipped` njerëzit e kapërcyer sepse adresa e tyre ishte e bllokuar deri atëherë, dhe `failedToQueue` njerëzit kopja e të cilëve nuk u shkrua dot. `queued`, `sending`, `sent`, `failed` dhe `cancelled` numërojnë kopjet sipas gjendjes në të cilën është secila tani.
lastErrorString or nil
Pse dështoi transmetimi, ose kopja më e fundit që nuk u shkrua dot dhe pse. Është nil sa kohë që nuk ka shkuar asgjë keq.
scheduledAtString or nil
ISO-8601 UTC, kur duhet të nisë dërgimi. Është nil për një transmetim të dërguar menjëherë.
startedAtString or nil
ISO-8601 UTC, kur dërgimi arriti njerëzit e parë.
completedAtString or nil
ISO-8601 UTC, kur u arrit personi i fundit. Kopjet mund të presin ende të dalin pas kësaj.
cancelledAtString or nil
ISO-8601 UTC, kur `cancel` e ndali.
createdAtString
ISO-8601 UTC, kur u thirr `send`. Përcakton rendin e listës.
updatedAtString
ISO-8601 UTC, përditësohet ndërsa dërgimi ecën.

Përgjigjja: një rresht marrësi

Çdo rresht i list_recipients, list_all_recipients dhe iterate_recipients, si Hash me çelësa Symbol. Hash-i që kthen get_recipient shton subject, html dhe text.

emailIdString
Id-ja `msg_` e kopjes së këtij personi. `get_recipient` e lexon me përmbajtjen e saj, dhe `emails.get` e lexon si email të dërguar, siç përshkruan faqja e listimit dhe e leximit të emaileve.
contactIdString or nil
Kontakti te i cili shkoi, ose nil kur kontakti është fshirë që atëherë.
emailString
Adresa ku shkoi kopja.
nameString or nil
Emri në kontakt.
statusString
Gjendja e kopjes: `queued`, `scheduled`, `sending`, `sent`, `failed` ose `cancelled`.
sentAtString or nil
ISO-8601 UTC, kur u nis kopja.
deliveredAtString or nil
ISO-8601 UTC, kur serveri marrës e pranoi, `email.delivered` i parë.
bouncedAtString or nil
ISO-8601 UTC, kur u kthye, `email.bounced` i parë.
complainedAtString or nil
ISO-8601 UTC, kur personi e raportoi si spam, `email.complained` i parë.
failureString or nil
Pse dështoi kopja, nëse dështoi.
opensInteger
Hapjet e regjistruara, pa ato që krijojnë proxy-t e imazheve dhe skanerët. 0 kur gjurmimi ishte i fikur.
firstOpenAtString or nil
ISO-8601 UTC, hapja e parë.
clicksInteger
Klikimet e regjistruara në lidhje të gjurmuara, pa skanerët.
firstClickAtString or nil
ISO-8601 UTC, klikimi i parë.
unsubscribedAtString or nil
ISO-8601 UTC, kur ky person u çregjistrua nga njëra prej audiencave të transmetimit pasi ai u nis, përmes lidhjes së tij ose ndryshe.