Dialogflow uygulaması için ön uç Django istemcisi derleme

Bu codelab'de, Dialogflow uygulaması için etkileşimli bir deneyim oluşturmak üzere bir ön uç Django istemcisi oluşturmayı öğreneceksiniz. Özellikle şunları yapacaksınız:

  • Django ön uç istemcisini indirip kurun ve çalıştırın.
  • Django ön uç istemcisinden çağrılacak şekilde Dialogflow detectIntent uç noktasını ayarlayın.
  • Uygulamayı App Engine'de Google Cloud'a dağıtın.
  • Takvim davetlerinin kullanıcı isteğine göre ayarlanıp ayarlanmadığını test edin.

Ön koşullar

Devam etmeden önce aşağıdaki codelab'leri tamamlamanız gerekir:

  1. Dialogflow ile randevu planlayıcı oluşturma
  2. Dialogflow'daki varlıkları anlama
  3. Dialogflow'u Takvim ile entegre ederek karşılama işlemini anlama

Neler öğreneceksiniz?

  • Dialogflow için Django ön uç istemcisi oluşturma ve çalıştırma
  • Django ön uç istemcisini App Engine'de Google Cloud'a dağıtma
  • Özel bir ön uçtan Dialogflow uygulamasını test etme

Ne oluşturacaksınız?

  • Dialogflow için bir Django ön uç istemcisi ayarlayıp çalıştıracaksınız.
  • Django ön uç istemcisini App Engine'de Google Cloud'a dağıtacaksınız.
  • Bu özel ön uçtan bir Dialogflow uygulamasını test edersiniz.

İhtiyacınız olanlar

  • Python hakkında temel bilgiler
  • Dialogflow ile ilgili temel bilgiler

Daha önce oluşturduğunuz Randevu Planlayıcı görüşme deneyimini kullanacak ve uygulama için özel bir ön uç oluşturacaksınız. Ön ucu Django ile oluşturacak, yerel olarak çalıştırıp test edecek ve App Engine'e dağıtacaksınız.

Kullanıcı, ön uç üzerinden bir randevu isteği gönderir. Bu istek, istenen tarih ve saat için randevu oluşturmak üzere Dialogflow detectIntent API'sini çağırır. Ardından Dialogflow karşılaması, ilgili randevuyu ayarlamak için Takvim'e bir istek gönderir ve Dialogflow üzerinden kullanıcıya bir onay döndürür.

Sonuç şu şekilde görünür:

  1. Bilgisayarınızın yerel terminaline şu komutu girerek depoyu yerel makinenize klonlayın:
git clone https://github.com/priyankavergadia/Django-Dialogflow-Appointment-Scheduler.git
  1. Kodu içeren dizine geçiş yapın. Alternatif olarak, örneği zip dosyası olarak indirip çıkarabilirsiniz.
cd Django-Dialogflow-Appointment-Scheduler

Uygulamanız dağıtıldığında Cloud SQL örneğinizle iletişim kurmak için App Engine standart ortamına yerleştirilmiş Cloud SQL Proxy'sini kullanır. Ancak uygulamanızı yerel olarak test etmek için geliştirme ortamınıza Cloud SQL Proxy'nin yerel bir kopyasını yükleyip kullanmanız gerekir. Daha fazla bilgi için Cloud SQL Proxy hakkında başlıklı makaleyi inceleyin.

Cloud SQL örneğinizde temel yönetici görevlerini gerçekleştirmek için MySQL için Cloud SQL istemcisini kullanabilirsiniz.

Cloud SQL Proxy'yi yükleyin

Cloud SQL Proxy'yi indirip yükleyin. Cloud SQL Proxy, yerel olarak çalıştırıldığında Cloud SQL örneğinize bağlanmak için kullanılır.

Proxy'yi indirin.

curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64

Proxy'yi yürütülebilir hale getirin.

chmod +x cloud_sql_proxy

Cloud SQL örneği oluşturma

  1. MySQL için Cloud SQL İkinci Nesil örneği oluşturun. Örneği "polls-instance" veya benzer bir adla adlandırın. Örneğin hazır olması birkaç dakika sürebilir. Hazır olduğunda örnek listesinde görünür.
  2. [YOUR_INSTANCE_NAME], örneğinizin adını temsil edecek şekilde aşağıdaki komutu çalıştırmak için gcloud aracını kullanın. Bir sonraki adım için örnek bağlantı adının değerini not edin. Bu değer, [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]. biçiminde gösterilir.
gcloud sql instances describe [YOUR_INSTANCE_NAME]

Alternatif olarak, Örnek bağlantı adını görmek için örneği tıklayabilirsiniz.

Cloud SQL örneğinizi ilk kullanıma hazırlama

Önceki adımdaki örnek bağlantı adını kullanarak Cloud SQL Proxy'yi başlatın. [YOUR_INSTANCE_CONNECTION_NAME] yerine önceki adımda kaydettiğiniz değeri girin. Bu, yerel test amacıyla yerel bilgisayarınızdan örneğinize bir bağlantı oluşturur. Uygulamanızı yerel olarak test ederken Cloud SQL Proxy'nin çalışmaya devam etmesini sağlayın.

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

Ardından, yeni bir Cloud SQL kullanıcısı ve veritabanı oluşturun.

  1. Google Cloud Console'u kullanarak polls-instance adlı Cloud SQL örneğiniz için yeni bir veritabanı oluşturun. Örneğin, ad olarak "anketler" girebilirsiniz.
  2. polls-instance adlı Cloud SQL örneğiniz için Cloud Console'u kullanarak yeni bir kullanıcı hesabı oluşturun.

Veritabanı ayarlarını yapılandırma

  1. Düzenlemek için mysite/settings.py simgesini açın.
  2. İki yerde [YOUR-USERNAME] ve [YOUR-PASSWORD] kısımlarını, önceki bölümde oluşturduğunuz veritabanı kullanıcı adı ve şifresiyle değiştirin. Bu, App Engine dağıtımı ve yerel test için veritabanı bağlantısının kurulmasına yardımcı olur.
  3. ‘HOST': ‘cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME],' yazan satırda [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME] yerine önceki bölümde kaydettiğiniz değeri girin.
  4. Aşağıdaki komutu çalıştırın ve bir sonraki adım için çıkışı verilen örnek bağlantı adı değerini kopyalayın.
gcloud sql instances describe [YOUR_INSTANCE_NAME]
  1. [YOUR-CONNECTION-NAME] öğesini, önceki bölümde kaydettiğiniz değerle değiştirin.
  2. [YOUR-DATABASE] yerine önceki bölümde seçtiğiniz adı girin.
# [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. Kapatıp kaydedin settings.py.
  1. Dialogflow'un konsolunda simgesini tıklayın. Genel sekmesinde Proje kimliği'nin yanındaki Google Cloud'u tıklayın.
  2. Gezinme menüsü ☰ > API'ler ve Hizmetler > Kimlik bilgileri'ni tıklayın.
  3. Kimlik bilgisi oluştur > Hizmet hesabı'nı tıklayın.
  4. Hizmet hesabı ayrıntıları bölümünde Hizmet hesabı adı olarak "appointment-scheduler"ı girip Oluştur'u tıklayın.

  1. Bu hizmet hesabına projeye erişim izni ver yazan yerde Devam'ı tıklayarak bu adımı atlayın.
  2. Kullanıcıların bu hizmet hesabına erişmelerine izin verin (isteğe bağlı) yazan yerde Anahtar oluştur > JSON > Oluştur'u tıklayın.

Bilgisayarınıza bir JSON dosyası indirilir. Bu dosyayı aşağıdaki kurulum bölümlerinde kullanmanız gerekir.

  1. Sohbet klasöründe AppointmentScheduler.json yerine kimlik bilgileri JSON dosyanızı girin.
  2. Sohbet klasöründeki views.py içinde GOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>" kısmını proje kimliğinizle değiştirin.

Django uygulamasını yerel bilgisayarınızda çalıştırmak için Python, pip ve virtualenv dahil olmak üzere bir Python geliştirme ortamı ayarlamanız gerekir. Talimatlar için Python Geliştirme Ortamı Kurma başlıklı makaleyi inceleyin.

  1. İzole bir Python ortamı oluşturun ve bağımlılıkları yükleyin:
virtualenv env
source env/bin/activate
pip install -r requirements.txt
  1. Modellerinizi ayarlamak için Django taşıma işlemlerini çalıştırın.
python3 manage.py makemigrations
python3 manage.py makemigrations polls
python3 manage.py migrate
  1. Yerel bir web sunucusu başlatın.
python3 manage.py runserver
  1. Web tarayıcınıza http://localhost:8000/ adresini girin. Aşağıdaki ekran görüntüsünde gösterildiği gibi basit bir web sayfası görmeniz gerekir:

Örnek uygulama sayfaları, bilgisayarınızda çalışan Django web sunucusu tarafından sunulur. Devam etmeye hazır olduğunuzda yerel web sunucusunu durdurmak için Control+S (Macintosh'ta Command+S) tuşuna basın.

Uygulamanın tüm statik dosyalarını settings.py içinde STATIC_ROOT ile belirtilen klasöre taşımak için aşağıdaki komutu çalıştırın:

python3 manage.py collectstatic

app.yaml dosyasının bulunduğu uygulamanın dizininde aşağıdaki komutu çalıştırarak uygulamayı yükleyin:

gcloud app deploy

Güncellemenin tamamlandığını bildiren mesajı bekleyin.

Web tarayıcınızda https://<your_project_id>.appspot.com adresini girin.

Bu kez isteğiniz, App Engine standart ortamında çalışan bir web sunucusu tarafından karşılanır.

app deploy komutu, uygulamayı app.yaml bölümünde açıklandığı şekilde dağıtır ve yeni dağıtılan sürümü varsayılan sürüm olarak ayarlar. Bu nedenle, tüm yeni trafik bu sürüm üzerinden sunulur.

https://<your_project_id>.appspot.com adresine gidin ve aşağıdakileri girin:

  1. Kullanıcı: "Yarın saat 15:00'e araç kaydı için randevu al."
  2. Chatbot şu şekilde yanıt verir:

  1. Takvim, yanıtı kaydeder.

Diğer Dialogflow codelab'lerini tamamlamayı planlıyorsanız bu bölümü şimdilik atlayıp daha sonra geri dönebilirsiniz.

Dialogflow aracısını silme

  1. Mevcut temsilcinizin yanındaki simgesini tıklayın.
  1. Genel sekmesinde, en alta gidip Bu Aracıyı Sil'i tıklayın.
  2. Açılan pencereye Sil yazıp Sil'i tıklayın.

Dialogflow'da bir chatbot oluşturup Takvim ile entegre ettiniz. Artık bir chatbot geliştiricisiniz.

Daha fazla bilgi

Daha fazla bilgi edinmek için aşağıdaki kaynaklara göz atın: