برای یک برنامه Dialogflow یک کلاینت جنگو frontend بسازید

1. قبل از شروع

در این کد لبه، شما یاد خواهید گرفت که یک کلاینت جنگو frontend بسازید تا یک تجربه مکالمه برای یک برنامه Dialogflow ایجاد کنید. به طور خاص، شما کارهای زیر را انجام خواهید داد:

  • کلاینت frontend جنگو را دانلود، راه اندازی و اجرا کنید.
  • نقطه پایانی Dialogflow detectIntent را برای فراخوانی از مشتری frontend جنگو تنظیم کنید.
  • برنامه را در Google Cloud در App Engine اجرا کنید.
  • تست کنید که آیا دعوت‌های تقویم به ازای درخواست کاربر تنظیم می‌شوند یا خیر.

پیش نیازها

قبل از ادامه، باید کدهای زیر را تکمیل کنید:

  1. با Dialogflow یک زمانبندی قرار بسازید
  2. درک موجودیت ها در Dialogflow
  3. با ادغام Dialogflow با Calendar، تحقق را درک کنید

چیزی که یاد خواهید گرفت

  • نحوه راه اندازی و اجرای یک کلاینت frontend جنگو برای Dialogflow
  • نحوه استقرار کلاینت frontend جنگو در Google Cloud در App Engine
  • چگونه یک برنامه Dialogflow را از یک frontend سفارشی آزمایش کنیم

چیزی که خواهی ساخت

  • شما یک کلاینت frontend جنگو را برای Dialogflow راه اندازی و اجرا می کنید.
  • شما کلاینت frontend جنگو را در Google Cloud در App Engine مستقر خواهید کرد.
  • شما یک برنامه Dialogflow را از آن frontend سفارشی آزمایش خواهید کرد.

آنچه شما نیاز دارید

  • درک اولیه پایتون
  • درک اساسی از Dialogflow

2. نمای کلی معماری

شما از تجربه مکالمه Appointment Scheduler که قبلا ساخته بودید استفاده خواهید کرد و یک نمای ظاهری سفارشی برای برنامه ایجاد خواهید کرد. شما می توانید frontend را با Django بسازید، آن را به صورت محلی اجرا و آزمایش کنید و آن را در App Engine مستقر کنید.

کاربر یک درخواست قرار ملاقات از طریق frontend ارسال می کند، که با Dialogflow detectIntent API تماس می گیرد تا یک قرار ملاقات برای تاریخ و زمان درخواستی تنظیم کند. سپس انجام Dialogflow درخواستی را برای تنظیم قرار ملاقات مربوطه به تقویم ارسال می کند و تأییدیه را از طریق Dialogflow به کاربر باز می گرداند.

84515171be610d4.png

نتیجه نهایی به صورت زیر خواهد بود:

7146cd729c50f7c1.png

3. برنامه frontend را دانلود و اجرا کنید

  1. با تایپ این دستور در ترمینال محلی رایانه خود، مخزن را در دستگاه محلی خود کلون کنید:
git clone https://github.com/priyankavergadia/Django-Dialogflow-Appointment-Scheduler.git
  1. به دایرکتوری که حاوی کد است تغییر دهید. همچنین می توانید نمونه را به صورت فشرده دانلود کرده و آن را استخراج کنید.
cd Django-Dialogflow-Appointment-Scheduler

4. محیط محلی خود را تنظیم کنید

وقتی استقرار می‌یابد، برنامه شما از Cloud SQL Proxy که در محیط استاندارد App Engine تعبیه شده است برای برقراری ارتباط با نمونه Cloud SQL شما استفاده می‌کند. با این حال، برای آزمایش برنامه خود به صورت محلی، باید یک کپی محلی از Cloud SQL Proxy را در محیط توسعه خود نصب و استفاده کنید. برای اطلاعات بیشتر، درباره Cloud SQL Proxy را ببینید.

برای انجام وظایف مدیریتی اولیه در نمونه Cloud SQL خود، می توانید از Cloud SQL برای مشتری MySQL استفاده کنید.

Cloud SQL Proxy را نصب کنید

Cloud SQL Proxy را دانلود و نصب کنید. پروکسی 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 ایجاد کنید

  1. یک Cloud SQL برای نمونه نسل دوم MySQL ایجاد کنید. نام نمونه را "polls-instance" یا چیزی شبیه به آن بگذارید. ممکن است چند دقیقه طول بکشد تا نمونه آماده شود. پس از آماده شدن، باید در لیست نمونه قابل مشاهده باشد.
  2. از ابزار gcloud برای اجرای دستور زیر استفاده کنید که در آن [YOUR_INSTANCE_NAME] نام نمونه شما را نشان می‌دهد. مقدار نشان داده شده به عنوان مثال نام اتصال را برای مرحله بعدی، که در قالب [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME].
gcloud sql instances describe [YOUR_INSTANCE_NAME]

همچنین، می‌توانید روی نمونه کلیک کنید تا نام اتصال نمونه را ببینید.

c11e94464bf4fcf8.png

نمونه Cloud SQL خود را راه اندازی کنید

Cloud SQL Proxy را با استفاده از نام اتصال نمونه از مرحله قبل شروع کنید. [YOUR_INSTANCE_CONNECTION_NAME] را با مقداری که در مرحله قبل ثبت کردید جایگزین کنید. این یک اتصال از رایانه محلی شما به نمونه شما برای اهداف آزمایش محلی ایجاد می کند. هنگامی که برنامه خود را به صورت محلی آزمایش می کنید، Cloud SQL Proxy را در حال اجرا نگه دارید.

./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306

در مرحله بعد، یک کاربر و پایگاه داده جدید Cloud SQL ایجاد کنید.

  1. یک پایگاه داده جدید با استفاده از Google Cloud Console برای نمونه Cloud SQL خود با نام polls-instance ایجاد کنید. به عنوان مثال، می توانید "نظرسنجی" را به عنوان نام وارد کنید. a3707ec9bc38d412.png
  2. یک حساب کاربری جدید با استفاده از Cloud Console برای نمونه Cloud SQL خود با نام polls-instance ایجاد کنید. f4d098fca49cccff.png

تنظیمات پایگاه داده را پیکربندی کنید

  1. mysite/settings.py را برای ویرایش باز کنید.
  2. در دو مکان، [YOUR-USERNAME] و [YOUR-PASSWORD] را با نام کاربری و رمز عبور پایگاه داده که در بخش قبل ایجاد کردید، جایگزین کنید. این به تنظیم اتصال به پایگاه داده برای استقرار App Engine و آزمایش محلی کمک می کند.
  3. در خطی که می‌گوید، 'HOST': 'cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTAN CE_NAME]، [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME] را با مقداری که در بخش قبلی ثبت کردید جایگزین ' .
  4. دستور زیر را اجرا کنید و مقدار نام اتصال نمونه خروجی را برای مرحله بعد کپی کنید.
gcloud sql instances describe [YOUR_INSTANCE_NAME]
  1. [YOUR-CONNECTION-NAME] را با مقداری که در بخش قبلی ثبت کردید جایگزین کنید.
  2. [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]
  1. settings.py ببندید و ذخیره کنید.

5. راه اندازی حساب خدمات

  1. در کنسول Dialogflow، کلیک کنید e8a0a7d752849e01.png . در برگه عمومی در کنار شناسه پروژه ، روی Google Cloud کلیک کنید a9c6ff6374afe489.png .
  2. روی منوی پیمایش ☰ > API ها و خدمات > اعتبارنامه ها کلیک کنید.
  3. روی ایجاد اعتبارنامه > حساب سرویس کلیک کنید. 86f51af0e7886fdd.png
  4. در جزئیات حساب سرویس ، "Appointment-scheduler" را به عنوان نام حساب سرویس وارد کنید، سپس روی ایجاد کلیک کنید.

845d25f3e07ff770.png

  1. در جایی که می‌گوید اجازه دسترسی به این حساب سرویس به پروژه را بدهید ، روی Continue کلیک کنید تا از آن رد شوید.
  2. در جایی که می‌گوید به کاربران اجازه دسترسی به این حساب سرویس (اختیاری) را بدهید ، روی ایجاد کلید > JSON > ایجاد کلیک کنید.

یک فایل JSON در رایانه شما دانلود می شود که در بخش های راه اندازی زیر به آن نیاز دارید.

a424cec60144d707.png

6. نقطه پایانی Dialogflow detectIntent را تنظیم کنید تا از برنامه فراخوانی شود

  1. در پوشه چت، فایل JSON اعتبارنامه خود را جایگزین AppointmentScheduler.json کنید.
  2. در views.py در پوشه چت، GOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>" را به شناسه پروژه خود تغییر دهید.

7. برنامه را به صورت محلی بسازید و اجرا کنید

برای اجرای برنامه جنگو در رایانه محلی خود، باید یک محیط توسعه پایتون، از جمله Python، pip و virtualenv را راه اندازی کنید. برای دستورالعمل‌ها، به تنظیم محیط توسعه پایتون مراجعه کنید.

  1. یک محیط Python ایزوله ایجاد کنید و وابستگی ها را نصب کنید:
virtualenv env
source env/bin/activate
pip install -r requirements.txt
  1. مهاجرت جنگو را اجرا کنید تا مدل های خود را تنظیم کنید.
python3 manage.py makemigrations
python3 manage.py makemigrations polls
python3 manage.py migrate
  1. یک وب سرور محلی راه اندازی کنید.
python3 manage.py runserver
  1. در مرورگر وب خود، http://localhost:8000/ را وارد کنید. شما باید یک صفحه وب ساده را همانطور که در تصویر زیر مشاهده می کنید ببینید:

d40910969aa71020.png

صفحات نمونه برنامه توسط وب سرور جنگو در حال اجرا بر روی رایانه شما ارائه می شود. وقتی آماده حرکت به جلو هستید، Control+S ( Command+S در مکینتاش) را فشار دهید تا وب سرور محلی متوقف شود.

8. برنامه را در محیط استاندارد App Engine قرار دهید

دستور زیر را اجرا کنید تا همه فایل‌های استاتیک برنامه را به پوشه‌ای که STATIC_ROOT در settings.py مشخص کرده است منتقل کنید:

python3 manage.py collectstatic

با اجرای دستور زیر در دایرکتوری برنامه که فایل app.yaml در آن قرار دارد، برنامه را آپلود کنید:

gcloud app deploy

منتظر پیامی باشید که به شما اطلاع می دهد که به روز رسانی کامل شده است.

9. مشتری frontend را تست کنید

در مرورگر وب خود، https://<your_project_id>.appspot.com را وارد کنید.

این بار درخواست شما توسط وب سروری که در محیط استاندارد App Engine اجرا می شود، ارائه می شود.

دستور app deploy برنامه را همانطور که در app.yaml توضیح داده شده است اجرا می کند و نسخه جدید مستقر شده را به عنوان نسخه پیش فرض تنظیم می کند و باعث می شود که تمام ترافیک جدید ارائه شود.

10. تولید

11. هنگامی که آماده ارائه محتوای خود در تولید هستید، متغیر DEBUG را در mysite/settings.py به False تغییر دهید.

12. چت بات خود را تست کنید

به https://<your_project_id>.appspot.com بروید و موارد زیر را وارد کنید:

  1. کاربر: "برای ثبت نام خودرو فردا ساعت 15 وقت بگذارید."
  2. ربات چت به صورت زیر پاسخ می دهد:

3b0abfec8f4ba279.png

  1. تقویم پاسخ را رزرو می کند.

eb49089765b84fc6.png

13. پاکسازی کنید

اگر قصد دارید سایر کدهای Dialogflow را تکمیل کنید، فعلاً از این قسمت صرفنظر کرده و بعداً به آن بازگردید.

عامل Dialogflow را حذف کنید

  1. کلیک کنید e8a0a7d752849e01.png در کنار نماینده فعلی شما
  2. 520c1c6bb9f46ea6.png
  3. در برگه عمومی ، به پایین بروید و روی Delete This Agent کلیک کنید.
  4. در پنجره ظاهر شده Delete را تایپ کنید و روی Delete کلیک کنید.

14. تبریک می گویم

شما یک chatbot در Dialogflow ایجاد کردید و آن را با Calendar ادغام کردید. شما اکنون یک توسعه دهنده ربات چت هستید!

بیشتر بدانید

برای کسب اطلاعات بیشتر منابع زیر را بررسی کنید: