إصدار تجريبي (Beta). واجهة برمجة تطبيقات الأتمتة قيد الإصدار التجريبي ونحن نجمع الملاحظات بنشاط. قد تتغير نقاط النهاية والحمولات والحدود مع تطويرنا لها. يُرجى إرسال الملاحظات وتقارير الأخطاء إلى الدعم لكي نتمكّن من ترتيب أولويات التحسينات الصحيحة.
تعني
sent أن Meta قبلت الرسالة، وليس أن المستلم قد استلمها. تُحدَّد التسليم في نهاية المطاف بإعداد Message requests الخاص بالمستلم على Instagram: إذا لم يكن يسمح بطلبات الرسائل من الجميع، تُعيد Meta استجابة نجاح وتُسقط الرسالة بصمت، وهذا غير مرئي على أي مستوى في واجهة برمجة التطبيقات. حتى الرسالة الخاصة المُشغَّلة بتعليق التي تصل بنجاح تظهر لدى المستلم كـ طلب رسالة يجب على المستلم قبوله (إلا إذا كانت هناك محادثة قائمة بالفعل بين الحسابين). راجع رسالة أتمتة أُرسلت لكنها لم تُسلَّم للاطلاع على الشرح الكامل.كيف يعمل
1
أنشئ أتمتة
POST /automations مع المشغّلات والإجراءات التي تريدها. تنشط الأتمتة على الفور.2
يتفاعل مستخدم نهائي
يُعلّق شخص ما على منشورك أو يردّ على ستوري أو يُرسل رسالة خاصة أو يتفاعل مع رسالة خاصة. ترسل Meta الـ Webhook إلى Ayrshare.
3
يطابق Ayrshare ويُرسل
يبحث المحرّك عن كل قاعدة تُطابق الحدث، ويتحقق من إزالة التكرار لكل إجراء وحدّك اليومي للرسائل الخاصة، ثم يُنفّذ كل إجراء. يُطبَّق تأخير عشوائي من 20 إلى 60 ثانية على إرسال الرسائل الخاصة للبقاء ضمن قواعد Instagram لمكافحة الرسائل غير المرغوبة.
4
افحص ما تم إطلاقه
يُعيد
GET /automations/:id/activity سجل التدقيق — كل محاولة إرسال ونتائج كل إجراء وأي أخطاء.المشغّلات
يمكنك ربط ما يصل إلى 50 مشغّلًا بأتمتة واحدة. كل مشغّل عبارة عن اتحاد مميّز على الحقلtype؛ توجد الحقول الخاصة بالنوع على نفس المستوى. جميع المشغّلات مقتصرة على Instagram في الإصدار v1.
يكون تطابق الكلمات المفتاحية غير حساس لحالة الأحرف ومطابقة كلمة كاملة. يستوفي الحدث مشغّلًا مُصفّى بالكلمات المفتاحية إذا كان يحتوي على أي كلمة من الكلمات المُهيَّأة. اترك
storyId فارغًا في مشغّل الستوري للإطلاق على كل ستوري للحساب المتصل.
الإجراءات
يمكنك ربط ما يصل إلى 50 إجراءً بأتمتة واحدة. تُنفَّذ بالتتابع؛ ويُسجَّل كل نتيجة في صف النشاط.نافذة إزالة التكرار لكل إجراء
يقبل كل إجراء — بغض النظر عن نوعه — حقلًا اختياريًا إضافيًا على المستوى الأعلى باسمdedupWindowMinutes يتجاوز نافذة 7 أيام الافتراضية لإزالة التكرار لكل مستلم لذلك الإجراء فقط.
- عيّنه إلى
0لتعطيل إزالة التكرار كليًا لذلك الإجراء (نموذجي لـfire_webhook/send_emailحيث يتوقّع المستقبِل كل حدث). - محدود بحد أقصى
525600(سنة واحدة).
إجراء مع تجاوز إزالة تكرار لمدة 24 ساعة
حمولة fire_webhook
عندما يُنفَّذ fire_webhook فإنه يُرسل POST بجسم JSON إلى عنوان Webhook على مستوى حسابك:
recipientUsername وkeyword بقيمة null عندما لا يُوفّرها المشغّل (على سبيل المثال، dm_keyword لا يحمل اسم مستخدم في حمولة Meta؛ ولا يوجد كلمة مفتاحية لـ story_reply).
متغيرات القالب
تدعمsend_dm.message وsend_email.subject وsend_email.message استبدال {{placeholder}}. تُرفض العلامات النائبة غير المعروفة عند الإنشاء/التحديث (كخطأ تحقّق 473) بحيث لا يُسرّب خطأ إملائي سلسلة {{foo}} الحرفية إلى رسالة موجّهة للعميل.
لا يوجد
sender_email / recipient_email. لم يتم كشفهما عمدًا — بريدك الإلكتروني للفوترة لا مكان مشروع له في رسالة خاصة إلى غريب، ولا توفّر Meta بريد المستلم الإلكتروني في أي Webhook خاص بـ IG. تجنُّب العلامات النائبة يمنع الكشف العرضي.حدود المعدل والقيود
يُحتسب الحد الأقصى للأتمتة النشطة لكل ملف تعريف مستخدم، وليس لكل حساب أصلي. يحصل كل ملف شخصي ضمن حسابك على 10 لـ Business / 50 لـ Enterprise الخاصة به، لذا يمكن لحساب به عدة ملفات شخصية تشغيل هذا العدد من الأتمتة على كل منها. يُحصي الأتمتة النشطة ويُطبَّق على كل من
POST (إنشاء) وPUT لإعادة التنشيط (active: false → true)، ويعرض كل منهما رمز الخطأ 470. تحتاج إلى حد أعلى لكل ملف شخصي؟ اتصل بالدعم لرفعه لحسابك.
يُطبَّق الحد اليومي للرسائل الخاصة لكل حساب Ayrshare أصلي، ويُتشارك عبر جميع ملفاتك الشخصية، مع حد فرعي لكل ملف شخصي بحيث لا يستنزف ملف شخصي واحد مشغول حصة الحساب بأكمله. عند بلوغ حد الرسائل الخاصة، يُسجل صف النشاط الحالة rate_limited ولا تُرسَل الرسالة الخاصة.
القيود الهيكلية على أتمتة واحدة: من 1 إلى 50 مشغّلًا، من 1 إلى 50 إجراءً.
يُحدد Instagram نفسه الرسائل الخاصة بنحو 200/ساعة لكل حساب. يُوزّع المحرك الإرسال بتأخير عشوائي من 20 إلى 60 ثانية للبقاء بأمان تحت هذا الحد.
حالات النشاط
يحمل صف فيGET /automations/:id/activity حالة status على المستوى الأعلى بالإضافة إلى status لكل إجراء داخل actionResults[]:
pending وin_flight مؤقتتان؛ وكل الحالات الأخرى نهائية.
sent هي إيصال قبول من المنصة، وليست إيصال تسليم. لا يكشف Instagram تسليم الرسائل لأي واجهة برمجية. يوسَم إجراء send_dm بـ sent في اللحظة التي يقبل فيها Instagram الرسالة؛ أما ما إذا كان المستلم سيستلمها فعليًا فيتوقف على إعداد Message requests الخاص به على Instagram، وهو ما لا يستطيع Ayrshare قراءته أو التأثير فيه. راجع رسالة أتمتة أُرسلت لكنها لم تُسلَّم.رموز الخطأ
تُعيد واجهة برمجة التطبيقات شكلين من الأخطاء:- أخطاء قواعد العمل تحمل رمز
codeمرقّم للأتمتة (مثل{ "action": "automation", "code": 469, ... }). - أخطاء التحقق — أي جسم طلب مشوّه (حقول مفقودة أو غير صالحة، متغيرات قوالب غير معروفة، مفاتيح غير مُعتمدة) — تُعاد كاستجابة واحدة
473مع كائنdetailsيُدرج الحقول المخالفة.detailsهي مخرجات المُحقِّق (formErrorsبالإضافة إلىfieldErrors). فرِّق بناءً علىdetails، وليس على رمز لكل حالة. فيfieldErrors، تكون المفاتيح هي حقول الطلب على المستوى الأعلى (triggers،actions): يُبلَّغ عن مشكلة داخل إدخال محدد، مثل مشغّل يفتقر إلىkeywords، تحت ذلك الحقل (مثلtriggers)، بينما يحملformErrorsالمشكلات على مستوى الكائن مثل المفاتيح غير المُعتمدة.
ما لا تسمح به Meta
بعض القدرات المطلوبة عادةً غير مدعومة لأن Meta لا تسمح بها في واجهة Instagram العامة:- رسالة خاصة تلقائية للمتابعين الجدد. لا يُصدر Instagram Webhook للمتابعة.
- الرسائل الخاصة الأولى للغرباء. تشترط Meta أن يكون المستلم قد تفاعل أولًا (تعليق، رد، رسالة خاصة، تفاعل) قبل أن يتمكّن حساب أعمال من مراسلته. كل مشغّل مدعوم مرتبط بمثل هذا التفاعل — لكن لاحظ أن كونك مسموحًا لك بالإرسال لا يعني أن الرسالة ستُسلَّم: إذ يمكن لإعداد Message requests الخاص بالمستلم على Instagram أن يجعل Meta تقبل الرسالة ثم تُسقطها بصمت (راجع رسالة أتمتة أُرسلت لكنها لم تُسلَّم).
- الحملات الصادرة الجماعية. تُطبَّق الحدود بالساعة للرسائل الخاصة وقواعد مكافحة الإساءة على مستوى المنصة.
الاستخدام متعدد الملفات الشخصية
تحترم نقاط النهاية ترويسةprofileKey. مرّر مفتاح ملف فرعي وستُنشأ/تُدار الأتمتة تحت ذلك الملف. تنقسم حدود المعدل بين الملفات الشخصية عبر حد فرعي لكل ملف شخصي بحيث لا يستنزف ملف شخصي كثير الحديث حصة الحساب الأصلي.
الأسئلة الشائعة
هل يمكنني الإطلاق عند وجود متابع جديد؟
هل يمكنني الإطلاق عند وجود متابع جديد؟
لا. لا يُصدر Instagram Webhook للمتابعة، ولا تسمح Meta لتطبيقات الأطراف الثالثة بإرسال رسالة خاصة إلى مستخدم لم يتفاعل أولًا. كل مشغّل مدعوم (
comment_keyword، story_reply، dm_reaction، dm_keyword) مرتبط بمثل هذا التفاعل، وهو ما يجعل الإرسال جائزًا.لماذا يظهر نشاط بحالة `sent` ومع ذلك لم يستلم المستلم الرسالة الخاصة؟
لماذا يظهر نشاط بحالة `sent` ومع ذلك لم يستلم المستلم الرسالة الخاصة؟
تعني
sent أن Instagram قبل الرسالة، وليس أنها سُلِّمت. يعتمد التسليم على إعداد Message requests الخاص بالمستلم على Instagram — إذا لم يكن يسمح بطلبات الرسائل من الجميع، تُعيد Meta استجابة نجاح وتُسقط الرسالة بصمت، دون أي خطأ أو Webhook أو إشارة أخرى على أي واجهة برمجية. كما أن الرسالة الخاصة الناجحة المُشغَّلة بتعليق تصل بوصفها طلب رسالة يجب على المستلم قبوله (إلا إذا كانت هناك محادثة قائمة بالفعل). هذا قيد دائم في منصة Instagram. راجع رسالة أتمتة أُرسلت لكنها لم تُسلَّم.ماذا يحدث إذا كان رمز وصولي غير صالح عند إطلاق أتمتة؟
ماذا يحدث إذا كان رمز وصولي غير صالح عند إطلاق أتمتة؟
يُسجل صف النشاط الحالة
auth_error ولا يُعاد محاولة إرسال الرسالة الخاصة. أعِد ربط الحساب، ثم سيُطلق التفاعل المطابق التالي بشكل طبيعي.لماذا يوجد تأخير قبل إرسال الرسالة الخاصة؟
لماذا يوجد تأخير قبل إرسال الرسالة الخاصة؟
يُجدوَل كل إرسال
send_dm بعد 20 إلى 60 ثانية من التفاعل ليبدو طبيعيًا لأنظمة Instagram لمكافحة الرسائل غير المرغوبة. لا يوجد تأخير عشوائي لإجراءات fire_webhook وsend_email. الختم الزمني created في صف النشاط هو وقت تطابق المشغّل؛ وcompletedAt هو وقت انتهاء الإرسال.هل تُحفظ صفوف النشاط إلى الأبد؟
هل تُحفظ صفوف النشاط إلى الأبد؟
تُحفظ صفوف النشاط إلى أجل غير مسمى للتتبع والتحليلات. تُعيد نقطة نهاية
GET /automations/:id/activity صفوف آخر 30 يومًا لأغراض الأداء. (يستخدم حارس إزالة التكرار نافذته الخاصة لكل إجراء — بشكل افتراضي 7 أيام — وهي غير مرتبطة بفترة استرجاع النشاط.)هل يؤدي حذف أتمتة إلى إزالة سجل نشاطها؟
هل يؤدي حذف أتمتة إلى إزالة سجل نشاطها؟
لا. الحذف هو حذف ناعم: يُوسَم السجل الرئيسي بـ
deleted، ولا تحدث عمليات إرسال جديدة، لكن تبقى صفوف النشاط التاريخية قابلة للقراءة عبر نقطة نهاية النشاط.نقاط النهاية
POST /automations— إنشاء أتمتة جديدةGET /automations— سرد الأتمتة الخاصة بكGET /automations/:id— جلب أتمتة واحدة مع مشغّلاتها وإجراءاتهاPUT /automations/:id— تحديث جزئي؛ إيقاف مؤقت عبرactive: falseDELETE /automations/:id— حذف ناعمGET /automations/:id/activity— سجل تدقيق الإرسال مع ترقيم صفحات بالمؤشر