پرش به مستندات
API

خودکارسازی‌ها چگونه کار می‌کنند

خودکارسازی با رخ دادن چیزها به افراد یکی‌یکی نامه می‌فرستد: کسی به فهرستی می‌پیوندد، فرمی را پر می‌کند، در محصول شما کاری می‌کند یا تولدش می‌رسد. مسیر را یک بار شرح می‌دهید و هر فرد با آهنگ خودش آن را می‌پیماید.

یک آغازگر و درختی از گام‌ها

هر definition یک trigger، گام entry و فهرستی از steps دارد. هر گام یک key دارد که در خودکارسازی یکتاست: یک حرف کوچک و در پی آن 2 تا 23 حرف کوچک یا رقم. هر گام گام بعدی‌اش را در next نام می‌برد، و یک branch دو گام را، yes و no. null آن مسیر را تمام می‌کند. گام‌ها یک درخت می‌سازند، پس به هیچ گامی از دو جا نمی‌رسند و چیزی به عقب برنمی‌گردد. یک خودکارسازی تا 50 گام جا دارد، با انشعاب‌هایی که حداکثر 5 سطح عمق دارند.

  • audience_joined: مخاطبی به audienceId افزوده می‌شود. مخاطبانی که با درون‌ریزی افزوده شده‌اند کنار گذاشته می‌شوند مگر اینکه includeImported برابر true باشد.
  • form_submitted: فردی با فرم formId ثبت‌نام می‌کند. با تأیید دوگانه، وقتی تأیید کند وارد می‌شود.
  • event: کد شما رویدادی به نام eventName می‌فرستد. تا 5 مورد filters روی ویژگی‌هایش مشخص می‌کنند چه کسی وارد شود.
  • date: برای هر عضو audienceId روزی می‌رسد. field یکی از birthday یا joined است، یعنی سالگرد روزی که به آن گروه مخاطب پیوست. offsetDays آن را تا یک سال جابه‌جا می‌کند: منفی برای روزهای قبل، مثبت برای روزهای بعد.
  • manual: کسی خودبه‌خود وارد نمی‌شود. افراد را از برنامه یا با نقطهٔ پایانی ثبت اضافه می‌کنید.
گامچه می‌کند
send_emailنسخهٔ منتشرشدهٔ templateId را از from می‌فرستد، که نشانی‌ای از همین فضای کاری است. props مقدارهای قالب را پر می‌کند، و subject جای موضوع قالب را می‌گیرد و فیلدهای ادغامی مثل {{firstName|there}} می‌پذیرد
waitفرد را نگه می‌دارد: برای یک duration، until یعنی تا روز هفته و ساعت مشخص‌شدهٔ بعدی، یا تا eventی که باید انجام دهد، با یک timeout که پس از آن به هر حال جلو می‌رود
branchیک پرسش می‌پرسد و فرد را به yes یا no می‌فرستد: email_opened یا email_clicked برای یک گام ایمیل قبلی، in_audience، یک field مخاطب، یا eventی که در withinDays انجام داده است
add_to_audience, remove_from_audienceتغییر می‌دهد که مخاطب در کدام گروه‌های مخاطب باشد
update_fieldمقداری را روی مخاطب می‌نویسد
webhookیکی از نقطه‌های پایانی وب‌هوک شما را با یک رویداد automation.webhook فراخوانی می‌کند
exitمسیر را زودتر تمام می‌کند. خروج به شمار می‌آید، نه تمام کردن

مقداری در props یا update_field از یکی از سه جا می‌آید: { "source": "static", "value": "…" }، { "source": "contact", "field": "firstName" } برای email، name، firstName، lastName یا attributes.<key>، و { "source": "event", "path": "orderId" } برای ویژگی‌ای از رویدادی که مسیر را شروع کرد.

یک پیش‌نویس و یک نسخهٔ فعال

ذخیره کردن definition پیش‌نویس را تغییر می‌دهد. تا وقتی POST /automations/{id}/publish پیش‌نویس را به‌صورت یک نسخهٔ شماره‌دار ثابت نکند چیزی اجرا نمی‌شود، و پس از آن published همان نسخه را نشان می‌دهد. افرادی که از قبل درون آن هستند با همان نسخه‌ای که با آن وارد شدند تمام می‌کنند، و افرادی که بعداً وارد می‌شوند نسخهٔ تازه را می‌گیرند. hasUnpublishedChanges می‌گوید پیش‌نویس جلوتر رفته است.

  • draft: هرگز منتشر نشده. کسی وارد نمی‌شود.
  • live: منتشرشده و در حال اجرا.
  • paused: کسی وارد نمی‌شود و همهٔ افراد درون آن همان‌جا که هستند می‌مانند. pausedReason دلیلش را می‌گوید: manual، یا مشکلی که موتور به آن برخورده، مثل sender_refused یا template_unavailable.
  • archived: برای همیشه کنار گذاشته شده. همهٔ افراد درون آن خارج می‌شوند، و سابقه می‌ماند.

settings جدا هستند و به‌محض ذخیره اعمال می‌شوند: timezone، یک sendWindow که ایمیل‌ها بیرون از آن منتظر می‌مانند، reentryDays پیش از آنکه همان فرد بتواند دوباره وارد شود (null یعنی یک بار)، exitOnLeave برای خارج کردن کسانی که گروه مخاطب آغازگر را ترک می‌کنند، و listAudienceId، گروه مخاطبی که لغو اشتراک در آن ثبت می‌شود.

problems مشکل‌های پیش‌نویس را فهرست می‌کند، هر کدام با یک code، path فیلد، stepKey و اینکه blocking هست یا نه. پیش‌نویسی با مشکل بازدارنده قابل انتشار نیست.

افراد درون یک خودکارسازی

هر فردی که وارد می‌شود یک حضور می‌گیرد. تا وقتی در گام‌ها پیش می‌رود active است، وقتی به پایان یک مسیر برسد completed، و وقتی زودتر خارج شود exited، همراه با یک exitReason: exit_step، unsubscribed، suppressed، left_audience، removed، archived یا failed.

  • گام‌ها حدود 15 ثانیه پس از سررسیدشان اجرا می‌شوند. هیچ فردی در یک دور از یک خودکارسازی دو ایمیل نمی‌گیرد.
  • ایمیل‌های خودکارسازی نامهٔ بازاریابی‌اند، پس هر کدام یک پیوند لغو اشتراک دارد. کسی که لغو اشتراک می‌کند از خودکارسازی‌هایی که به آن فهرست نامه می‌فرستند خارج می‌شود، و کسی که ایمیل نشانی‌اش برگشت خورده یا شکایت کرده در گام بعدی‌اش خارج می‌شود.
  • ایمیلی که نشانی‌اش نمی‌تواند نامه بگیرد نادیده گرفته می‌شود، و فرد به گام بعدی می‌رود.
  • وقتی ارسال برای همه رد شود، مثل فرستنده‌ای که دامنه‌اش را از دست داده یا قالبی که از انتشار درآمده، خودکارسازی متوقف می‌شود و pausedReason دلیلش را می‌گوید.

رویدادهای برنامهٔ شما

POST /events ثبت می‌کند که یک مخاطب کاری کرده است: order.placed، trial.started، plan.upgraded. رویداد هر خودکارسازی فعالی را که آغازگرش آن را نام می‌برد شروع می‌کند، هر کسی را که منتظرش است جلو می‌برد، و به پرسش event یک انشعاب پاسخ می‌دهد. رویدادها 90 روز نگه داشته می‌شوند.

چه کسی چه کاری می‌تواند بکند

  • خواندن به automations:read و تغییر دادن به automations:write نیاز دارد. انتشار، ادامه دادن و ارسال آزمایش به emails:send هم نیاز دارند، چون باعث می‌شوند خودکارسازی نامه بفرستد.
  • ارسال یک رویداد به contacts:write نیاز دارد، و خواندن رویدادهای یک مخاطب به contacts:read.
  • کلید API و مالک همهٔ خودکارسازی‌های فضای کاری را می‌بینند. برنامه‌ای که یک عضو وصل کرده آن‌هایی را می‌بیند که همان عضو ساخته است.
  • حذف یک خودکارسازی از برنامهٔ OAuth کد تأیید هویت می‌خواهد. کلید API هرگز به آن نیاز ندارد.
  • هر طرح در Free اجازهٔ 1 خودکارسازی فعال می‌دهد، در Starter 10، در Business 50 و در Enterprise هر تعداد. هر فضای کاری به‌طور پیش‌فرض 100 خودکارسازی نگه می‌دارد.

وب‌هوک‌های automation.entered، automation.exited و automation.paused به سامانه‌های شما می‌گویند چه کسی وارد شد، چه کسی خارج شد و یک خودکارسازی کی متوقف شد. بایگانی یک خودکارسازی کار همهٔ افراد درون آن را بدون رویداد automation.exited برای هر فرد تمام می‌کند.

از کد، ترمینال و عامل‌ها

همهٔ این‌ها در SDK هم به‌صورت openemail.automations و openemail.events، و در CLI به‌صورت openemail automations و openemail events وجود دارد. سرور MCP ابزارهای خودکارسازی دارد، پس یک عامل می‌تواند یکی بسازد، منتشرش کند و ببیند چه کسی درون آن است.