في هذا الدرس التطبيقي حول الترميز، ستتعرّف على كيفية إنشاء برنامج Django في الواجهة الأمامية لإنشاء تجربة تحاورية لتطبيق Dialogflow، وستنفّذ ما يلي على وجه التحديد:
- تنزيل عميل الواجهة الأمامية Django وإعداده وتشغيله.
- عليك إعداد نقطة نهاية DialogflowdetectIntent ليتم استدعاؤها من برنامج الواجهة الأمامية من Django.
- انشر التطبيق على Google Cloud على App Engine.
- يمكنك اختبار ما إذا كان يتم إعداد دعوات "تقويم Google" لكل طلب مستخدم.
المتطلّبات الأساسية
قبل المتابعة، عليك إكمال الدروس التطبيقية حول الترميز التالية:
- إنشاء أداة جدولة المواعيد باستخدام Dialogflow
- فهم الكيانات في Dialogflow
- فهم التنفيذ من خلال دمج Dialogflow مع "تقويم Google"
ما ستتعرَّف عليه
- كيفية إعداد عميل واجهة Django الأمامية لـ Dialogflow وتشغيله
- كيفية نشر برنامج الواجهة الأمامية لـ Django في Google Cloud على App Engine
- كيفية اختبار تطبيق Dialogflow من واجهة أمامية مخصّصة
العناصر التي سيتم إنشاؤها
- سيكون عليك إعداد برنامج واجهة Django الأمامية لـ Dialogflow وتشغيله.
- عليك نشر برنامج الواجهة الأمامية لـ Django في Google Cloud على App Engine.
- ستختبر تطبيق Dialogflow من تلك الواجهة الأمامية المخصّصة.
الأشياء التي تحتاج إليها
- فهم أساسي للغة Python
- فهم أساسي لمنصة Dialogflow
سيكون عليك استخدام تجربة المحادثة في أداة جدولة المواعيد التي أنشأتها سابقًا وإنشاء واجهة أمامية مخصصة للتطبيق. ستنشئ واجهة أمامية باستخدام Django وتشغِّلها وتختبرها محليًا وتنشرها على App Engine.
سيرسل المستخدم طلب موعد عبر الواجهة الأمامية، والذي سيتصل بواجهة برمجة تطبيقات DialogflowdetectIntent لإعداد موعد للتاريخ والوقت المطلوبَين. سيؤدي حينئذٍ تنفيذ مربع حوار Dialogflow إلى إرسال طلب إلى "تقويم Google" لتحديد الموعد المعني وعرض تأكيد للمستخدم من خلال Dialogflow.
ستبدو النتيجة النهائية على النحو التالي:
- يمكنك نسخ المستودع إلى جهازك المحلي عن طريق كتابة هذا الأمر في الوحدة الطرفية المحلية للكمبيوتر:
git clone https://github.com/priyankavergadia/Django-Dialogflow-Appointment-Scheduler.git
- غيِّر الدليل الذي يحتوي على الرمز. بدلاً من ذلك، يمكنك تنزيل النموذج كملف zip واستخراجه.
cd Django-Dialogflow-Appointment-Scheduler
عند نشر تطبيقك، يستخدم تطبيقك الخادم الوكيل Cloud SQL الذي تم تضمينه في البيئة العادية لـ App Engine للاتصال بمثيل Cloud SQL. ومع ذلك، لاختبار تطبيقك محليًا، يجب تثبيت واستخدام نسخة محلية من خادم Cloud SQL الوكيل في بيئة التطوير. لمزيد من المعلومات، يُرجى الاطِّلاع على معلومات عن خادم Cloud SQL الوكيل.
لتنفيذ مهام المشرف الأساسية على مثيل Cloud SQL، يمكنك استخدام Cloud SQL لبرنامج MySQL.
تثبيت الخادم الوكيل Cloud SQL
نزّل الخادم الوكيل Cloud SQL وثبِّته. يُستخدَم خادم وكيل Cloud SQL للاتصال بمثيل Cloud SQL عند تشغيله محليًا.
نزِّل الخادم الوكيل.
curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
اجعل الخادم الوكيل قابلاً للتنفيذ.
chmod +x cloud_sql_proxy
إنشاء مثيل Cloud SQL
- إنشاء Cloud SQL لمثيل الجيل الثاني من MySQL. أدخِل اسمًا للمثيل "polls-instance" أو لأمر مشابه. قد يستغرق الأمر بضع دقائق حتى يكون المثيل جاهزًا. وبعد أن تصبح جاهزة، ستظهر في قائمة المثيلات.
- استخدِم أداة gcloud لتشغيل الأمر التالي حيث يمثّل
[YOUR_INSTANCE_NAME]
اسم مثيلك. دوِّن القيمة المعروضة لاسم الاتصال المثالي للخطوة التالية، والتي تظهر بتنسيق[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME].
.
gcloud sql instances describe [YOUR_INSTANCE_NAME]
بدلاً من ذلك، يمكنك النقر على المثيل للاطِّلاع على اسم اتصال المثيل.
إعداد مثيل Cloud SQL
ابدأ الخادم الوكيل Cloud SQL باستخدام اسم اتصال المثيل من الخطوة السابقة. استبدل [YOUR_INSTANCE_CONNECTION_NAME]
بالقيمة التي سجلتها في الخطوة السابقة. يؤدي ذلك إلى إنشاء اتصال من جهاز الكمبيوتر المحلي بمثيل الجهاز لأغراض الاختبار المحلي. يمكنك الإبقاء على خادم وكيل Cloud SQL قيد التشغيل أثناء اختبار التطبيق محليًا.
./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306
بعد ذلك، أنشئ قاعدة بيانات جديدة لمستخدم Cloud SQL وقاعدة بيانات.
- يمكنك إنشاء قاعدة بيانات جديدة باستخدام Google Cloud Console لمثيل Cloud SQL الذي يحمل الاسم polls-instance. على سبيل المثال، يمكنك إدخال "Polls" كاسم.
- يمكنك إنشاء حساب مستخدم جديد باستخدام Cloud Console لمثيل Cloud SQL الذي يُسمى polls-instance.
ضبط إعدادات قاعدة البيانات
- افتح
mysite/settings.py
للتعديل. - في مكانين، استبدل
[YOUR-USERNAME]
و[YOUR-PASSWORD]
باسم المستخدم وكلمة المرور لقاعدة البيانات اللذين أنشأتهما في القسم السابق. ويساعد ذلك في إعداد الاتصال بقاعدة البيانات لنشر App Engine والاختبار المحلي. - في السطر الذي يشير إلى،
‘HOST': ‘cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTAN
CE_NAME]،'
استبدل[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]
بالقيمة التي سجلتها في القسم السابق. - شغّل الأمر التالي وانسخ قيمة اسم اتصال المثيل الناتجة عن الخطوة التالية.
gcloud sql instances describe [YOUR_INSTANCE_NAME]
- استبدل
[YOUR-CONNECTION-NAME]
بالقيمة التي سجلتها في القسم السابق. - استبدِل
[YOUR-DATABASE]
بالاسم الذي اخترته في القسم السابق.
# [START db_setup] if os.getenv('GAE_APPLICATION', None): # Running on production App Engine, so connect to Google Cloud SQL using # the unix socket at /cloudsql/<your-cloudsql-connection string> DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '/cloudsql/[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]', 'USER': '[YOUR-USERNAME]', 'PASSWORD': '[YOUR-PASSWORD]', 'NAME': '[YOUR-DATABASE]', } } else: # Running locally so connect to either a local MySQL instance or connect to # Cloud SQL via the proxy. To start the proxy via command line: # $ cloud_sql_proxy -instances=[INSTANCE_CONNECTION_NAME]=tcp:3306 # See https://cloud.google.com/sql/docs/mysql-connect-proxy DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '127.0.0.1', 'PORT': '3306', 'NAME': '[YOUR-DATABASE]', 'USER': '[YOUR-USERNAME]', 'PASSWORD': '[YOUR-PASSWORD]' } } # [END db_setup]
- أغلِق
settings.py
واحفظه.
- في وحدة تحكم Dialogflow's، انقر على
. في علامة التبويب عام بجانب رقم تعريف المشروع، انقر على Google Cloud
.
- انقر على قائمة التنقل ☰ >؛ واجهات برمجة التطبيقات &؛ الخدمات >؛ بيانات الاعتماد.
- انقر على إنشاء بيانات اعتماد >؛ حساب الخدمة.
- في تفاصيل حساب الخدمة، أدخِل "appointment-scheduler" باعتباره اسم حساب الخدمة، ثم انقر على إنشاء.
- حيث تظهر عبارة منح حساب الخدمة هذا إذنًا بالوصول إلى المشروع، انقر على متابعة لتخطيه.
- عندما تظهر عبارة منح المستخدمين حق الدخول إلى حساب الخدمة هذا (اختياري)، انقر على إنشاء مفتاح >؛ JSON >؛ إنشاء.
سيتم تنزيل ملف JSON على الكمبيوتر، وستحتاج إليه في أقسام الإعداد التالية.
- في مجلد المحادثة، استبدِل
AppointmentScheduler.json
بملف بيانات اعتماد JSON. - في
views.py
في مجلد المحادثة، غيِّرGOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>"
إلى رقم تعريف مشروعك.
لتشغيل تطبيق Django على جهاز الكمبيوتر المحلي، ستحتاج إلى إعداد بيئة تطوير لغة Python، بما في ذلك Python وpip وVirtualenv. للحصول على التعليمات، راجِع إعداد بيئة تطوير لغة Python.
- إنشاء بيئة Python معزولة وتثبيت تبعيات:
virtualenv env source env/bin/activate pip install -r requirements.txt
- يمكنك تشغيل عمليات نقل البيانات في Django لإعداد النماذج.
python3 manage.py makemigrations python3 manage.py makemigrations polls python3 manage.py migrate
- شغِّل خادم ويب محليًا.
python3 manage.py runserver
- في متصفِّح الويب، أدخِل http://localhost:8000/. من المفترض أن تظهر لك صفحة ويب بسيطة كما تظهر في لقطة الشاشة التالية:
يتم تقديم نماذج صفحات التطبيق من خلال خادم الويب Django الذي يعمل على جهاز الكمبيوتر. عندما تكون مستعدًا للمضي قدمًا، اضغط على Control+S
(Command+S
على نظام التشغيل Macintosh) لإيقاف خادم الويب المحلي.
شغِّل الأمر التالي لنقل جميع الملفات الثابتة للتطبيق إلى المجلد الذي حدّده STATIC_ROOT
في settings.py
:
python3 manage.py collectstatic
حمِّل التطبيق عن طريق تشغيل الأمر التالي في دليل التطبيق حيث يوجد ملف app.yaml
:
gcloud app deploy
انتظر الرسالة التي تبلغك باكتمال التحديث.
في متصفِّح الويب، أدخِل https://<your_project_id>.appspot.com.
هذه المرة، يتم عرض طلبك من خلال خادم ويب يعمل في بيئة App Engine العادية.
سيؤدي الأمر app deploy
إلى نشر التطبيق كما هو موضّح في app.yaml
وضبط الإصدار المنشور حديثًا على أنه الإصدار التلقائي، ما يؤدي إلى عرض جميع الزيارات الجديدة.
انتقِل إلى https://<your_project_id>.spotspot.com وأدخِل ما يلي:
- المستخدم: "تحديد موعد لتسجيل المركبة في الساعة 3 عصرًا غدًا&"
- يردّ برنامج المحادثة المبرمَجة على النحو التالي:
- حجز "تقويم Google" الرد
إذا كنت تخطط لإكمال مختبرات ترميز Dialogflow الأخرى، يمكنك تخطي هذا الجزء في الوقت الحالي والعودة إليه لاحقًا.
حذف وكيل Dialogflow
- يُرجى النقر على
بجانب الوكيل الحالي.
- في علامة التبويب الإعدادات العامة، انتقِل إلى الأسفل وانقر على حذف هذا الوكيل.
- اكتب حذف في النافذة التي تظهر وانقر على حذف.
لقد أنشأت برنامج محادثة مبرمجة في Dialogflow ودمجته مع "تقويم Google". أنت الآن مطوّر برامج تتبُّع المحادثة.
مزيد من المعلومات
يمكنك الاطّلاع على المراجع التالية للحصول على مزيد من المعلومات:
- دمج Vision API مع Dialogflow
- نماذج الرموز في صفحة Dialogflow ithub