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

در این کد لبه، شما یاد خواهید گرفت که یک کلاینت جلویی جنگو بسازید تا یک تجربه مکالمه برای یک برنامه 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

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

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

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

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

هنگامی که استقرار می یابد، برنامه شما از 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 Proxy برای اتصال به نمونه 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] نشان داده شده است، [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME].
gcloud sql instances describe [YOUR_INSTANCE_NAME]

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

نمونه 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 ایجاد کنید. به عنوان مثال، می توانید "نظرسنجی" را به عنوان نام وارد کنید.
  2. یک حساب کاربری جدید با استفاده از Cloud Console برای نمونه Cloud SQL خود با نام polls-instance ایجاد کنید.

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

  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 را ببندید و ذخیره کنید.
  1. در کنسول Dialogflow، کلیک کنید . در برگه عمومی در کنار شناسه پروژه ، روی Google Cloud کلیک کنید .
  2. روی منوی پیمایش ☰ > API ها و خدمات > اعتبارنامه ها کلیک کنید.
  3. روی ایجاد اعتبارنامه > حساب سرویس کلیک کنید.
  4. در جزئیات حساب سرویس ، "Appointment-scheduler" را به عنوان نام حساب سرویس وارد کنید، سپس روی ایجاد کلیک کنید.

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

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

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

برای اجرای برنامه جنگو بر روی رایانه محلی خود، باید یک محیط توسعه پایتون شامل 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/ را وارد کنید. شما باید یک صفحه وب ساده را همانطور که در تصویر زیر مشاهده می کنید ببینید:

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

دستور زیر را اجرا کنید تا همه فایل های استاتیک برنامه را به پوشه ای که 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>.appspot.com بروید و موارد زیر را وارد کنید:

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

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

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

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

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

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

بیشتر بدانید

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