B-iggy
(B Iggy)
5 يوليو 2020، 9:16ص
1
مرحباً يا أصدقاء،
لقد بحثت ولكن لم أستطع العثور على التوجيه الصحيح.
أريد نشر رد تلقائي داخل موضوع بمجرد دفع (push) التزام (commit) في مستودع على GitHub - تلقائياً عبر Webhook.
أعمل مع Integromat ونجحت بالفعل في فعل شيء مشابه مع المواضيع
لقد قمت بإعداد واجهة برمجة تطبيقات (API) في Discourse، و Webhook في GitHub، وسيناريو POST HTTP في Integromat، لكنني أفتقد القطعة النهائية لجعلها تعمل.
يبدو أن محاولتي الحالية كالتالي وهي لا تعمل.
أعتقد أن السبب هو أن Discourse لا يعرف ماذا يفعل بطلب POST.
أعني أن هناك /new-message؟ و /new-topic؟ ولكن لا يوجد /new-reply؟
ربما يكون الأمر تافهاً، شكراً مقدماً على مساعدتكم!
bartv
(Bart )
5 يوليو 2020، 9:37ص
2
يمكنك معرفة كيفية بناء طلبك من خلال الهندسة العكسية لـ Discourse API. ببساطة، افتح أداة فحص الشبكة، وانشر ردًا على موضوع، ثم راقب ما يحدث في الخلفية:
يتم دعم Discourse بواجهة برمجة تطبيقات JSON كاملة. كل ما يمكنك القيام به على الموقع يمكنك أيضًا القيام به باستخدام واجهة برمجة تطبيقات JSON.
تتوفر وثائق واجهة برمجة التطبيقات على docs.discourse.org . يمكنك أيضًا استخدام مكتبة العميل discourse_api الخاصة بلغة Ruby. ومع ذلك، ليست كل نقطة نهاية موثقة.
لتحديد كيفية القيام بشيء ما باستخدام واجهة برمجة تطبيقات JSON، إليك بعض الخطوات التي يمكنك اتباعها.
مثال: إعادة تصنيف موضوع.
انتقل إلى موضوع وابدأ في تحرير فئة:
[image]
افتح أدوات مطور Chrome، …
B-iggy
(B Iggy)
5 يوليو 2020، 9:42ص
3
شكرًا جزيلاً لك @bartv
سأقوم بذلك الآن
السؤال الوحيد هو: هل جميع الحقول إلزامية لإجراء استدعاء POST للرد؟ إنها كثيرة جدًا، وأعتقد أن بعض الحقول لا يمكن ملؤها ديناميكيًا من قبلي أو أنها عرضة للأخطاء! (مثل الحقل: id على سبيل المثال)
في Zapier على سبيل المثال، قمت مرة بإنشاء Webhook ناجح لنشر مواضيع باستخدام حقول البيانات تلك فقط
bartv
(Bart )
5 يوليو 2020، 9:44ص
4
أشك في أن جميعها مطلوبة. فقط جربها
B-iggy
(B Iggy)
5 يوليو 2020، 10:16ص
5
فقط كمعلومة، الفشل ليس بسبب حقول البيانات بل بسبب CSRF سيئ.
انظر هنا:
API requests with the Content-Type as “application/json” often receive an unhelpful message like “BAD CSRF”, so we should improve the error messaging so that it provides more details as to why they are receiving this error message.
@blake هل هذا يعني أنني بحاجة إلى تعيين api_username و api_key في الرأس (Header)؟
تقدّمي الحالي الذي يفشل:
blake
(Blake Erickson)
6 يوليو 2020، 3:47م
6
نعم، ستحتاج إلى تعيين Api-Username و Api-Key في الرأس. تأكد من استبدال _ بـ -. ستحتاج أيضًا إلى إزالة بيانات الاعتماد من الجسم.
B-iggy
(B Iggy)
6 يوليو 2020، 4:35م
7
رائع، شكرًا جزيلاً لك @blake !
هذا هو الحل.
بالنسبة لشخص قضى ساعات في البحث عبر Google وSearch كما فعلتُ، فإن الحل هو: