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

1. Başlamadan önce

Bu codelab'de, Dialogflow uygulaması için sohbet deneyimi oluşturmak üzere ön uç Django istemcisi derlemeyi öğreneceksiniz. Özellikle aşağıdakileri yapmanız gerekir:

  • Django ön uç istemcisini indirin, kurun ve çalıştırın.
  • DialogflowDetectIntent uç noktasını Django ön uç istemcisinden çağrılacak şekilde ayarlayın.
  • Uygulamayı App Engine'de Google Cloud'a dağıtın.
  • Takvim davetlerinin kullanıcı isteği bazında 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'e entegre ederek istek karşılamayı anlama

Neler öğreneceksiniz?

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

Neler oluşturacaksınız?

  • Dialogflow için Django ön uç istemcisi oluşturup çalıştıracaksınız.
  • Django ön uç istemcisini App Engine'de Google Cloud'a dağıtacaksınız.
  • Bu özel kullanıcı arabiriminden bir Dialogflow uygulamasını test edeceksiniz.

Gerekenler

  • Python'a dair temel bilgiler
  • Dialogflow ile ilgili temel bilgiler

2. Mimariye genel bakış

Daha önce oluşturduğunuz Randevu Planlayıcı görüşme deneyimini kullanacaksınız ve uygulama için özel bir kullanıcı arabirimi oluşturacaksınız. Ön ucu Django ile derleyecek, 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 ayarlamak üzere DialogflowDetectIntent API'yi çağırır. Ardından Dialogflow karşılaması, ilgili randevunun ayarlanması için Takvim'e istek gönderir ve Dialogflow aracılığıyla kullanıcıya onay bilgisi döndürür.

84515171be610d4.png

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

7146cd729c50f7c1.png

3. Ön uç uygulamasını indirme ve çalıştırma

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

4. Yerel ortamınızı ayarlama

Uygulamanız dağıtıldığında, Cloud SQL örneğinizle iletişim kurmak için App Engine standart ortamında yerleşik olarak bulunan Cloud SQL Proxy'yi kullanır. Ancak uygulamanızı yerel olarak test etmek için geliştirme ortamınızda Cloud SQL Proxy'nin yerel bir kopyasını yüklemeniz ve kullanmanız gerekir. Daha fazla bilgi için Cloud SQL Proxy hakkında bölümüne bakın.

Cloud SQL örneğinizde temel yönetici görevlerini gerçekleştirmek amacıyla 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ışırken 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" olarak adlandırın veya benzer bir şey kullanabilirsiniz. Örneğin hazır olması birkaç dakika sürebilir. Hazır olduğunda örnek listesinde görünecektir.
  2. [YOUR_INSTANCE_NAME] aracının örneğinizin adını temsil ettiği aşağıdaki komutu çalıştırmak için gcloud aracını kullanın. Sonraki adım için örnek bağlantı adı için gösterilen değeri 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.

c11e94464bf4fcf8.png

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] değerini, önceki adımda kaydettiğiniz değerle değiştirin. Bu şekilde yerel bilgisayarınızdan örneğinize yerel test amacıyla bir bağlantı kurulur. Uygulamanızı yerel olarak test ederken Cloud SQL Proxy'yi çalışır durumda tutun.

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

Şimdi, yeni bir Cloud SQL kullanıcısı ve veritabanı oluşturun.

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

Veritabanı ayarlarını yapılandırma

  1. Düzenlemek için mysite/settings.py uygulamasını açın.
  2. İki yerde, [YOUR-USERNAME] ve [YOUR-PASSWORD] değerlerini önceki bölümde oluşturduğunuz veritabanı kullanıcı adı ve şifresiyle değiştirin. Bu işlem, App Engine dağıtımı ve yerel test işlemleri için veritabanıyla bağlantı kurulmasına yardımcı olur.
  3. ‘HOST': ‘cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]' yazan satırdaki [PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME] değerini, bir önceki bölümde kaydettiğiniz değerle değiştirin.
  4. Aşağıdaki komutu çalıştırın ve sonraki adım için çıktı olan örnek bağlantı adı değerini kopyalayın.
gcloud sql instances describe [YOUR_INSTANCE_NAME]
  1. [YOUR-CONNECTION-NAME] değerini, önceki bölümde kaydettiğiniz değerle değiştirin.
  2. [YOUR-DATABASE] değerini önceki bölümde seçtiğiniz adla değiştirin.
# [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 settings.py kaydedin.

5. Hizmet hesabı kurulumu

  1. Dialogflow'un konsolunda e8a0a7d752849e01.png simgesini tıklayın. Proje Kimliği'nin yanındaki Genel sekmesinde Google Cloud'u a9c6ff6374afe489.png tıklayın.
  2. Gezinme menüsü Takipçisi'ni tıklayın > API'ler ve Hizmetler > Credentials (Kimlik Bilgisi).
  3. Kimlik Bilgisi Oluştur'u tıklayın > Hizmet hesabı. 86f51af0e7886fdd.png
  4. Service account details (Hizmet hesabı ayrıntıları) alanına "appointment-scheduler" yazın Hizmet hesabı adı olarak değiştirin, ardından Oluştur'u tıklayın.

845d25f3e07ff770.png

  1. Bu hizmet hesabına projeye erişim izni ver ifadesinin yer aldığı bölümde Devam'ı tıklayarak işlemi atlayın.
  2. Kullanıcıların bu hizmet hesabına erişmesine izin ver (isteğe bağlı) ifadesinin yer aldığı bölümde Anahtar Oluştur'u tıklayın > JSON > Oluştur.

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

a424cec60144d707.png

6. DialogflowDetectIntent uç noktasını uygulamadan çağrılacak şekilde ayarlama

  1. Sohbet klasöründeki AppointmentScheduler.json dosyasını kimlik bilgileri JSON dosyanızla değiştirin.
  2. Sohbet klasöründeki views.py bölümünde, GOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>" değerini proje kimliğinizle değiştirin.

7. Uygulamayı yerel olarak derleyip çalıştırın

Django uygulamasını yerel bilgisayarınızda çalıştırmak için Python, pip ve virtualenv gibi bir Python geliştirme ortamı kurmanız gerekir. Talimatlar için Python Geliştirme Ortamı Oluşturma bölümüne bakın.

  1. Yalıtılmış 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ündeki gibi basit bir web sayfası göreceksiniz:

d40910969aa71020.png

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

8. Uygulamayı App Engine standart ortamına dağıtma

Uygulamanın tüm statik dosyalarını settings.py içinde STATIC_ROOT tarafından 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.

9. Ön uç istemcisini test etme

Web tarayıcınıza https://<proje_kimliğiniz>.appspot.com adresini girin.

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

app deploy komutu, uygulamayı app.yaml bölümünde açıklandığı gibi dağıtır ve yeni dağıtılan sürümü varsayılan sürüm olarak ayarlayarak uygulamanın tüm yeni trafiği sunmasını sağlar.

10. Üretim

11. İçeriğinizi üretimde sunmaya hazır olduğunuzda mysite/settings.py adresindeki HATA AYIKLAMA değişkenini False (Yanlış) olarak değiştirin.

12. Chatbot'unuzu test edin

https://<proje_kimliğiniz>.appspot.com adresine gidin ve aşağıdaki bilgileri girin:

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

3b0abfec8f4ba279.png

  1. Takvim, yanıtı rezerve eder.

eb49089765b84fc6.png

13. Temizleme

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

Dialogflow aracısını silme

  1. Mevcut temsilcinizin yanındaki e8a0a7d752849e01.png simgesini tıklayın.
  2. 520c1c6bb9f46ea6.png
  3. Genel sekmesinde, en alta gidin ve Bu Aracıyı Sil'i tıklayın.
  4. Açılan pencereye Delete yazın ve Sil'i tıklayın.

14. Tebrikler

Dialogflow'da bir chatbot oluşturup bunu Takvim'e entegre ettiniz. Artık bir chatbot geliştiricisisiniz!

Daha fazla bilgi

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