Transcript
00:00:00[صوت صامت]
00:00:30.
00:00:53>> مرحبًا، وأهلاً بالجميع في جلسة مجتمع Purcell أخرى.
00:00:57اسمي جاكوب باريس، وسأكون مضيفكم اليوم.
00:01:00نقيم هذه الجلسات لتسليط الضوء على المشاريع الرائعة من المجتمع،
00:01:03ومن العملاء، ومن أي شخص يبني أشياء رائعة على Purcell.
00:01:08نحن نبث هذا مباشرة على LinkedIn، ولكن
00:01:10إذا أردتم المشاركة في الدردشة، فتفضلوا بزيارة [community.com/live](https://community.com/live)، وستتمكنون
00:01:15من رؤية الجلسة في أعلى الصفحة.
00:01:18في النهاية، سيكون لدينا بعض الوقت للأسئلة والأجوبة، لذا
00:01:21لا تترددوا في طرح أي أسئلة في الدردشة المباشرة طوال الوقت.
00:01:25أود أن أقدم ضيفنا.
00:01:27أجل، إذن لديك عرض توضيحي لتقدمه لنا؟
00:01:30>> مرحبًا.
00:01:32>> مرحبًا شين، كيف حالك اليوم؟
00:01:35>> بخير تمامًا، كيف حالك أنت؟
00:01:37>> أنا بخير.
00:01:38أجل، إذن لديك عرض توضيحي لنا؟
00:01:42>> نعم، لدي بعض المحتوى لاستعراضه وبعض
00:01:46السياق، ثم عرض توضيحي مباشر في النهاية.
00:01:48>> رائع، يمكنني مساعدتك في مشاركة شاشتك هنا إذا كنت ترغب في البدء.
00:01:53>> هذا مثالي.
00:01:57حسنًا، بينما يتم تحميل الشاشة، سأبدأ بخلفية سريعة هنا.
00:02:04اسمي، كما قال جاكوب، هو شين سميث، وأنا المدير التقني في Saltbox Management.
00:02:09شركة Saltbox هي شركة خدمات.
00:02:12نحن نقضي معظم وقتنا في الواقع في تطبيق تقنيات Salesforce
00:02:16لعملائنا.
00:02:18وعلى مدى العامين الماضيين، كنا نبني منتجًا لأنفسنا.
00:02:24ومع قيامنا بذلك، وصلنا إلى النقطة التي بدأنا فيها طرحه
00:02:28لعملائنا وللعالم من منظور أوسع.
00:02:31لذا سأتحدث اليوم عن كيفية قيامنا بذلك، وتحديدًا مع Vercel،
00:02:37وبعض التقنيات المختلفة التي توفرها لنا Vercel.
00:02:41كما ترون نوعًا ما على الشاشة هنا،
00:02:42سنتحدث عن بوابة الذكاء الاصطناعي (AI Gateway) أيضًا.
00:02:44والآن، لندخل قليلاً في تفاصيل المشكلة التي نواجهها،
00:02:49لدينا مجموعة من العملاء الذين يستخدمون Salesforce.
00:02:54وخاصة في هذا العالم القائم على الوكلاء الأذكياء، يرغب هؤلاء المستخدمون في التفاعل
00:02:58مع Salesforce بطريقة لغة طبيعية أكثر.
00:03:02وهكذا في حالة الاستخدام الأولى هنا، فإن المشكلة التي نحاول حلها هي
00:03:06لمستخدمي الأعمال.
00:03:07يريدون القدرة على التحدث إلى منظومة منتجات Salesforce الخاصة بهم بلغة مبسطة
00:03:10والحصول على إجابات لأسئلتهم بشكل أسرع.
00:03:16وفي الحالة الثانية، نحاول حل المشكلة للمطورين والمنشئين، الأشخاص الذين
00:03:20يقومون بالفعل بإعداد وبناء التخصيصات داخل Salesforce،
00:03:23والذين هم نحن إلى حد كبير.
00:03:25هذا هو المكان الذي بدأنا فيه هذه الرحلة، حيث أردنا جعل بناء مجموعة من
00:03:28منتجات Salesforce أسهل باستخدام الوكلاء الأذكياء.
00:03:31وهذان هما المشكلتان اللتان نحاول حلهما لأنفسنا
00:03:34ولمستخدمينا.
00:03:35والسياق الكامن وراء ذلك هو أن القيام بهذا يمثل تحديًا كبيرًا في الواقع.
00:03:41أعني، هذا هو السبب في أن الناس يوظفون شركات خدمات مثلنا ومثل غيرنا.
00:03:45لأن فهم سياق Salesforce، وفهم الشركة
00:03:49وسياق المشروع الذي يحاولون القيام به، ومحاولة نقل ذلك إلى
00:03:54برمجيات قابلة للتطوير للإنتاج الفعلي مع أفضل الممارسات هو أمر صعب حقًا.
00:03:58لذا لا يمكنك الذهاب فحسب إلى أي نموذج لغوي كبير
00:04:01وتسأل سؤالاً عن Salesforce، فمن المحتمل أن يعطيك شيئًا ما، ولكن
00:04:05لن يكون شيئًا جاهزًا للاستخدام في الإنتاج الفعلي.
00:04:07وهذا كان الهدف الذي نحاول تحقيقه.
00:04:12بينما نسير في هذا الطريق، لدينا فريق منتجات صغير نسبيًا
00:04:16نحاول من خلاله بناء هذا المنتج الطموح للغاية.
00:04:19لذا أردنا التركيز على المنتج وليس كثيرًا على البنية التحتية.
00:04:24أردنا أن تعمل البنية التحتية بسلاسة وتمنحنا الإمكانيات التي نحتاجها.
00:04:28وكان هذا بمثابة تحدينا ورهاننا، وهو أنه يمكننا بناء هذه
00:04:33المنصة القابلة للتطوير على بنية Vercel التحتية وتمكيننا من المضي قدمًا وفعل ذلك.
00:04:40سأتحدث قليلاً عن كيفية نجاحنا في القيام بذلك.
00:04:44لدينا ثلاثة مستويات عندما يتعلق الأمر ببنيتنا الهيكلية عالية المستوى.
00:04:48في المستوى الأعلى، لدينا تطبيق Next.js يعمل على واجهة
00:04:53المستخدم الخارجية.
00:04:56وهذا التطبيق يحتوي على كافة إمكانيات بث واجهة المستخدم المعتادة التي تتوقعها
00:05:02من وكيل ذكي في هذا العصر.
00:05:04ثم في الطبقة الثانية من ذلك، لدينا إمكانيات الحوسبة الطرفية والخادم هنا.
00:05:09نحن نستخدم حزمة تطوير برمجيات الذكاء الاصطناعي (AI SDK)، وتحديدًا الإصدار السادس الآن، للتحكم في الوكيل
00:05:16وإدارة حلقة الوكيل الذكي وجميع الأدوات المضمنة في ذلك.
00:05:21إذا لم تكن مألوفًا بحزمة التطوير هذه وكنت تدخل عالم الوكلاء الأذكياء،
00:05:25فإنني أوصي بشدة بالبدء في استخدامها.
00:05:28فهي تمنحك القدرة على استخدام أي نموذج لغوي كبير بشكل عام.
00:05:34بشكل مستقل عن المنصة، وتوفر الإطار
00:05:37والهيكل الأساسي الذي تحتاجه لبناء حلقة الوكيل
00:05:40وإعطائه بعض الأدوات القوية حقًا خلال هذه العملية.
00:05:43والطبقة الثالثة هنا هي الذكاء الاصطناعي الفعلي، أي الربط بأي نموذج نريده.
00:05:51وهذا كان حقًا ما كنا نقرره عندما سلكنا هذا المسار لأول مرة،
00:05:56حيث أردنا فهم ما هو النموذج المناسب للاستخدام.
00:06:00وكان استنتاجنا أنه لا يوجد دائمًا نموذج واحد صحيح للاستخدام
00:06:04في كل موقف.
00:06:06لذا أردنا بناء النظام بطريقة مرنة ومستقلة، بحيث يمكننا تبديل
00:06:10وتشغيل النموذج المناسب للموقف المناسب مع ظهور نماذج جديدة.
00:06:14وتوصيلها أيضًا دون الحاجة إلى تغييرات هيكلية ضخمة وراء الكواليس.
00:06:20لذلك اخترنا بوابة الذكاء الاصطناعي (AI Gateway) لهذا الغرض،
00:06:23وسأتحدث بالتفصيل عن ذلك بعد قليل.
00:06:25ثم لدينا خدماتنا الخلفية أو الداعمة،
00:06:30كما ترون في الأسفل، والتي تدعم بقية البنية التحتية.
00:06:35بالدخول أكثر في تفاصيل بوابة الذكاء الاصطناعي هنا،
00:06:38يمكنكم أن تروا على الجانب الأيسر مجرد كود برمجى افتراضي لما قد
00:06:43يبدو عليه هذا، ولكن لديك أساسًا سطر واحد يقول،
00:06:46أنا سأتصل بالبوابة.
00:06:49وبمجرد حصولك على ذلك، يكون لديك البوابة
00:06:51ويمكنك أساسًا استخدام أي نموذج تريده.
00:06:55لذا، في كثير من الحالات، نستخدم Opus 4.6، ولكن في بعض الحالات، نستخدم Sonnet
00:07:00ونماذج GPT وبعض نماذج Groq في مواقف مختلفة.
00:07:04وهذا حقًا أحد الأشياء القوية في بوابة الذكاء الاصطناعي
00:07:08وهي أنه يمكنك استخدام أي نموذج تريده، ولست مقيدًا بنموذج معين،
00:07:10مما يمنحك هذه المرونة.
00:07:12وهذا ما أتاح لنا الحصول على توجيه ذكي
00:07:18للغاية هنا يعتمد على مدى تعقيد ونوع الأسئلة.
00:07:22ولدينا هذا المصنف هنا الذي يسمح لنا بتحديد
00:07:27ما مدى تعقيد السؤال الذي يطرحه المستخدم؟
00:07:29هل يطلبون ردًا بسيطًا على رسالة ترحيب؟
00:07:32أم يطلبون شيئًا أكثر تعقيدًا مثل محاولة بناء مسار تدفق كامل
00:07:37للمستخدم؟
00:07:38واعتمادًا على ذلك، قد نوجه الطلب إلى نماذج مختلفة.
00:07:40وهذا يتيح لنا الحصول على استجابات سريعة،
00:07:44واختيار المستوى المناسب من التعقيد في النموذج الذي نقدمه،
00:07:49وتقديم الاستجابة الصحيحة للمستخدم.
00:07:50وفي عصرنا الحالي، فيما يتعلق بالتجربة على مستوى الوكيل الذكي،
00:07:59هناك حقًا قدرتان مختلفتان يتوقعهما معظم المستخدمين هذه الأيام.
00:08:04الأولى هي البث المباشر للردود إلى المستخدم
00:08:07حتى تتمكن من رؤية ما يحدث في الوقت الفعلي.
00:08:09ولكن أيضًا ما يحدث بالفعل عندما يكون لديك
00:08:14طلب معقد للغاية قد يستغرق أكثر من بضع دقائق أو عشرات الدقائق أو حتى ساعات.
00:08:20ومن حيث بدأنا من منظور المنتج هو في جانب البث المباشر.
00:08:23وهنا يبرز دور حزمة تطوير برمجيات الذكاء الاصطناعي (AI SDK)، حيث تبدأ في جانب البث.
00:08:28وعلى الجانب الأيسر، يمكنك رؤية عينة من الاستبيان،
00:08:31توليد قصص المستخدمين من اجتماع ما.
00:08:33كانت هذه إحدى حالات الاستخدام الأولى لدينا عندما كنا نبني هذه الأداة،
00:08:37وهي أخذ كل السياق وتقديم قصص مستخدمين للمطورين.
00:08:41ولكن عندما بدأنا في الدخول في متطلبات أكثر تعقيدًا مثل إنشاء واجهة متجر
00:08:45كاملة للشركات (B2B) في Salesforce أو تصميم موقع تجربة سحابية بصفحات مخصصة،
00:08:51فإن هذه العمليات تستغرق وقتًا أطول بكثير من بضع دقائق يمكن بثها مباشرة إلى المتصفح.
00:08:56لذا عندما بدأنا في التطور والنضج على منصة Vercel،
00:08:59بدأنا في تقديم هذه التجربة الموحدة للمستخدم في واجهة المستخدم،
00:09:05مع القدرة على البث المباشر وتشغيل العمليات الخلفية معًا،
00:09:09اعتمادًا على مدى التعقيد.
00:09:11وكل ذلك مدعوم داخل بنية Vercel التحتية،
00:09:14سواء على المنصة الفعلية نفسها، أو باستخدام بعض الإمكانيات المتعلقة
00:09:19ببيئات الاختبار المعزولة (Sandboxes) وبعض الميزات الأخرى التي سأتحدث عنها بعد قليل.
00:09:24لذا من منظور الأدوات، أعتقد أن هذه واحدة من القوى الخارقة لاستخدام
00:09:28شيء مثل AI SDK وهو أن لديك ببساطة إطار عمل يمكنك التوصيل به.
00:09:34لقد بدأنا ببعض الأدوات فقط ثم بمرور الوقت قمنا ببناء المزيد والمزيد
00:09:39من الأدوات في هذه الفئات التي تمنحنا القدرة على التفاعل
00:09:44مع المستخدم وبيئات Salesforce أيضًا.
00:09:48لذا يمكنك أن ترى أن لدينا توليد المستندات، ولدينا البحث،
00:09:52ولدينا قصص المستخدمين، والتكاملات، وبشكل أساسي إمكانية Salesforce هذه هنا،
00:09:57والتي تسمح لنا بفهم البيئة، والتحقق من صحتها، والاستعلام عنها
00:10:01وإجراء عمليات النشر في تلك البيئات أيضًا.
00:10:05لذا فإن هذا يبعث الحياة فعليًا في هذا الوكيل بدلاً من مجرد الذهاب مباشرة إلى النموذج اللغوي.
00:10:10إذن، كيف يعمل مفهوم "الوكيل لديه أيدي للتنفيذ"؟
00:10:16كيف يحدث ذلك في الواقع؟
00:10:18حسنًا، داخل نظام Vercel البيئي، تعد هذه واحدة من أحدث
00:10:22القدرات التي كانوا يطرحونها وهي القدرة على امتلاك بيئة معزولة (Sandbox).
00:10:27لذا إذا فكرت في الأمر، إذا كنت مألوفًا بـ Salesforce
00:10:30وتفكر في كيفية التفاعل مع Salesforce، فإن المطورين والجانب
00:10:34التقني من العمل في كثير من الأحيان يستخدمون واجهة سطر أوامر Salesforce (CLI).
00:10:39وهذا يتيح لهم، على مستوى واجهة سطر الأوامر، التفاعل مع Salesforce،
00:10:43وإنشاء بيئات اختبار مؤقتة، وإنشاء متاجر تجارة إلكترونية B2B، والقيام بعمليات النشر.
00:10:49وهذا يجعل التفاعل مع Salesforce سهلاً للغاية.
00:10:51ولكن هذا صعب للغاية في متصفح مؤقت عابر، أليس كذلك؟
00:10:55تسجل الدخول إلى أي موقع وعليك تسجيل الدخول في كل مرة
00:10:59مما يجعل التفاعل مع Salesforce أمرًا صعبًا.
00:11:01لذلك بدأنا في الاستفادة من ميزة بيئة Vercel المعزولة (Sandbox) حيث
00:11:06نسمح للمستخدم في الواقع بتوثيق هويته في بيئته الخاصة.
00:11:10وإنشاء بيئة اختبار معزولة تسمح لنا بالتفاعل الفعلي مع نظام الملفات
00:11:16وتسمح لنا بنشر الكود الذي نقوم بإنشائه أو الملفات التي نحاول
00:11:20العمل عليها في تلك البيئة المعزولة، ثم استخدام واجهة سطر أوامر Salesforce
00:11:26في تلك البيئة لدفع تلك الملفات إلى Salesforce.
00:11:30وهذه قد تكون حالة استخدام خاصة بنظام Salesforce البيئي لأن لديهم
00:11:35هذه المفاهيم الخاصة ببيئات التطوير المؤقتة وبيئات الاختبار المعزولة، ولكن أعتقد
00:11:40كلما تعمقنا أكثر فأكثر في الجانب البرمجي لمنظومة الوكلاء الأذكياء،
00:11:43فإن فكرة البيئات المعزولة (Sandboxes) تصبح بالغة الأهمية لأنها
00:11:49تتطلب أو توفر لنا القدرة على الحصول على بنية الملفات هذه
00:11:55التي تُبنى عليها عادةً الوكلاء الأذكياء والنماذج اللغوية الكبيرة.
00:11:58لذا أعتقد أنها تمنحك الكثير من المرونة عندما يتعلق الأمر
00:12:01بما يمكنك القيام به بالفعل.
00:12:06ثم لتلخيص الركائز الأساسية التي قمنا بالبناء عليها هنا،
00:12:10كانت ميزة V0 بمثابة قدرة هائلة لفريقنا، أليس كذلك؟
00:12:17نحن نستخدمها في الواقع على جانبين مختلفين.
00:12:18نستخدمها من منظور المنتج بينما نقوم ببناء منتجنا، Saltbox One.
00:12:23ونستخدمها أيضًا في جانب الخدمات عندما نقوم ببرمجة وبناء Salesforce.
00:12:27لذا ما قمنا به بالفعل هو أننا قمنا بربط الاثنين معًا.
00:12:31حيث إذا كنت في Saltbox One ولديك سياق ما تحاول القيام به،
00:12:35ولديك جميع معلومات Salesforce، والقدرة على الذهاب فعليًا وجمع
00:12:41كل ذلك حول منظمة Salesforce الخاصة بك، فلدينا تكامل وثيق ومترابط مع
00:12:45V0 حيث يمكنك بالفعل تمرير تلك المعلومات إلى V0 كـ سياق.
00:12:51وهذا يسمح لـ V0 بمساعدتك فعليًا في توليد الكود البرمجي.
00:12:54لذا فالأمر لا يقتصر على لغة React فحسب، بل بالنظر إلى السياق المناسب
00:12:58والمعلومات المتوفرة، يمكنه القيام بأشياء مثل أكواد Apex و LWCs والتدفقات (flows).
00:13:01حيث تمكنا من ربط الاثنين معًا وتقديم
00:13:05تكامل سلس ورائع للغاية.
00:13:09لذا إذا توقفنا لبرهة وتساءلنا، ما الذي يمكننا تقديمه كنصيحة لفريق آخر؟
00:13:14هذه هي الدروس الأربعة المستفادة بالنسبة لي:
00:13:17أولاً، استخدم بوابة ذكاء اصطناعي، وتوقف عن الجدال حول النماذج المختلفة،
00:13:21وابدأ في اختيار النماذج المناسبة للأداة المناسبة في الموقف المناسب.
00:13:25هذا يمنحك الكثير من المرونة والقدرة الفعالة هناك.
00:13:28ثانيًا، البث المباشر هو مجرد البداية.
00:13:31هذا هو المكان الذي تبدأ فيه الكثير من هذه التطبيقات التي تعد بمثابة تطبيقات
00:13:35ناشئة في عالم الوكلاء الأذكياء.
00:13:38ولكن في الحقيقة أنت بحاجة إلى تلك القدرة على التشغيل المستمر في الخلفية أيضًا.
00:13:42وهذا يمثل السقف والاتجاه الذي تسعى للوصول إليه.
00:13:45ثالثًا، البيئة المعزولة (Sandbox) كما كنت أتحدث عنها للتو.
00:13:48جعل الأمور واقعية، وإعطاء وصول لواجهة سطر الأوامر لوكلائك الأذكياء،
00:13:52وهذا يمنحك حقًا الكثير من القدرات الخارقة هناك.
00:13:55وأخيرًا، ابحث عن المنصة المناسبة.
00:13:57بالنسبة لنا، كان ذلك يعني البناء على منصة Vercel
00:14:01مما يتيح لنا عدم التركيز على البنية التحتية،
00:14:04ويسمح لنا بالتركيز على الميزات
00:14:07والقدرات التي نحاول طرحها في Saltbox One على نطاق واسع.
00:14:12لذا، سأنتقل الآن قليلاً إلى العرض التوضيحي
00:14:19لأستعرض تجربة تفاعلية مع Salesforce.
00:14:24سنتحدث قليلاً عن إنشاء القصة
00:14:26ونرى العميل الآلي وهو يعمل هنا.
00:14:29لذا، أمهلوني لحظة واحدة بينما أنتقل إلى تلك الشاشة.
00:14:34حسنًا، ممتاز.
00:14:38بالانتقال إلى Saltbox One، هذه إحدى بيئاتنا التجريبية.
00:14:44ولكن يمكنك أن ترى على الجانب الأيسر ما نسميه
00:14:48بالمشاريع، وتمنحنا هذه المشاريع سياقات مختلفة.
00:14:51وفي المنتصف، لدينا نافذة المحادثة الجديدة هنا.
00:14:56لذا يمكننا التركيز عليها.
00:14:58يمكننا رؤية جميع مشاريعنا المختلفة أثناء التمرير لأسفل.
00:15:01يتيح لنا هذا تحميل السياق الصحيح في المحادثة.
00:15:05ولدينا أدواتنا في الأسفل هنا،
00:15:08حيث يتم تمرير جميع عمليات التكامل الخاصة بنا إليها.
00:15:12وفي الأسفل تمامًا، لدينا القدرة على إضافة السياق.
00:15:16حيث يمكننا إدراج اجتماع، أو قصة مستخدم، أو عنصر عمل،
00:15:20أو منظمة Salesforce، أو شيء محدد في تلك المنظمة.
00:15:23يتيح لنا ذلك إجراء محادثة غنية جدًا من هذا القبيل.
00:15:27لذا سأبدأ بمثال أكثر تعقيدًا في البداية.
00:15:33ثم سننتقل، أثناء تشغيل هذا المثال، إلى شيء آخر،
00:15:37أو شيء قمت بتشغيله مسبقًا لنناقشه معًا.
00:15:40في هذا المثال، نريد إنشاء تدفق شاشة في Salesforce يتيح لنا
00:15:45إدخال تعليقات الحالة ونريد أن يمنحنا ذلك شاشة تأكيد.
00:15:51هذا المطلب ليس معقدًا للغاية، ولكنه يتطلب معرفة بالتدفقات
00:15:56وكيفية تكوينها وكيفية الوصول إليها
00:15:58وكيفية استكشاف الأخطاء وإصلاحها.
00:16:00لذا سنسمح لعميلنا الآلي بالعمل على ذلك بينما نذهب
00:16:03ونناقش بعض المحادثات الأخرى.
00:16:06وقبل أن ننتقل، يمكنك أن ترى أنه يسترجع بعض ملفات السياق.
00:16:09هذا جزء من السر الكامن في Saltbox One، فلدينا الكثير
00:16:13من المعلومات حول Salesforce وكيفية التعامل معها
00:16:16ودليل الإجراءات لجعلها تعمل بشكل صحيح هنا.
00:16:19ويمكنك أن ترى بالفعل أنه عاد سريعًا ليقول:
00:16:23"أخبار سارة، لقد فحصت البيئة الخاصة بك.
00:16:25لا توجد أي أتمتة على تعليقات الحالة حاليًا، لذا يمكننا البدء."
00:16:29وسيطرح عليّ بعض الأسئلة المتابعة هنا.
00:16:32وسأقول نعم، يمكنك استخدام البيئة الافتراضية
00:16:37وسأدعها تبدأ في وضع خطة هنا.
00:16:41ولكن بينما تفعل ذلك، سأنتقل بالفعل إلى
00:16:44محادثة أخرى مختلفة.
00:16:47هذه في الواقع واحدة من أكثر القدرات استخدامًا لدينا في
00:16:52مشاريع عملائنا، وهي القدرة على تلخيص اجتماع.
00:16:56في هذه الحالة، لدي علامة تجارية تجريبية تسمى Halston.
00:17:00لقد سجلت اجتماعًا حيث تحدثنا عن بعض المتطلبات الجديدة حول
00:17:03البناء ضمن إمكانيات Salesforce.
00:17:07وأنا أسأله قليلاً عن بيئتنا، وأريد تنفيذ ذلك بناءً على ما هو
00:17:11موجود اليوم، وبناءً على وظائف Salesforce
00:17:16الافتراضية الجاهزة للاستخدام.
00:17:18للوهلة الأولى، يبدو هذا الطلب مباشرًا وبسيطًا،
00:17:21ولكن عند التفكير فيه، فهو معقد للغاية لأنه يتطلب معرفة
00:17:26تفاصيل بيئتك، وعليك معرفة ما هو افتراضي
00:17:30وما هو مخصص لاتخاذ القرارات الصحيحة.
00:17:33لذا في هذه الحالة، طرحنا هذا السؤال ويمكنك رؤيته يعود بـ:
00:17:37"إليك متطلبات الاجتماع التي نتجت عن ذلك النقاش."
00:17:41و"إليك ما تملكه اليوم."
00:17:43و"إليك نموذج البيانات الخاص بك"، مع رسم مخطط Mermaid لطيف لنلقي نظرة عليه
00:17:46ونؤكد أن هذا هو الوضع الحالي اليوم.
00:17:48وبعد ذلك يبدأ بالفعل في تقديم التوصيات هنا.
00:17:52حيث يوضح كيف سيقارب العميل S1 الأمر، ويقسمه إلى هذه المراحل.
00:17:57حيث يبدأ بالمرحلة الأولى كنموذج بيانات، وتخزين اشتراكات الرؤية،
00:18:02ثم يقدم لك بعض التوصيات وبعض الأسئلة الرئيسية.
00:18:06وأنا قادر على التفاعل معه ذهابًا وإيابًا.
00:18:07وقد قدمت له هذا الرد الذي يحتوي على الإجابات لهذه الأسئلة.
00:18:12وفي نهاية المطاف، قدم لي هذه الوثيقة الرائعة التي تقسم
00:18:16المتطلبات إلى تلك المراحل مع الكثير من التفاصيل.
00:18:19ويمكنني أخذ هذا وتحويله إلى برمجيات.
00:18:22كما يمكنني تحويله إلى قصص مستخدمين أو أي متطلبات أخرى.
00:18:27إذن هذه واحدة من القدرات الفائقة لـ Saltbox One، فقد بنينا هذا
00:18:31من منظور تقديم الخدمات.
00:18:33لذا نحن نعرف كيفية تنفيذ Salesforce.
00:18:35ونعرف أفضل الممارسات.
00:18:37ونعرف كيفية مقاربة الأمور.
00:18:38وكل ذلك مدمج في هذا السياق القائم على العملاء الآليين الذي قدمناه
00:18:43لـ Saltbox One.
00:18:44والآن، بالعودة إلى محادثتنا الأصلية هنا،
00:18:49نرى أننا وافقنا على استخدام البيئة الافتراضية.
00:18:52وقد استعرض كل هذا السياق الذي تحدثنا عنه،
00:18:55وتوصل إلى أفضل طريقة للقيام بذلك.
00:18:57ونرى أنه قد أنشأ هذه البطاقة اللطيفة لنراجعها.
00:19:02هذه البطاقة هنا هي طريقتنا في التحكم فيما يمكن للعميل الآلي فعله.
00:19:07فأنت تريد من العميل الآلي أن يضع هذه الخطة،
00:19:11ولكنك لا تريده أن ينفذها بمفرده.
00:19:13ما زلنا نريد وجود عنصر بشري في حلقة اتخاذ القرار.
00:19:15ولذا قمنا بتصميم هذا المكون حيث يمكنك رؤية ما سيتم
00:19:19نشره بالضبط وكيف سيتم نشره.
00:19:22وما يمكنك فعله هو النقر على زر الموافقة والتنفيذ.
00:19:25وبالطبع، بما أنني أقوم بعرض توضيحي حي الآن، فلن يعمل الأمر.
00:19:29ولكن ما يمكنك فعله هو الذهاب ونشر ذلك بالفعل.
00:19:33ويمكنك النقر على إعادة المحاولة بعد التنسيق
00:19:37مع العميل الآلي وحل هذه المشكلة.
00:19:38وإذا تم النشر، يمكنك بالفعل التراجع إلى النسخة السابقة إذا
00:19:43لم تعجبك تلك النسخة الحالية.
00:19:44هناك حالة استخدام أخيرة سأعرضها على الشاشة هنا قبل أن نقوم
00:19:50بعرض حي آخر، وهي مراجعة سريعة لبنية بيئتك التحتية.
00:19:55هذا سؤال شائع جدًا نتلقاه طوال الوقت، وهو:
00:20:00"ساعدنا في فهم البنية التحتية، أو ساعدنا في فهم الديون التقنية
00:20:03الموجودة هناك."
00:20:04وكيف نستعد للمضي قدمًا في هذا المسار الذكي
00:20:09في بيئة Salesforce؟
00:20:10هذه كلها أسئلة تبدو بسيطة، ولكنها في الواقع أسئلة عميقة جدًا.
00:20:15ولذا ما يمكنك فعله هو طرح سؤال كهذا
00:20:18ليقوم بفحص بيئات التراخيص الخاصة بك، والنتائج الرئيسية،
00:20:22وتحديد شكل نموذج الكائنات الخاص بك عبر الفرص البيعية.
00:20:27ومرة أخرى، من الأشياء التي سنفعلها دائمًا في إجابتنا
00:20:30هي البدء في الإشارة إلى الأمور التي قد تحتاج إلى مراجعة.
00:20:34في هذه الحالة، لدينا وثائق تشير إلى وجود
00:20:38حقول غير موثقة عبر جميع الكائنات الخاصة بنا.
00:20:40ويبدو أن لدينا الكثير من الحقول المخصصة، وتوصيات حول كيفية التعامل
00:20:45معها، والخطوات التالية التي يمكننا الخوض فيها بالفعل.
00:20:48لذا في هذه الحالة، يمكنني القول إنني أريد الذهاب والقيام بذلك.
00:20:53وما سيفعله في الواقع هو البدء في تضييق نطاق تركيزه خصيصًا حول
00:20:57تدفق التجارة بين الشركات (B2B) وكيف يتفاعل كل شيء معًا.
00:21:02وسيقوم بإجراء استعلامات داخل هذه البيئات.
00:21:05والنظر في النظام البيئي المحيط به بالكامل،
00:21:07ثم يخلص إلى نوع من التركيب والتلخيص للإجابة
00:21:10ويمكنك مواصلة إجراء هذه المحادثة.
00:21:12والآن، بينما يتم تشغيل هذا العميل الآلي،
00:21:16سأقوم بعرض حالة استخدام أخرى هنا كعينة أخيرة.
00:21:21إذا انتقلنا مجددًا إلى محادثة جديدة، فإن ما يمكنني فعله هو
00:21:27إدراج صفحة Confluence التي أملكها والتي كانت في الواقع
00:21:32مخرجات إحدى محادثاتنا السابقة.
00:21:35وهي تحتوي على التفاصيل الكاملة لكيف سيكون شكل هذا الحل.
00:21:39ويمكنني أن أطلب منه سريعًا إنشاء قصص مستخدمين لـ
00:21:43المرحلة الأولى الواردة في هذه الوثيقة.
00:21:46ومرة أخرى، ما يميز هذا الأمر حقًا هو أنه لا يجمع فقط
00:21:50سياق هذه الوثيقة، بل سياق مشروعك، وبيئة Salesforce الخاصة بك،
00:21:55وأفضل ممارساتنا، ونظام Salesforce البيئي،
00:21:59ويقرر ما هي أفضل طريقة لتقسيم هذه المرحلة الأولى إلى
00:22:03قصص مستخدمين يمكن إدارتها، وصياغة البيان الأولي المعتاد:
00:22:08"بصفتي مستخدمًا، أود أن..." مع بعض النقاط لماهية معايير القبول الفعلية.
00:22:14يمنحك هذا نقطة انطلاق رائعة لقصص المستخدمين تلك.
00:22:18وبمجرد إنشاء قصص المستخدمين هذه بالفعل، يمكنك الانتقال إلى
00:22:22مستويات إضافية من التفاصيل عبر النقاش المتبادل
00:22:24مع العميل الآلي إذا كنت ترغب في تحسين شكلها.
00:22:28الآن، وبينما يتم تشغيل هذا الطلب،
00:22:32سأعود إلى محادثتنا السابقة حيث انتهينا للتو من التدقيق التقني.
00:22:36لقد مررنا ببعض الاستعلامات، وجمعنا تفاصيل تدفق تدقيق B2B هنا.
00:22:40وكما ترون، لقد وضعنا تقييمًا جيدًا لشكل ذلك،
00:22:45وتوصيات بشأن ما هو الدين التقني أو
00:22:48ما يجب علينا الرجوع إليه وتحديد أولوياته.
00:22:51لذا يمكنك البدء في رؤية كيف يترابط كل هذا معًا.
00:22:55وعندما أعود إلى مثالي هنا،
00:23:00يبدو أن شاشتي متجمدة، انتظروا ثانية واحدة.
00:23:11ها قد عدنا.
00:23:14كما ترون في مثالنا الأخير، لقد قمنا بجمع قصص المستخدمين هذه.
00:23:18ويمكنك رؤية قصص المستخدمين هذه معروضة على الجانب الأيسر مع
00:23:22التفاصيل على الجانب الأيمن.
00:23:24ويمنحنا هذا القدرة على التكامل مع Asana أو Jira
00:23:27ويتيح دورة حياة تطوير كاملة لما يبدو عليه هذا الأمر.
00:23:32إذن هذه نظرة عامة سريعة على Saltbox One، وكيف نستخدم نظام Vercel البيئي،
00:23:39وكيف نستخدم أشياء مثل قدرة البيئة التجريبية، وقدرة البوابة،
00:23:44وV0 لبناء تطبيق كهذا والتركيز
00:23:49حقًا على الميزات والوظائف لعملائنا،
00:23:53وليس على البنية التحتية الكامنة وراءه.
00:23:56لذا، مع ذلك يا جيكوب، هل هناك أي أسئلة تود الخوض فيها؟
00:24:02>> نعم، نعم، شكرًا لتقديم هذا العرض التوضيحي الرائع.
00:24:06كانت لدي بعض الأسئلة هنا.
00:24:08أولاً، كنت فضوليًا بشأن كيفية عمل صلاحيات العملاء الآليين.
00:24:12هل يمتلك S1 صلاحياته الخاصة، كأن يحصل التطبيق عند إعداده
00:24:16على وصول معين لـ Salesforce وConfluence وما إلى ذلك؟
00:24:20أم أن الأمر يعتمد على الشخص الذي يطرح الأسئلة؟
00:24:23لأن هذا الأمر ينطوي على بعض الصعوبة بمجرد أن تتوفر لديك كل هذه
00:24:26الأنواع من تكاملات تسجيل الدخول الموحد (SSO) للمؤسسات.
00:24:29لذا أنا فضولي لمعرفة القرار الذي استقررت عليه في هذا الشأن.
00:24:32>> نعم، لقد ناقشنا هذا الأمر ذهابًا وإيابًا قليلاً بينما كنا نفكر في
00:24:36السؤال نفسه، والمكان الذي استقررنا عليه هو الصلاحيات القائمة على المستخدم.
00:24:40لذا عندما يدخل المستخدم، يكون لديه القدرة على المصادقة بهويته كمستخدم.
00:24:45وبالتالي فإن أي إجراء يقوم به في Salesforce أو أي من التطبيقات الأخرى يكون
00:24:50بصفتهم مستخدمًا محددًا، إما عبر بروتوكول OAuth الخاص بهم أو
00:24:53مفتاح واجهة برمجة التطبيقات (API) الخاص بهم بناءً على المنصة التي ندعمها.
00:24:57ويمنحنا هذا التحكم في أن حسابك أنت هو من قام بالإجراء.
00:25:03ولكن في بعض المنصات مثل Salesforce،
00:25:06لدينا بالفعل طبقة حماية أخرى أيضًا،
00:25:09وهي أنه في كل مرة تقوم فيها بربط بيئة Salesforce،
00:25:12فإنها تبدأ كاتصال للقراءة فقط.
00:25:15ثم تملك القدرة على تحويلها إلى صلاحية كتابة.
00:25:19وبمجرد القيام بذلك، ستظل ترى دائمًا شاشة الموافقة تلك
00:25:23لأي تغييرات سيتم إجراؤها في بيئة Salesforce الخاصة بك.
00:25:26>> حسنًا، إذن على جانب Salesforce ولأغراض التدقيق والمراجعة،
00:25:31أي من الإجراءات التي قام بها المستخدم، فقد قام بالنقر عليها.
00:25:37لذا عندما كان لديك إجراء كتابة، تظهر نافذة الموافقة المنبثقة.
00:25:39وكان على المستخدم صراحةً أن يضغط قبول ومتابعة لتفعيل العميل الآلي.
00:25:44>> بالضبط.
00:25:44>> وعلى Salesforce، سيظهر الأمر كما لو تم بواسطة المستخدم.
00:25:49>> بالضبط.
00:25:50>> حسنًا، ممتاز، ممتاز.
00:25:51كنت فضوليًا أيضًا، كيف يستخدم العميل الآلي البيئات التجريبية نفسها؟
00:25:57أعني، هل لديك استدعاءات أدوات معينة تستدعي ضمنيًا
00:26:02بيئة تجريبية كأحد تفاصيل التنفيذ الخاصة بها؟
00:26:06أم أن لدى العميل الآلي أدوات البيئة التجريبية ويعرف أن هناك أشياء معينة
00:26:11يجب أن يفعلها في البيئة التجريبية حيث تتوفر واجهات CLI أو APIs وما إلى ذلك.
00:26:16أنا فضولي لمعرفة كيف قمت بإعداد ذلك.
00:26:19>> نعم، لدينا بالفعل أداتان رئيسيتان تستخدمان
00:26:25بيئة Vercel التجريبية الرسمية، وسأتحدث عن بيئة تجريبية منفصلة بعد قليل.
00:26:28لذلك، الأداة الرسمية الأولى هي عندما تقوم بإنشاء بيئة تجريبية مؤقتة (Scratch Org)،
00:26:33فنحن نقوم دائمًا بإنشاء بيئة Vercel Sandbox وتجهيز الـ Scratch Org باستخدام واجهة SF CLI.
00:26:37أما حالة الاستخدام الثانية فهي عندما تتفاعل مع Salesforce لإجراء
00:26:43عملية تحقق (Validation) أو نشر (Deployment) لشيء جديد في البيئة البرمجية.
00:26:48ويتم ذلك دائمًا باستخدام Vercel Sandbox مع واجهة Salesforce CLI.
00:26:51هذه هي الطريقة الأسهل في رأينا لإجراء عمليات النشر
00:26:54والقيام بالأنشطة الأخرى باستخدام CLI، وتسهل بيئة Vercel Sandbox
00:26:58علينا تثبيت ذلك والمتابعة مع البيئات التجريبية الحالية.
00:27:04لدينا هاتان الأداتان اللتان تستخدمان بيئة Vercel Sandbox الرسمية، ولدينا أيضًا
00:27:08بيئة تجريبية أصغر تعمل في الذاكرة (In-memory Sandbox) ترافق كل محادثة،
00:27:14حيث تعمل مع كل جولة يقوم بها العميل الذكي لجمع كافة الملفات
00:27:20وتمكين العميل الذكي من فهم ما تحتويه هذه البيئة التجريبية في الذاكرة.
00:27:25إذًا، هناك نسختان مختلفتان من ذلك.
00:27:26<< حسنًا، هل تفرضون أي نوع من القيود
00:27:32على الشبكة في البيئة التجريبية للحد مما يمكنها الوصول إليه؟
00:27:36كيف تبدو الملفات التعريفية للأمان (Security Profile) هناك؟
00:27:40>> هل تقصد من جانب Vercel Sandbox؟
00:27:42>> نعم، نعم.
00:27:43>> نعم، بيئة Vercel Sandbox يتم إنشاؤها فارغة تمامًا.
00:27:47لذا نقوم بتحميل الملفات التي نحتاجها فقط ونسمح لها بالوصول إليها.
00:27:52لذا فهي لا تحتوي على كودنا البرمجي بالكامل بأي حال، بل إن النموذج S1
00:27:56سيذهب ويأخذ كل ما تم إعداده وتنسيقه كخطة عمل أساسية.
00:28:02لنعاود استخدام مثال التدفق (Flow) الذي عرضته، حيث سيأخذ تلك الملفات.
00:28:05وسينشئ المجلد المطلوب الذي تتوقعه منصة Salesforce عند
00:28:10إجراء عمليات النشر، ثم يضع تلك الملفات في ذلك المجلد.
00:28:13وبعد ذلك يبدأ بعملية النشر من هناك.
00:28:14لذا فالأمر محدود جدًا بما نمنحه إياه في الوقت المناسب فقط.
00:28:20<< لدينا سؤال من يوتيوب، ما هو نموذج التسعير المعتمد؟
00:28:25كيف تتعاملون مع التسعير؟
00:28:28هل يعتمد على الاستخدام، أم على عدد المقاعد، أم نموذج Soapbox؟
00:28:32>> نعم، هذا سؤال رائع.
00:28:33ما زلنا في طور وضع اللمسات الأخيرة على ذلك مع بدء إطلاق الأداة
00:28:38لعملائنا ومحاولة التوصل إلى الطريقة الأنسب لتطبيق ذلك.
00:28:41نحن نعتمد حاليًا تسعيرًا قائمًا على المستخدم أو مقعد المستخدم
00:28:48مع وجود حدود معينة ضمن تلك الفئة لعدد المحادثات التي يمكنك إجراؤها،
00:28:53وحجم البيانات، وعدد التفاعلات المتاحة.
00:28:55إذًا، هذا هو المكان الذي نبدأ منه.
00:28:59ولكن كما يعلم الجميع في هذا النظام البيئي،
00:29:02تتغير الأمور بسرعة وبشكل متكرر عندما يتعلق الأمر بالأدوات القائمة على رموز التحقق (Tokens).
00:29:07لذلك، هذه هي نقطة البداية، وهي العتبة القائمة على مقاعد المستخدمين.
00:29:11>> نعم، أعتقد أنه من الصعب جدًا العثور على النموذج المثالي الذي يتناسب
00:29:16مع حجم الاستخدام ومع عملائك ومع نفقاتك الخاصة أيضًا.
00:29:20سعدت بسماع ذلك.
00:29:23دعنا نرى، هناك سؤال آخر هنا.
00:29:24كيف تقررون أي الأسئلة يتم توجيهها لكل نموذج؟
00:29:29كانت هناك أمور معينة توجهونها إلى Opus.
00:29:31بينما كانت هناك أمور أخرى توجهونها إلى Sonnet.
00:29:33كيف تحددون ذلك؟
00:29:35هل تستخدمون نظام تقييم (Eval) لدعم القرار بالبيانات، أم تعتمدون على الاختبار اليدوي
00:29:41لمعرفة ما إذا كان نموذج Sonnet جافيًا بما يكفي لهذه الفئات؟
00:29:45ما هو نهجكم في هذا الصدد؟
00:29:46>> نعم، الإجابة على هذا السؤال تتطور باستمرار.
00:29:52ما وصلنا إليه الآن هو وجود مصنف حتمي (Deterministic Classifier) للأسئلة الأولية
00:29:57يساعدنا في معرفة مدى تعقيد السؤال بناءً على ما يطرحه المستخدم.
00:30:03هل يستخدمون كلمات مثل "خطة"؟
00:30:04هل يستخدمون كلمات مثل "تقصي"؟
00:30:07تساعدنا هذه الكلمات لأنها سريعة ومجانية، أليس كذلك؟
00:30:12حيث يمكنك التقاطها وتحديدها بسرعة كبيرة.
00:30:15لذا نبدأ بنهج يعتمد على التعبيرات النمطية (Regex) أو القواعد الحتمية.
00:30:20وإذا لم نجد تطابقًا هناك، نعتمد على مصنف يعتمد على نموذج لغوي كبير (LLM)، ونقول:
00:30:27حسنًا، بناءً على ما هو موجود هنا، إذا تجاوز عدد الكلمات حدًا معينًا وما إلى ذلك،
00:30:32فلنمرر هذا السؤال إلى نموذج لغوي كبير ليقوم بتصنيف مدى تعقيده.
00:30:38هذا النموذج سريع للغاية، حيث يستغرق حوالي 300 مللي ثانية لإجراء هذا النوع من التصنيف.
00:30:42وبعد ذلك يساعدنا في توجيه السؤال إلى النموذج المناسب، سواء كان Opus أو Sonnet أو غيرهما.
00:30:47ولدينا أيضًا نظام احتياطي بديل.
00:30:49فإذا أصبحت الأمور معقدة للغاية، وقام المستخدم بطرح نفس السؤال مجددًا
00:30:54أو انطبقت قواعد أخرى لدينا، فسيتم التحويل إلى نموذجنا الأكثر قوة
00:30:59لفترة مؤقتة لضمان حصول المستخدم على الإجابات الصحيحة لأسئلته.
00:31:06>> حسنًا. وتستخدمون نموذج Haiku حاليًا كمصنف لتوجيه الأسئلة؟
00:31:11>> أجل، بالنسبة للتصنيف الأولي، نعم.
00:31:13>> رائع، رائع.
00:31:15حسنًا. أنت أيضًا جزء من برنامج سفراء v0.
00:31:20كيف ساعدك ذلك؟ وهل توصي به؟
00:31:23هل حققت قيمة مضافة من هذا البرنامج حتى الآن أثناء بناء مشروعك؟
00:31:28>> نعم، بكل تأكيد.
00:31:30أوصي به بشدة لأي شخص يستمع إلينا ويهتم بالتقرب أكثر من مجتمع المطورين.
00:31:36لقد شاركت في تنظيم بضع فعاليات الآن لأشخاص في مناطق مختلفة.
00:31:41شاركت في واحدة قبل شهرين أو ربما شهر في المكسيك لتقديم ورشة عمل حضورية
00:31:48والشرح العملي لأداة v0 مع مجموعة من الأشخاص هناك.
00:31:51على الصعيد الشخصي، أحقق فائدة كبيرة من برنامج سفراء v0
00:31:56لأنه يتيح لي التواصل المباشر مع أعضاء فريق المنتج،
00:31:59وأيضًا مع أشخاص آخرين لديهم نفس الشغف والالتزام في هذا المجال.
00:32:03لذا فإن تبادل الأفكار معهم كان أمرًا قيمًا للغاية.
00:32:08>> رائع. وبما أنك تتواصل مباشرة مع مسؤولي المنتج،
00:32:13فأنا واثق من أنك ترسل لهم الكثير من الملاحظات والاقتراحات.
00:32:16هل هناك أي اقتراح تود طرحه هنا علنًا لوضعهم تحت المجهر
00:32:22وزيادة الحماس والضغط الإيجابي عليهم؟
00:32:25>> سأكون لطيفًا. أعتقد أن المطلب الأكبر وقد تحدثنا عن هذا بالفعل
00:32:30هو جلب المزيد من القدرات والميزات إلى v0
00:32:34لتوفير ما اعتاد عليه المطورون في بيئات التطوير المحلية (IDE).
00:32:41لقد حصلنا على مدار الأشهر القليلة الماضية على ميزة البيئة التجريبية داخل v0
00:32:45والقدرة على تشغيلها والحصول على بيئة عمل حقيقية هناك،
00:32:49وهذه خطوة ضخمة في الاتجاه الصحيح.
00:32:51وأعتقد أنه مع استمرارنا في هذا المسار، ستتحسن الأمور أكثر فأكثر.
00:32:55لذا فإن رسالتي لهم هي الاستمرار في هذا التوجه فحسب.
00:33:00>> رائع. لقد كانت عملية تطوير طويلة ومستمرة.
00:33:02لقد بدأت كبيئة تطوير بسيطة جدًا داخل المتصفح
00:33:06والآن أصبحت تتضمن تكاملًا كاملًا مع Monaco و VS Code.
00:33:10إنها تتحسن وتتطور شهرًا بعد شهر.
00:33:14>> هذا صحيح تمامًا.
00:33:15>> حسنًا، أعتقد أن هذا كل ما لدينا من أسئلة هنا.
00:33:18لذا، أود أن أشكرك جزيل الشكر على حضورك وتقديم هذا العرض الرائع.
00:33:24أين يمكن للناس العثور عليك إذا أرادوا التواصل معك أو معرفة المزيد عن stopbox؟
00:33:32>> أنا متواجد بشكل أساسي على LinkedIn.
00:33:34لذا إذا أردتم التواصل معي، يرجى إرسال طلب اتصال مع رسالة قصيرة.
00:33:37اذكروا فيها أنكم تابعتم هذه الجلسة.
00:33:39وسأعرف من أنتم وسأكون سعيدًا بالتواصل والإجابة على أي أسئلة.
00:33:44>> ممتاز. سنضع رابط حسابك على LinkedIn في المحادثة هنا.
00:33:48على أي حال، شكرًا لك. شكرًا جزيلًا على حضورك معنا.
00:33:52>> العفو، شكراً لك.
00:33:55>> حسنًا. شكرًا لجميع الحاضرين معنا.
00:33:59ستكون لدينا جلسة مجتمعية أخرى قريباً في...
00:34:05دعوني أتحقق من التقويم.
00:34:10كان ينبغي عليّ التحقق من ذلك مسبقًا.
00:34:15آه، إنها قادمة يوم الخميس، لكن لم يتم إضافتها رسميًا إلى تقويمنا بعد.
00:34:20لذا، تفقدوا التقويم مجددًا بعد يومين.
00:34:22لدينا جلسة أخرى قادمة.
00:34:24وحتى ذلك الحين، نراكم جميعًا في مجتمعنا.
00:34:27أتمنى لكم يومًا سعيدًا جميعًا.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video