ในโค้ดแล็บนี้ คุณจะได้ผสานรวม Vision API กับ Dialogflow เพื่อให้คำตอบที่สมบูรณ์และไดนามิกซึ่งอิงตามแมชชีนเลิร์นนิงกับอินพุตรูปภาพที่ผู้ใช้ระบุ คุณจะสร้างแอปแชทบอทที่รับรูปภาพเป็นอินพุต ประมวลผลใน Vision API และแสดงสถานที่สำคัญที่ระบุแล้วแก่ผู้ใช้ เช่น หากผู้ใช้อัปโหลดรูปภาพทัชมาฮาล แชทบอทจะตอบกลับเป็นทัชมาฮาล
ซึ่งจะเป็นประโยชน์เนื่องจากคุณสามารถวิเคราะห์รายการในรูปภาพและดำเนินการกับข้อมูลที่ได้รับ นอกจากนี้ คุณยังสร้างระบบการประมวลผลการคืนเงินเพื่อช่วยให้ผู้ใช้อัปโหลดใบเสร็จ แยกวันที่ซื้อในใบเสร็จ และประมวลผลการคืนเงินได้หากวันที่เหมาะสม
ดูตัวอย่างกล่องโต้ตอบต่อไปนี้
ผู้ใช้: สวัสดี
แชทบ็อต: สวัสดี คุณสามารถอัปโหลดรูปภาพเพื่อสำรวจสถานที่สำคัญ
ผู้ใช้: อัปโหลดรูปภาพที่มีทัชมาฮาล
แชทบอท: กำลังประมวลผลไฟล์ นี่คือผลลัพธ์: ทัชมาฮาล สวนทัชมาฮาล ทัชมาฮาล
ข้อกำหนดเบื้องต้น
ก่อนดำเนินการต่อ คุณต้องทำ Codelab ต่อไปนี้ให้เสร็จ
- สร้างเครื่องมือตั้งเวลานัดหมายด้วย Dialogflow
- ผสานรวมแชทบอท Dialogflow กับ Actions on Google
- ทําความเข้าใจเอนทิตีใน Dialogflow
- สร้างไคลเอ็นต์ Django ส่วนหน้าสำหรับแอป Dialogflow
นอกจากนี้ คุณยังต้องทำความเข้าใจแนวคิดและโครงสร้างพื้นฐานของ Dialogflow ซึ่งคุณสามารถดูได้จากวิดีโอต่อไปนี้ในเส้นทางสร้างแชทบอทด้วย Dialogflow
สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้าง Agent ของ Dialogflow
- วิธีอัปเดตเอเจนต์ Dialogflow เพื่ออัปโหลดไฟล์
- วิธีตั้งค่าการเชื่อมต่อ Vision API กับการดำเนินการตามคำสั่งของ Dialogflow
- วิธีตั้งค่าและเรียกใช้แอปฟรอนท์เอนด์ Django สำหรับ Dialogflow
- วิธีทําให้แอปส่วนหน้าของ Django ใช้งานได้ใน Google Cloud บน App Engine
- วิธีทดสอบแอป Dialogflow จากส่วนหน้าแบบกำหนดเอง
สิ่งที่คุณจะสร้าง
- สร้างตัวแทน Dialogflow
- ใช้ส่วนหน้าของ Django เพื่ออัปโหลดไฟล์
- ใช้การจัดการ Dialogflow เพื่อเรียกใช้ Vision API กับรูปภาพที่อัปโหลด
สิ่งที่คุณต้องมี
- มีความรู้พื้นฐานเกี่ยวกับ Python
- มีความเข้าใจพื้นฐานเกี่ยวกับ Dialogflow
- ความเข้าใจพื้นฐานเกี่ยวกับ Vision API
คุณจะสร้างประสบการณ์การสนทนาใหม่ด้วยส่วนหน้า Django ที่กำหนดเอง และขยายเพื่อผสานรวมกับ Vision API คุณจะสร้างส่วนหน้าด้วยเฟรมเวิร์ก Django เรียกใช้และทดสอบในเครื่อง จากนั้นทำให้ใช้งานได้ใน App Engine ส่วนหน้าจะมีลักษณะดังนี้
ขั้นตอนการส่งคำขอจะเป็นดังนี้ตามที่แสดงในรูปภาพต่อไปนี้
- ผู้ใช้จะส่งคำขอผ่านส่วนหน้า
- ซึ่งจะทริกเกอร์การเรียกใช้ Dialogflow detectIntent API เพื่อแมปคำพูดของผู้ใช้กับความตั้งใจที่ถูกต้อง
- เมื่อตรวจพบเจตนาสำรวจสถานที่สำคัญ การดำเนินการตามคำขอของ Dialogflow จะส่งคำขอไปยัง Vision API รับการตอบกลับ และส่งไปยังผู้ใช้
สถาปัตยกรรมโดยรวมจะมีลักษณะดังนี้
Vision API คือโมเดล ML ที่ฝึกไว้ล่วงหน้าซึ่งได้ข้อมูลเชิงลึกจากรูปภาพ ซึ่งจะช่วยให้คุณได้รับข้อมูลเชิงลึกมากมาย รวมถึงการติดป้ายกำกับรูปภาพ การตรวจจับใบหน้าและจุดสังเกต การรู้จำอักขระด้วยภาพ และการติดแท็กเนื้อหาที่อาจไม่เหมาะสม ดูข้อมูลเพิ่มเติมได้ที่ Vision AI
- ไปที่คอนโซล Dialogflow
- ลงชื่อเข้าใช้ (หากเป็นผู้ใช้ครั้งแรก ให้ใช้อีเมลเพื่อลงชื่อสมัครใช้)
- ยอมรับข้อกำหนดและเงื่อนไข แล้วคุณจะเข้าสู่คอนโซลได้
- คลิก
เลื่อนไปที่ด้านล่าง แล้วคลิกสร้างตัวแทนใหม่
5. ป้อน "VisionAPI" เป็นชื่อเอเจนต์
- คลิกสร้าง
Dialogflow จะสร้าง 2 เจตนาเริ่มต้นต่อไปนี้เป็นส่วนหนึ่งของ Agent
- เจตนาต้อนรับเริ่มต้นจะทักทายผู้ใช้
- เจตนาสำรองเริ่มต้นจะดักจับคำถามทั้งหมดที่บ็อตไม่เข้าใจ
ตอนนี้คุณมีบอทที่ใช้งานได้ซึ่งทักทายผู้ใช้ แต่คุณต้องอัปเดตบอทเพื่อให้ผู้ใช้ทราบว่าสามารถอัปโหลดรูปภาพเพื่อสำรวจสถานที่สำคัญได้
อัปเดต Intent ต้อนรับเริ่มต้นเพื่อแจ้งให้ผู้ใช้อัปโหลดรูปภาพ
- คลิกเจตนาต้อนรับเริ่มต้น
- ไปที่คำตอบ > ค่าเริ่มต้น > ข้อความหรือคำตอบ SSML แล้วป้อน "สวัสดี คุณสามารถอัปโหลดรูปภาพเพื่อสำรวจสถานที่สำคัญได้"
สร้างเอนทิตี
- คลิกเอนทิตี
- คลิกสร้างเอนทิตี ตั้งชื่อว่า "filename" แล้วคลิกบันทึก
สร้างเจตนาใหม่
- คลิกเจตนา> สร้างเจตนา
- ป้อน "สำรวจรูปภาพที่อัปโหลด" เป็นชื่อ Intent
- คลิกวลีการฝึก > เพิ่มวลีการฝึก แล้วป้อน "ไฟล์คือ
demo.jpg
" และ "ไฟล์คือtaj.jpeg
" เป็นนิพจน์ของผู้ใช้โดยมี @filename เป็นเอนทิตี
- คลิกคำตอบ > เพิ่มคำตอบ > ค่าเริ่มต้น> คำตอบที่เป็นข้อความหรือ SSML ป้อน "การประเมินไฟล์" แล้วคลิกเพิ่มคำตอบ
- คลิกการดำเนินการตามคำสั่งซื้อ > เปิดใช้การดำเนินการตามคำสั่งซื้อ แล้วเปิดเปิดใช้การเรียกใช้ Webhook สำหรับความตั้งใจนี้
- คลิกการปฏิบัติตามคำสั่งซื้อ
- เปิดใช้ตัวแก้ไขในบรรทัด
- อัปเดต
index.js
ด้วยโค้ดต่อไปนี้ และอัปเดตYOUR-BUCKET-NAME
ด้วยชื่อที่เก็บข้อมูล Cloud Storage
'use strict';
const functions = require('firebase-functions');
const {google} = require('googleapis');
const {WebhookClient} = require('dialogflow-fulfillment');
const vision = require('@google-cloud/vision');
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
const bucketName = 'YOUR-BUCKET-NAME';
const timeZone = 'America/Los_Angeles';
const timeZoneOffset = '-07:00';
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
const agent = new WebhookClient({ request, response });
console.log("Parameters", agent.parameters);
function applyML(agent){
const filename = agent.parameters.filename;
console.log("filename is: ", filename);
// call vision API to detect text
return callVisionApi(agent, bucketName, filename).then(result => {
console.log(`result is ${result}`);
agent.add(`file is being processed, here are the results: ${result}`);
//agent.add(`file is being processed ${result}`);
}).catch((error)=> {
agent.add(`error occurred at apply ml function` + error);
});
}
let intentMap = new Map();
intentMap.set('Explore uploaded image', applyML);
agent.handleRequest(intentMap);
});
async function callVisionApi(agent, bucketName, fileName){
// [START vision_text_detection_gcs]
// Imports the Google Cloud client libraries
// Creates a client
const client = new vision.ImageAnnotatorClient();
try {
// Performs text detection on the gcs file
const [result] = await client.landmarkDetection(`gs://${bucketName}/${fileName}`);
const detections = result.landmarkAnnotations;
var detected = [];
detections.forEach(text => {
console.log(text.description);
detected.push(text.description);
});
return detected;
}
catch(error) {
console.log('fetch failed', error);
return [];
}
}
- วางข้อความต่อไปนี้ใน
package.json
เพื่อแทนที่เนื้อหา
{
"name": "dialogflowFirebaseFulfillment",
"description": "Dialogflow fulfillment for the bike shop sample",
"version": "0.0.1",
"private": true,
"license": "Apache Version 2.0",
"author": "Google Inc.",
"engines": {
"node": "6"
},
"scripts": {
"lint": "semistandard --fix \"**/*.js\"",
"start": "firebase deploy --only functions",
"deploy": "firebase deploy --only functions"
},
"dependencies": {
"firebase-functions": "2.0.2",
"firebase-admin": "^5.13.1",
"actions-on-google": "2.2.0",
"googleapis": "^27.0.0",
"dialogflow-fulfillment": "^0.6.1",
"@google-cloud/bigquery": "^1.3.0",
"@google-cloud/storage": "^2.0.0",
"@google-cloud/vision": "^0.25.0"
}
}
- คลิกบันทึก
- โคลนที่เก็บนี้ไปยังเครื่องของคุณ
https://github.com/priyankavergadia/visionapi-dialogflow.git
- เปลี่ยนไปยังไดเรกทอรีที่มีโค้ด หรือคุณจะดาวน์โหลดตัวอย่างเป็นไฟล์ ZIP แล้วแตกไฟล์ก็ได้
cd visionapi-dialogflow
เมื่อติดตั้งใช้งานแล้ว แอปจะใช้พร็อกซี 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 รุ่นที่ 2 ป้อน "polls-instance" หรือชื่อที่คล้ายกัน อินสแตนซ์อาจใช้เวลาสักครู่จึงจะพร้อมใช้งาน หลังจากที่พร้อมใช้งานแล้ว คุณควรจะเห็นอินสแตนซ์ในรายการอินสแตนซ์
- ตอนนี้ให้ใช้เครื่องมือบรรทัดคำสั่ง gcloud เพื่อเรียกใช้คำสั่งต่อไปนี้ โดยที่
[YOUR_INSTANCE_NAME]
คือชื่ออินสแตนซ์ Cloud SQL จดค่าที่แสดงสำหรับconnectionName
ไว้สำหรับขั้นตอนถัดไป โดยจะแสดงในรูปแบบ[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]
gcloud sql instances describe [YOUR_INSTANCE_NAME]
หรือคุณจะคลิกอินสแตนซ์ในคอนโซลเพื่อดูชื่อการเชื่อมต่ออินสแตนซ์ก็ได้
เริ่มต้นอินสแตนซ์ Cloud SQL
เริ่มพร็อกซี Cloud SQL โดยใช้ connectionName
จากส่วนก่อนหน้า
./cloud_sql_proxy -instances="[YOUR_INSTANCE_CONNECTION_NAME]"=tcp:3306
แทนที่ [YOUR_INSTANCE_CONNECTION_NAME]
ด้วยค่าที่คุณบันทึกไว้ในส่วนก่อนหน้า ซึ่งจะสร้างการเชื่อมต่อจากคอมพิวเตอร์ของคุณไปยังอินสแตนซ์ Cloud SQL เพื่อวัตถุประสงค์ในการทดสอบในเครื่อง เรียกใช้พร็อกซี Cloud SQL ตลอดเวลาที่คุณทดสอบแอปในเครื่อง
จากนั้นสร้างผู้ใช้และฐานข้อมูล Cloud SQL ใหม่
- สร้างฐานข้อมูลใหม่โดยใช้ Google Cloud Console สำหรับอินสแตนซ์ Cloud SQL ที่ชื่อ polls-instance เช่น คุณอาจป้อน "โพล" เป็นชื่อ
- สร้างผู้ใช้ใหม่โดยใช้ Cloud Console สำหรับอินสแตนซ์ Cloud SQL ที่ชื่อ polls-instance
กำหนดการตั้งค่าฐานข้อมูล
- เปิด
mysite/settings-changeme.py
เพื่อแก้ไข - เปลี่ยนชื่อไฟล์เป็น
setting.py
- ใน 2 ตำแหน่ง ให้แทนที่
[YOUR-USERNAME]
และ[YOUR-PASSWORD]
ด้วยชื่อผู้ใช้และรหัสผ่านของฐานข้อมูลที่คุณสร้างไว้ในส่วนก่อนหน้า ซึ่งจะช่วยตั้งค่าการเชื่อมต่อกับฐานข้อมูลสำหรับการติดตั้งใช้งาน App Engine และการทดสอบในเครื่อง - ในบรรทัด
‘HOST': ‘cloudsql/ [PROJECT_NAME]:[REGION_NAME]:[INSTANC
E_NAME]' ให้แทนที่[PROJECT_NAME]:[REGION_NAME]:[INSTANCE_NAME]
ด้วยชื่ออินสแตนซ์ที่คุณได้รับในส่วนก่อนหน้า - เรียกใช้คำสั่งต่อไปนี้และคัดลอกค่า
connectionName
ที่เอาต์พุตสำหรับขั้นตอนถัดไป
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 ให้คลิก
ในแท็บทั่วไป ให้ไปที่โปรเจ็กต์ Google > รหัสโปรเจ็กต์ แล้วคลิก Google Cloud
เพื่อเปิด Cloud Console
- คลิกเมนูการนำทาง ☰ > IAM และผู้ดูแลระบบ > บัญชีบริการ จากนั้นคลิก
ข้างการผสานรวม Dialogflow แล้วคลิกสร้างคีย์
- ระบบจะดาวน์โหลดไฟล์ JSON ลงในคอมพิวเตอร์ ซึ่งคุณจะต้องใช้ในส่วนการตั้งค่าต่อไปนี้
- ในโฟลเดอร์แชท ให้แทนที่
key-sample.json
ด้วยไฟล์ JSON ของข้อมูลเข้าสู่ระบบ แล้วตั้งชื่อว่าkey.json
- ใน
views.py
ในโฟลเดอร์แชท ให้เปลี่ยนGOOGLE_PROJECT_ID = "<YOUR_PROJECT_ID>"
เป็นรหัสโปรเจ็กต์ของคุณ
สร้างที่เก็บข้อมูล Cloud Storage สำหรับออบเจ็กต์แบบคงที่ของส่วนหน้า
- ใน Cloud Console ให้คลิกไปที่เมนูการนำทาง ☰ > Storage
- คลิกสร้างที่เก็บข้อมูล
- ระบุชื่อที่ไม่ซ้ำกันทั่วโลก
- เลือกว่าต้องการเก็บข้อมูลไว้ที่ใด เลือกภูมิภาค แล้วเลือกตำแหน่งที่เหมาะกับความต้องการของคุณมากที่สุด
- เลือกมาตรฐานเป็นคลาสพื้นที่เก็บข้อมูลเริ่มต้น
- เลือกกำหนดสิทธิ์ในแบบเดียวกันที่ระดับที่เก็บข้อมูล (นโยบายที่เก็บข้อมูลเท่านั้น) แล้วคลิกต่อไปเพื่อสร้างที่เก็บข้อมูล
- เมื่อสร้างที่เก็บข้อมูลแล้ว ให้คลิกเมนูการนำทาง ☰ > ที่เก็บข้อมูล> เบราว์เซอร์ แล้วหาที่เก็บข้อมูลที่คุณสร้าง
- คลิก
ข้างที่เก็บข้อมูลที่เกี่ยวข้อง แล้วคลิกแก้ไขสิทธิ์ของที่เก็บข้อมูล
- คลิกเพิ่มสมาชิก คลิกสมาชิกใหม่ ป้อน "allUsers" แล้วคลิกเลือกบทบาท > ผู้ดูออบเจ็กต์พื้นที่เก็บข้อมูล ซึ่งให้สิทธิ์เข้าถึงเพื่อดูไฟล์ส่วนหน้าแบบคงที่แก่ allUsers การตั้งค่าความปลอดภัยดังกล่าวไม่เหมาะสำหรับไฟล์ แต่ใช้ได้เพื่อวัตถุประสงค์ของ Codelab นี้
สร้างที่เก็บข้อมูล Cloud Storage สำหรับรูปภาพที่ผู้ใช้อัปโหลด
ทำตามวิธีการเดียวกันเพื่อสร้างที่เก็บข้อมูลแยกต่างหากสำหรับอัปโหลดรูปภาพของผู้ใช้ ตั้งค่าสิทธิ์เป็น "allUsers" อีกครั้ง แต่เลือก Storage Object Creator และ Storage Object Viewer เป็นบทบาท
กำหนดค่าที่เก็บข้อมูล Cloud Storage ใน settings.py
- เปิด
mysite/setting.py
- ค้นหาตัวแปร
GCS_BUCKET
และแทนที่‘<YOUR-GCS-BUCKET-NA
ME>' ด้วยที่เก็บข้อมูลแบบคงที่ของ Cloud Storage - ค้นหาตัวแปร
GS_MEDIA_BUCKET_NAME
แล้วแทนที่‘<YOUR-GCS-BUCKET-NAME-MED
IA>' ด้วยชื่อที่เก็บข้อมูล Cloud Storage สำหรับรูปภาพ - ค้นหาตัวแปร
GS_STATIC_BUCKET_NAME
แล้วแทนที่‘<YOUR-GCS-BUCKET-NAME-STAT
IC>' ด้วยชื่อที่เก็บข้อมูล Cloud Storage สำหรับไฟล์แบบคงที่ - บันทึกไฟล์
GCS_BUCKET = '<YOUR-GCS-BUCKET-NAME>'
GS_MEDIA_BUCKET_NAME = '<YOUR-GCS-BUCKET-NAME-MEDIA>'
GS_STATIC_BUCKET_NAME = '<YOUR-GCS-BUCKET-NAME-STATIC>'
กำหนดค่าที่เก็บข้อมูล Cloud Storage ใน home.html
- เปิดโฟลเดอร์แชท แล้วเปิด
templates
และเปลี่ยนชื่อhome-changeme.html
เป็นhome.html
- มองหา
<YOUR-GCS-BUCKET-NAME-MEDIA>
แล้วแทนที่ด้วยชื่อที่เก็บข้อมูลของคุณสำหรับตำแหน่งที่คุณต้องการบันทึกไฟล์ที่ผู้ใช้อัปโหลด ซึ่งจะช่วยป้องกันไม่ให้คุณจัดเก็บไฟล์ที่ผู้ใช้อัปโหลดในส่วนหน้าและเก็บเนื้อหาแบบคงที่ไว้ในที่เก็บข้อมูล Cloud Storage Vision API จะเรียกที่เก็บข้อมูล Cloud Storage เพื่อเลือกไฟล์และทำการคาดการณ์
หากต้องการเรียกใช้แอป 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+C
(Command+C
ใน Macintosh) เพื่อหยุดเว็บเซิร์ฟเวอร์ในเครื่อง
ใช้คอนโซลผู้ดูแลระบบ Django
- สร้างผู้ใช้ขั้นสูง
python3 manage.py createsuperuser
- เริ่มเว็บเซิร์ฟเวอร์ในเครื่อง
python3 manage.py runserver
- ไปที่ http://localhost:8000/admin/ ในเว็บเบราว์เซอร์ หากต้องการเข้าสู่ระบบเว็บไซต์ผู้ดูแลระบบ ให้ป้อนชื่อผู้ใช้และรหัสผ่านที่คุณสร้างเมื่อเรียกใช้
createsuperuser
รวบรวมเนื้อหาแบบคงที่ทั้งหมดไว้ในโฟลเดอร์เดียวโดยเรียกใช้คำสั่งต่อไปนี้ ซึ่งจะย้ายไฟล์แบบคงที่ทั้งหมดของแอปไปยังโฟลเดอร์ที่ระบุโดย 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
และตั้งค่าเวอร์ชันที่ติดตั้งใช้งานใหม่เป็นเวอร์ชันเริ่มต้น ซึ่งจะทําให้เวอร์ชันดังกล่าวแสดงการเข้าชมใหม่ทั้งหมด
เมื่อพร้อมแสดงเนื้อหาในเวอร์ชันที่ใช้งานจริงแล้ว ให้เปลี่ยนตัวแปร DEBUG
เป็น False
ใน mysite/settings.py
คุณสามารถทดสอบแชทบอทในโปรแกรมจำลอง หรือใช้การผสานรวมเว็บหรือ Google Home ที่สร้างไว้ก่อนหน้านี้
- ผู้ใช้: "สวัสดี"
- แชทบ็อต: "สวัสดี คุณสามารถอัปโหลดรูปภาพเพื่อสำรวจสถานที่สำคัญได้"
- ผู้ใช้อัปโหลดรูปภาพ
ดาวน์โหลดรูปภาพนี้ ตั้งชื่อว่า demo.jpg
แล้วนำไปใช้
- แชทบอท: "กำลังประมวลผลไฟล์ นี่คือผลลัพธ์: สะพานโกลเดนเกต, เขตสันทนาการแห่งชาติโกลเดนเกต, สะพานโกลเดนเกต, สะพานโกลเดนเกต, สะพานโกลเดนเกต"
โดยรวมแล้วควรมีลักษณะดังนี้
หากต้องการทำ Codelab อื่นๆ ของ Dialogflow ให้เสร็จสมบูรณ์ ให้ข้ามส่วนนี้และกลับมาทำในภายหลัง
ลบเอเจนต์ Dialogflow
- คลิก
ข้างเอเจนต์ที่มีอยู่
- ในแท็บทั่วไป ให้เลื่อนลงแล้วคลิกลบเอเจนต์นี้
- พิมพ์ลบในหน้าต่างที่ปรากฏขึ้น แล้วคลิกลบ
คุณสร้างแชทบอทใน Dialogflow และผสานรวมกับ Vision API ตอนนี้คุณเป็นนักพัฒนาแชทบ็อตแล้ว
ดูข้อมูลเพิ่มเติม
ดูข้อมูลเพิ่มเติมได้ที่ตัวอย่างโค้ดในหน้า Dialogflow Github