Câu lệnh

Lời nhắc xác định cách Hành động của bạn phản hồi cho người dùng cũng như cách Hành động của bạn nhắc họ tiếp tục. Khi tạo Hành động, bạn có thể thêm lời nhắc vào lời gọi và đến nhiều vị trí khác nhau trong cảnh. Lời nhắc có thể chỉ đơn giản như phản hồi bằng văn bản hoặc lời nói, hoặc có thể phức tạp hơn và chứa nội dung đa dạng thức như thẻ, hình ảnh và bảng.

Loại phản hồi

Đối với mỗi câu lệnh, bạn có thể chọn trong số nhiều loại câu trả lời hấp dẫn để Trợ lý sẽ trình bày cho người dùng:

  • Câu trả lời đơn giản: Các câu trả lời đơn giản có dạng bong bóng trò chuyện một cách trực quan và sử dụng chức năng chuyển văn bản sang lời nói (TTS) hoặc Ngôn ngữ đánh dấu tổng hợp lời nói (SSML) để âm thanh. Phản hồi đơn giản là phản hồi duy nhất được hỗ trợ trên tất cả các loại thiết bị.
  • Câu trả lời đa dạng thức: Câu trả lời nhiều định dạng chứa các thành phần hình ảnh hoặc chức năng tăng cường mức độ tương tác của người dùng bằng Hành động của bạn. Với câu trả lời chi tiết, bạn cũng có thể hiển thị dữ liệu dạng bảng hoặc phát nội dung âm thanh có thời lượng dài hơn.
  • Phản hồi lựa chọn hình ảnh: Các câu trả lời lựa chọn hình ảnh cung cấp hình ảnh trực quan để người dùng chọn trong số nhiều tuỳ chọn dễ dàng nhất được phân biệt qua tiêu đề hoặc hình ảnh.
  • Phản hồi với nội dung nghe nhìn: Phản hồi với nội dung đa phương tiện cho phép Hành động phát âm thanh dạng dài hơn hơn SSML và cung cấp một thành phần hình ảnh có các chế độ điều khiển nội dung nghe nhìn.
  • Canvas tương tác: Canvas tương tác hiển thị câu trả lời ở chế độ toàn màn hình chế độ xem web và hoạt động như một ứng dụng web tương tác mà Trợ lý gửi dưới dạng trả lời người dùng trong cuộc trò chuyện. Canvas sử dụng câu lệnh hơi khác để phù hợp với tính linh hoạt hơn từ các tiêu chuẩn web như HTML, CSS và JavaScript.

Mỗi loại phản hồi trong số này đều sử dụng cùng một định dạng câu lệnh cơ sở và có quyền truy cập vào cùng các tính năng chung được mô tả dưới đây.

Định dạng của câu lệnh

Trong dự án Actions (Hành động), bạn sẽ xác định các câu lệnh ở định dạng YAML hoặc JSON. Một câu lệnh có thể chứa tối đa hai câu trả lời đơn giản và tuỳ ý xác định một câu trả lời phong phú của bạn. Phản hồi được xác định theo các cách sau:

  • first_simple: Câu trả lời bằng văn bản hoặc lời nói ban đầu (đơn giản) để gửi cho người dùng.
  • content: Nội dung phản hồi nhiều định dạng bổ sung để gửi sau câu trả lời đơn giản.
  • last_simple Câu trả lời cuối cùng bằng văn bản hoặc lời nói (đơn giản) để gửi cho người dùng.
  • canvas: Tham chiếu đến một ứng dụng web tích hợp với Interactive Canvas.

Theo mặc định, các lời nhắc sẽ được nối thêm nhau theo thứ tự trên trong một câu lệnh hàng đợi. Trước khi người dùng có thể trả lời, Trợ lý sẽ hiển thị tất cả câu lệnh cho người dùng trong hàng đợi câu lệnh.

Ngoài ra, bạn còn có thể linh hoạt đưa ra câu lệnh bằng các tính năng sau:

  • Ứng viên: Ứng cử viên cho phép bạn xác định câu trả lời dựa trên khả năng thiết bị của người dùng. Ví dụ: bạn có thể chọn chế độ đa dạng thức cho màn hình của Trợ lý chỉ phản hồi khi người dùng tương tác với Hành động của bạn trên một thiết bị có khả năng hiển thị thiết bị.
  • Biến thể: Biến thể là các biến thể thay thế của một thông điệp. Ví dụ: bạn có thể yêu cầu Trợ lý chọn trong số 5 lựa chọn chào mừng khác nhau thông báo biến thể mỗi khi người dùng gọi Hành động của bạn.
  • Đề xuất: Nội dung đề xuất cung cấp cho người dùng trên thiết bị có khả năng hiển thị các thiết bị có khối đề xuất khi Trợ lý hiển thị lời nhắc đó.

Câu lệnh mặc định sử dụng một đề xuất, một biến thể và một phản hồi first_simple.

Ứng cử viên

Trong câu lệnh, đối tượng candidates cho phép bạn xác định các phản hồi dựa trên khả năng thiết bị của người dùng. Ví dụ: bạn có thể chọn chế độ đa dạng thức cho màn hình của Trợ lý chỉ phản hồi khi người dùng tương tác với Hành động của bạn trên một thiết bị có khả năng hiển thị thiết bị. Để xác định các loại thiết bị mà Trợ lý có thể trả về một ứng viên, hãy sử dụng thuộc tính selector của đối tượng candidates.

Trong ví dụ bên dưới, thuộc tính selector chứa chức năng của thiết bị của bạn. Những câu lệnh đã đặt trong đề xuất đầu tiên sẽ được gửi cho người dùng trên thiết bị có thể hiển thị phản hồi đa dạng thức. Đề xuất thứ hai chứa lời nhắc về những người dùng chỉ có thể nhận phản hồi bằng văn bản và lời nói.

YAML

candidates:
  - selector:
      surface_capabilities:
        capabilities:
          - RICH_RESPONSE
    first_simple:
      variants:
        - speech: Here's a simple message.
    content:
      card:
        title: Image card title
        text: Some details about the image
        image:
          url: 'https://www.example.com/image/'
  - first_simple:
      variants:
        - speech: Text explains what the image might have shown in more detail.
    

JSON

{
  "candidates": [{
    "selector": {
      "surface_capabilities": {
        "capabilities": ["RICH_RESPONSE"]
      }
    },
    "first_simple": {
      "variants": [{
        "speech": "Here's a simple message."
      }]
    },
    "content": {
      "card": {
        "title": "Image card title",
        "text": "Some details about the image",
        "image": {
          "url": "https://www.example.com/image/"
        }
      }
    }
  }, {
    "first_simple": {
      "variants": [{
        "speech": "Text explains what the image might have shown in more detail."
      }]
    }
  }]
}
    

Bạn có thể cung cấp một hoặc nhiều yêu cầu về năng lực cho một ứng viên nhất định. Chiến lược phát hành đĩa đơn danh sách sau đây mô tả từng yêu cầu về tính năng hiện có:

  • SPEECH: Thiết bị có thể giao tiếp với người dùng thông qua tính năng chuyển văn bản sang lời nói hoặc SSML.
  • RICH_RESPONSE: Thiết bị có thể hiển thị các câu trả lời đa dạng thức như thẻ, danh sách và bảng.
  • LONG_FORM_AUDIO: Thiết bị có thể phát nội dung nghe nhìn dạng âm thanh dài như nhạc và podcast.
  • INTERACTIVE_CANVAS: Thiết bị có thể hiển thị phản hồi Canvas tương tác.
  • WEB_LINK: Thiết bị có thể sử dụng các đường liên kết trang web trong phản hồi nhiều định dạng để mở một trình duyệt web.
  • HOME_STORAGE: Thiết bị có thể lưu trữ và truy cập dữ liệu từ bộ nhớ tại nhà.

Biến thể

Các biến thể đưa ra cách xác định nhiều phiên bản của một phản hồi. Khi Trợ lý gửi lời nhắc cho người dùng, hệ thống sẽ chọn ngẫu nhiên một trong các biến thể. Tốt nhất thực hành thiết kế cuộc hội thoại, cung cấp cho người dùng câu trả lời thay thế khi họ trò chuyện với Hành động của bạn.

Ví dụ: đưa ra nhiều biến thể của tin nhắn chào mừng để người dùng không nghe thấy cùng một phản hồi mỗi khi chúng gọi Hành động của bạn:

YAML

candidates:
  - first_simple:
      variants:
        - speech: Hello.
        - speech: Hi there.
        - speech: Welcome.
    

JSON

{
  "candidates": [{
    "first_simple": {
      "variants": [{
        "speech": "Hello."
      },{
        "speech": "Hi there."
      },{
        "speech": "Welcome."
      }]
    }
  }]
}
    

Nội dung đề xuất

Ví dụ về khối đề xuất trên màn hình thông minh

Đề xuất cung cấp cho người dùng trên các thiết bị có khả năng hiển thị khối đề xuất khi Trợ lý sẽ hiển thị lời nhắc đó. Sử dụng khối đề xuất để gợi ý câu trả lời của người dùng tiếp tục hoặc chuyển hướng cuộc trò chuyện. Khi được nhấn, khối đề xuất sẽ trả về hiển thị văn bản cho cuộc trò chuyện nguyên văn, như thể người dùng đã nhập văn bản đó.

Bạn có thể có tối đa 8 đề xuất trong một câu lệnh, mỗi đề xuất có tối đa độ dài 25 ký tự văn bản thuần tuý.

Để thêm một đề xuất, hãy cung cấp một đối tượng Suggestion chứa mỗi trong trường title riêng biệt. Mỗi tiêu đề phải là duy nhất trong tập hợp khối đề xuất. Trong Actions Builder (Trình tạo hành động), đối tượng này được biểu thị bằng YAML và JSON dưới dạng suggestions.

Ví dụ: bạn có thể cung cấp "Có" và "Không" gợi ý cùng với câu hỏi:

YAML

candidates:
  - first_simple:
      variants:
        - speech: 'Welcome, do you want to play a game?'
    suggestions:
      - title: 'Yes'
      - title: 'No'
    

JSON

{
  "candidates": [{
    "first_simple": {
      "variants": [{
        "speech": "Welcome, do you want to play a game?"
      }]
    },
    "suggestions": [{
      "title": "Yes"
    }, {
      "title": "No"
    }]
  }]
}