สร้างการดำเนินการตามคำสั่งซื้อ (Dialogflow)

Fulfillment กำหนดอินเทอร์เฟซการสนทนาสำหรับโปรเจ็กต์ Actions เพื่อรับข้อมูลจากผู้ใช้และตรรกะในการประมวลผลอินพุตและดำเนินการสำเร็จในที่สุด

ภาพรวม

Fulfillment ของคุณได้รับคำขอจาก Assistant จากนั้นจะดำเนินการตามคำขอและตอบกลับ ขั้นตอนการส่งคำขอและการตอบสนองไปมานี้ช่วยกระตุ้นการสนทนาให้เกิดขึ้นอย่างต่อเนื่องจนกว่าคำขอเริ่มต้นของผู้ใช้จะดำเนินการตามคำขอได้ในที่สุด

ขั้นตอนต่อไปนี้อธิบายวิธีสร้าง Fulfillment โดยใช้ Actions SDK ด้วยไลบรารีของไคลเอ็นต์ Node.js หรือ Java/Kotlin

  1. เริ่มต้นออบเจ็กต์ ActionsSdkApp
  2. สร้างฟังก์ชันเพื่อจัดการคำขอในตรรกะการดำเนินการตามคำสั่งซื้อ

กล่องโต้ตอบของสิ่งปลูกสร้าง

เริ่มต้นออบเจ็กต์ ActionsSdkApp

โค้ดต่อไปนี้จะสร้างอินสแตนซ์ ActionsSdkApp และตั้งค่า Node.js บางส่วนสำหรับ Google Cloud Functions:

Actions SDK (Node.js)
'use strict';

const {actionssdk} = require('actions-on-google');
const functions = require('firebase-functions');

const app = actionssdk({debug: true});

app.intent('actions.intent.MAIN', (conv) => {
  conv.ask('Hi!');
});

// More intent handling if needed
exports.myFunction = functions.https.onRequest(app);
Actions SDK (Java)
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi!");
return responseBuilder.build();
JSON
{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "Hi!"
              }
            }
          ]
        }
      },
      "possibleIntents": [
        {
          "intent": "actions.intent.TEXT"
        }
      ]
    }
  ],
  "conversationToken": "{\"data\":{}}",
  "userStorage": "{\"data\":{}}"
}

สร้างฟังก์ชันเพื่อจัดการคำขอ

เมื่อผู้ใช้พูดวลี คุณจะได้รับคําขอจาก Google Assistant สร้างฟังก์ชันที่จัดการ Intent ที่ทริกเกอร์เพื่อให้เป็นไปตาม Intent ที่ส่งคำขอ

ที่ Intent

วิธีจัดการคำขอ

  1. ใช้ตรรกะที่จำเป็นสำหรับการประมวลผลข้อมูลจากผู้ใช้

  2. เรียกใช้ฟังก์ชัน conv.ask() ผ่านการตอบสนองที่คุณต้องการแสดงเป็นอาร์กิวเมนต์

โค้ดต่อไปนี้แสดงวิธีสร้างคำตอบอย่างง่าย

Actions SDK (Node.js)
conv.ask(`Hi! Say something, and I'll repeat it.`);
Actions SDK (Java)
ResponseBuilder responseBuilder =
    getResponseBuilder(request).add("Hi! Say something, and I'll repeat it.");
return responseBuilder.build();
JSON
{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "Hi! Say something, and I'll repeat it."
              }
            }
          ]
        }
      },
      "possibleIntents": [
        {
          "intent": "actions.intent.TEXT"
        }
      ]
    }
  ],
  "conversationToken": "{\"data\":{}}",
  "userStorage": "{\"data\":{}}"
}

การจัดการ Intent

เมื่อคุณมีฟังก์ชันทั้งหมดในการจัดการ Intent ที่ทริกเกอร์แล้ว ให้ใช้ app.intent เพื่อกำหนดเครื่องจัดการให้กับ Intent

Actions SDK (Node.js)
app.intent('actions.intent.TEXT', (conv) => {
  // handle text intent.
});
app.intent('actions.intent.MAIN', (conv) => {
  // handle main intent.
});
Actions SDK (Java)
@ForIntent("actions.intent.MAIN")
public ActionResponse main(ActionRequest request) {
  // handle main intent
  // ...
}

@ForIntent("actions.intent.TEXT")
public ActionResponse text(ActionRequest request) {
  // handle text intent
  // ...
}

กำลังสิ้นสุดการสนทนา

เมื่อไม่ต้องการให้ผู้ใช้ป้อนข้อมูลใดๆ กลับมาอีกต่อไปและต้องการสิ้นสุดการสนทนา ให้เรียกใช้ฟังก์ชัน conv.close() ฟังก์ชันนี้จะบอก Google Assistant ให้พูดข้อความตอบกลับไปยังผู้ใช้และสิ้นสุดการสนทนาด้วยการปิดไมโครโฟน

การจัดการ Intent ของคำขอหลัก

เมื่อผู้ใช้เรียกใช้ Intent app.intent.action.MAIN โดยปกติ คุณจะไม่ต้องประมวลผลการป้อนข้อมูลใดๆ จากผู้ใช้ หากแพ็กเกจการดำเนินการของคุณมีการดำเนินการหลายข้อและครอบคลุม Use Case มากมาย ก็เป็นความคิดที่ดีที่จะปรับเปลี่ยนผู้ใช้โดยบอกถึง 2-3 อย่างที่ผู้ใช้สามารถทำได้

  1. เรียกใช้ฟังก์ชัน conv.ask() ที่ส่งผ่านการตอบกลับของคุณเป็นอาร์กิวเมนต์ Google Assistant จะพูดคำตอบของคุณกับผู้ใช้ แล้วรอให้ผู้ใช้เรียก Intent ในรายการที่ระบุ

ข้อมูลโค้ดต่อไปนี้จะแสดงวิธีจัดการจุดประสงค์ในการต้อนรับที่ไม่ซับซ้อน

Actions SDK (Node.js)
// handle the initialTrigger
function handleMainIntent(conv, input) {
  conv.ask(input);
}
Actions SDK (Java)
private ActionResponse handleMainIntent(ResponseBuilder rb, String input) {
  return rb.add(input).build();
}

สถานะการสนทนา

หากใช้ API เว็บฮุค HTTP/JSON สำหรับการสนทนา คุณจะรักษาสถานะของการสนทนาด้วยออบเจ็กต์รูปแบบ JSON (conversationToken) ที่ส่งไปมาระหว่างคุณกับ Google Assistant ได้ หากใช้ไลบรารีของไคลเอ็นต์ Node.js คุณจะเขียนและอ่านจากช่อง conv.data ได้โดยตรง ระบบจะส่งช่องนี้กลับไปมาโดยอัตโนมัติระหว่างคำขอและคำตอบ

Actions SDK (Node.js)
conv.data = {something: 10};
let value = conv.data.something;
Actions SDK (Java)
ResponseBuilder rb = getResponseBuilder(request);
rb.getConversationData().put("something", 10);
Object value = rb.getConversationData().get("something");