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 is backed by a complete JSON api. Anything you can do on the site you can also do using the JSON api.
The API is documented at docs.discourse.org . You can also use the discourse_api Ruby gem as a client library. However, not every endpoint is documented.
To determine how to do something with the JSON API here are some steps you can follow.
Example: recategorize a topic.
Go to a topic and start editing a category:
[image]
Open Chrome dev tools, switch to the Network tab, select …
إعجاب واحد (1)
B-iggy
(B Iggy)
5 يوليو 2020، 9:42ص
3
شكرًا جزيلاً لك @bartv
سأقوم بذلك الآن
السؤال الوحيد هو: هل جميع الحقول إلزامية لإجراء استدعاء POST للرد؟ إنها كثيرة جدًا، وأعتقد أن بعض الحقول لا يمكن ملؤها ديناميكيًا من قبلي أو أنها عرضة للأخطاء! (مثل الحقل: id على سبيل المثال)
في Zapier على سبيل المثال، قمت مرة بإنشاء Webhook ناجح لنشر مواضيع باستخدام حقول البيانات تلك فقط
bartv
(Bart )
5 يوليو 2020، 9:44ص
4
أشك في أن جميعها مطلوبة. فقط جربها
إعجاب واحد (1)
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)؟
تقدّمي الحالي الذي يفشل:
3 إعجابات
blake
(Blake Erickson)
6 يوليو 2020، 3:47م
6
نعم، ستحتاج إلى تعيين Api-Username و Api-Key في الرأس. تأكد من استبدال _ بـ -. ستحتاج أيضًا إلى إزالة بيانات الاعتماد من الجسم.
إعجابَين (2)
B-iggy
(B Iggy)
6 يوليو 2020، 4:35م
7
رائع، شكرًا جزيلاً لك @blake !
هذا هو الحل.
بالنسبة لشخص قضى ساعات في البحث عبر Google وSearch كما فعلتُ، فإن الحل هو:
إعجابَين (2)
system
(system)
تم إغلاقه في
5 أغسطس 2020، 4:35م
8
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.