اربط موقعك بأي خدمة خارجية — والمفتاح يضل بالخادم، مو بالكود
تقدر تربط الموقع اللي بنيته على ابني بأي خدمة خارجية تتكلّم HTTP: تويليو للرسائل، بوت تيليجرام، واتساب أعمال، Calendly، Airtable، Notion، خرائط جوجل، Slack، Discord، أو API عندك أنت. الوكيل يبحث بالوب ويقرأ توثيق المزوّد الحقيقي ويقدر يجرّب نقطة النهاية فعلياً قبل ما يكتب سطر كود ضدها. المفتاح تدخله ببطاقة إدخال آمنة داخل المحادثة، والقيمة تروح للخادم مباشرة — ما تمر بالنموذج ولا بنص المحادثة. بعدها الكود ينادي المفتاح باسمه فقط، وقيمته ما تنزل للمتصفح ولا تطلع بالسجلات.
نُشر في:
ابدأ مجاناًوين يشتغل الربط — داخل دالة سحابية، مو بالمتصفح
كل نداء لخدمة خارجية يصير داخل دالة سحابية على الخادم، مو من كود الصفحة. هذا مو تفصيل تقني، هذا هو الفرق كله: أي شي بكود الصفحة يقدر أي زائر يفتحه ويقرأه، بما فيه مفتاحك.
الدالة ملف اسمه functions/<الاسم>.js فيه دالة handler، وتناديها من صفحتك بسطر واحد: cloud.fn.call مع اسم الدالة والبيانات. الزائر يشوف النتيجة بس، وما يشوف لا الرابط الخارجي ولا المفتاح ولا شكل الطلب.
داخل الدالة عندك أدوات جاهزة: ebnii.fetch للنداء الخارجي، وebnii.secrets.get لجلب المفتاح باسمه، وebnii.db للكتابة والقراءة بقاعدة الموقع بصلاحية صاحب الموقع، وebnii.email.send للإرسال لأي عنوان، وebnii.crypto للتوقيع والتحقق (HMAC، تجزئة، مقارنة ثابتة الزمن، JWT بـ HS256 أو RS256).
وكمان عندك أدوات تنسيق وتحويل بلا مكتبات: ebnii.format للعملة والتاريخ والأرقام، وebnii.csv للتحليل والتوليد، وebnii.base64 وebnii.url وebnii.basicAuth. هذي مصمّمة كذا لأن الصندوق ما فيه npm — تفاصيلها بقسم الحدود تحت.
من طلبك بالمحادثة لحد أول نداء ناجح
الخطوة الثانية هي اللي تفرق ابني عن مولّد كود عادي: الوكيل ما يخمّن شكل الـ API، يقرأه ويجرّبه.
الخطوات الخمسة بالتفصيل
اطلب الربط بجملة واضحة
قول شو بدك يصير مو شو الـ API. مثال: لما يوصل حجز جديد، ابعت رسالة SMS للزبون فيها الموعد. الوكيل هو اللي يحدد أي نقطة نهاية يستخدم.
الوكيل يقرأ التوثيق ويجرّب النقطة
يبحث بالوب، يفتح توثيق المزوّد الرسمي، ويقدر يرسل نداء تجريبي لنقطة النهاية الحقيقية قبل ما يكتب الكود النهائي. النتيجة كود مبني على رد فعلي، مو على تخمين من الذاكرة.
تدخل المفتاح ببطاقة إدخال آمنة
بطاقة تطلع داخل المحادثة، تلصق فيها القيمة، وتروح للخادم مباشرة. أو تضيفه يدوياً من لوحة الأسرار. اسم المفتاح لازم أحرف إنجليزية كبيرة وأرقام وشرطة سفلية حتى ٤٠ حرف، والقيمة حتى ٢٬٠٠٠ حرف.
المنصّة تتأكد من المفتاح مع المزوّد
وقت الحفظ يصير نداء واحد رخيص عند الخدمة. إذا رفضته صراحة بيبين وسم الخدمة رفضته. إذا الجواب غامض بيبين محفوظ بدون ادعاء فحص — ما نسميه ناجح إلا لما يكون ناجح فعلاً.
تنادي الدالة من موقعك
من زر، من نموذج، من ويب هوك يجيك من برّا، أو من مهمة مجدولة تشتغل بالليل. نفس الدالة تنفع للأربعة، وما تحتاج تعيد كتابتها لكل مسار.
خدمات فيها دليل جاهز بالعربي
هذي خدمات مكتوب لها داخل ابني خطوات استخراج المفتاح بالعربي. وأي خدمة ثانية تنربط بنفس الطريقة: سرّ باسم تختاره أنت + ebnii.fetch.
| الخدمة | شو تسويها من موقعك | ملاحظة |
|---|---|---|
| تويليو | رسائل SMS — تأكيد حجز، كود، تنبيه | تحتاج رقم مُرسِل من تويليو نفسه |
| بوت تيليجرام | إشعار فوري لك أو لفريقك مع كل طلب جديد | أسرع طريقة تعرف بطلب من غير إيميل |
| واتساب أعمال (Cloud API) | رسائل عبر الواجهة الرسمية لواتساب | تحتاج حساب أعمال معتمد عند ميتا |
| Calendly | سحب المواعيد المتاحة أو إنشاء حجز | مفيد لو جدولك أصلاً هناك |
| Airtable و Notion | مزامنة الطلبات مع قاعدة يشتغل عليها فريقك | الاتجاهين: كتابة وقراءة |
| خرائط جوجل ويوتيوب | عناوين الفروع، الخرائط، فيديوهاتك | مفتاح الخرائط للواجهة مو سرّ ويعيش بالكود |
| Slack و Discord | إشعارات القناة عند كل حدث بموقعك | بديل بسيط لبريد التنبيهات |
| Mailchimp | إضافة المشترك لقائمتك البريدية | الإرسال التسويقي عندهم، والمعاملاتي عند ابني |
| OpenAI بمفتاحك الخاص | مهام نصية خاصة تختارها أنت | تحليل الصور ممنوع خارجياً — يتم عبر cloud.ai.generate |
سرّ محفوظ بالخادم مقابل مفتاح مكتوب بالكود
| البند | ابني — سرّ بالخادم | مفتاح داخل كود الصفحة |
|---|---|---|
| من يقدر يشوف القيمة | ما ترجع للمتصفح أبداً — الواجهة ترجّع أسماء المفاتيح وتواريخها فقط | أي زائر يفتح مصدر الصفحة يقراه |
| هل يوصل للذكاء الاصطناعي | لا — القيمة تُحجب من سياق النموذج ومن نص المحادثة | يدخل بسياق النموذج مع باقي الكود |
| بالسجلات وتقارير الأخطاء | محجوب — يظهر سرّ محجوب بدل القيمة، وحتى صيغته المهرّبة داخل JSON | يطلع بالسجل وبأي تقرير خطأ |
| الوصول من مشروع ثاني | لا — الصندوق يستلم أسرار هذا المشروع فقط | حسب وين انتسخ الكود |
| كشف القيمة لاحقاً | مستحيل — ولا حتى آخر ٤ خانات؛ التغيير يصير بالكتابة فوقه | مكشوفة دائماً لأي حدا يفتح الملف |
| التخزين | جدول محمي بـ RLS بدون سياسات — ما يوصله إلا مفتاح الخدمة على الخادم | داخل ملفات موقعك العامة |
حدود الربط — اقرأها قبل ما تعد زبونك
الدوال تشتغل داخل صندوق QuickJS معزول. هذا يعطيك أماناً عالياً، ويقصّ عليك أشياء لازم تعرفها من البداية.
ما في npm ولا import
ما في Node ولا fs ولا process ولا DOM ولا setTimeout ولا Buffer ولا Intl ولا URL. تكتب HTTP نظيف مع الأدوات المدمجة. الدوال اللي تحوّل التاريخ للغة المحلية موجودة بس ترجّع توقيت خادم بصيغة أمريكية — استعمل ebnii.format.date بدلها.
ثماني نداءات خارجية بالتشغيلة
وحد أقصى ٢٤ برفع خاص لصاحب الموقع. وخمس رسائل إيميل بالتشغيلة الواحدة بحد أقصى ٢٠. تصميمك لازم يجمّع النداءات مو يوزّعها على عشرات الطلبات.
عشر ثوانٍ للزائر، ٢٥ لصاحب الموقع
بعدها الدالة توقف برسالة انتهت مهلة التنفيذ. الشغل الطويل ينرحّل لمهمة مؤجّلة بـ ebnii.jobs.enqueue بدل ما تخاطر.
أحجام مقفولة
كود الدالة حتى ١٠٠ كيلوبايت، الحمولة الداخلة حتى ١٠٠ كيلوبايت، الرد الخارجي حتى ٢ ميغابايت ويُقطع وهو واصل. وصف قاعدة البيانات الواحد حتى ٣٢ كيلوبايت — يعني الملفات تتخزّن بالتخزين ورابطها بالقاعدة.
الشبكات الداخلية محجوبة
loopback و RFC-1918 و169.254.169.254 و.local و.internal وصيغ العناوين البديلة كلها مرفوضة، وكل قفزة DNS بسلسلة التحويل تُفحص. حماية من هجوم يخلي موقعك ينادي شبكة داخلية.
مزوّدات الإيميل الخارجية مرفوضة
Resend وSendGrid وMailgun وPostmark وSES وأي مضيف يبدأ بـ smtp محجوبين برسالة صريحة. الإيميل مُدار بالمنصّة: ٥٠٠ رسالة مجانية لكل مشروع بالشهر عبر ebnii.email.send.
بوابات الدفع ما تنربط بمفتاح
ما تُطلب منك مفاتيح بوابات دفع أبداً — تنضبط من لوحة طرق الدفع داخل المشروع. المفاتيح العامة زي مفتاح Stripe المنشور ومفتاح خرائط جوجل للواجهة مو أسرار وتعيش بالكود عادي.
ما في تحويل ملفات ولا قراءة قوائم ضخمة
لا PDF إلى Word ولا ضغط فيديو. وداخل الدالة، قراءة قاعدة الموقع تقف عند ٢٠٠ صف بلا إزاحة — التقارير الكبيرة تنبني على تجميعات تكتبها مع كل عملية، مو بمسح الجدول كامل.
أسئلة شائعة
اقرأ أيضاً
اربط أول خدمة خارجية بموقعك اليوم
اكتب بالمحادثة اسم الخدمة وشو بدك يصير — الوكيل يقرأ توثيقها، يطلب منك المفتاح ببطاقة آمنة، ويكتب الدالة ويجرّبها.
ابدأ مجاناً