هذه مسودة، وقد تحتاج إلى بعض العمل الإضافي.
المفردات
- trigger (المُشغِّل): يمثل اسم المُشغِّل، مثال:
user_added_to_group - triggerable (القابل للتشغيل): يمثل منطق الشيفرة المرتبط بمُشغِّل، مثال:
triggers/user_added_to_group_.rb - script (البرنامج النصي): يمثل اسم البرنامج النصي، مثال:
send_pms - scriptable (القابل للبرمجة النصية): يمثل منطق الشيفرة المرتبط ببرنامج نصي، مثال:
scripts/send_pms.rb
واجهة برمجة تطبيقات الإضافات (Plugin API)
add_automation_scriptable(name, &block)
add_automation_triggerable(name, &block)
واجهة برمجة تطبيقات البرامج النصية (Scriptable API)
الحقل (field)
field :name, component: يسمح لك بإضافة قيمة قابلة للتخصيص في واجهة المستخدم للأتمتة الخاصة بك.
قائمة المكونات الصالحة:
# يجب أن يكون foo فريدًا ويمثل اسم الحقل الخاص بك.
field :foo, component: :text # ينشئ إدخال نص
field :foo, component: :list # ينشئ إدخال اختيار متعدد حيث يمكن للمستخدمين ملء القيم
field :foo, component: :choices, extra: { content: [ {id: 1, name: 'your.own.i18n.key.path' } ] } # ينشئ مربع تحكم مع محتوى مخصص
field :foo, component: :boolean # ينشئ إدخال مربع اختيار
field :foo, component: :category # ينشئ محدد فئة
field :foo, component: :group # ينشئ محدد مجموعة
field :foo, component: :date_time # ينشئ محدد تاريخ ووقت
field :foo, component: :tags # ينشئ محدد وسوم
field :foo, component: :user # ينشئ محدد مستخدم
field :foo, component: :pms # يسمح بإنشاء قالب رسالة خاصة واحد أو أكثر
field :foo, component: :categories # يسمح بتحديد صفر أو أكثر من الفئات
field :foo, component: :key-value # يسمح بإنشاء أزواج مفتاح-قيمة
field :foo, component: :message # يسمح بتكوين رسالة خاصة مع متغيرات قابلة للاستبدال
field :foo, component: :trustlevel # يسمح بتحديد مستوى ثقة واحد أو أكثر
المُشغَّلات والقابل للتشغيل! (triggerables and triggerable!)
# يسمح لك بتعريف قائمة القابل للتشغيل المسموح بها لبرنامج نصي
triggerables %i[recurring]
# يسمح لك بفرض قابل للتشغيل لبرنامجك النصي ويسمح لك أيضًا بفرض بعض الحالة على الحقول
field :recurring, component: :boolean
triggerable! :recurring, state: { foo: false }
العناصر النائبة (placeholders)
# يسمح لك بتمييز مفتاح على أنه قابل للاستبدال في النصوص باستخدام صيغة العنصر النائب `%%sender%%`
placeholder :sender
لاحظ أن مسؤولية توفير القيم للعناصر النائبة وتطبيق الاستبدال باستخدام input = utils.apply_placeholders(input, { sender: 'bob' }) تقع على عاتق البرنامج النصي.
البرنامج النصي (script)
هذا هو قلب الأتمتة والمكان الذي يحدث فيه كل المنطق.
# يتم إرسال السياق عند تشغيل الأتمتة، ويمكن أن يختلف كثيرًا بين المُشغِّلات
script do |context, fields, automation|
end
التوطين (Localization)
سيعتمد كل حقل تستخدمه على مفاتيح i18n وسيتم تقسيمه حسب نطاق المُشغِّل/البرنامج النصي الخاص به.
على سبيل المثال، برنامج نصي قابل للبرمجة بالمحتوى التالي:
field :post_created_edited, component: :category
سيتطلب المفاتيح التالية في client.en.yml:
en:
js:
discourse_automation:
scriptables:
post_created_edited:
fields:
restricted_category:
label: Category
description: Optional, allows to limit trigger execution to this category
لاحظ أن الوصف اختياري هنا.
يتم التحكم في إصدار هذه الوثيقة - اقترح تغييرات على github.