Di chuyển phương thức thực hiện

Sau khi thiết lập ý định và cảnh, bạn phải cập nhật mã thực hiện đơn hàng để tính đến những thay đổi trong định dạng yêu cầu và phản hồi của Trình tạo hành động. Đây cũng là cơ hội để cân nhắc sử dụng các tính năng bổ sung của Trình tạo hành động. Trang này trình bày các bước chung và những điểm cần cân nhắc khi cập nhật mã thực hiện đơn hàng.

Cân nhắc phương pháp thực hiện đơn hàng

Mã thực hiện của dự án phụ thuộc vào mô hình trò chuyện và các tính năng của nền tảng phát triển. Trình tạo hành động giới thiệu một mô hình và chức năng trò chuyện mới giúp thay đổi cách bạn tạo cuộc trò chuyện và có khả năng sẽ thay đổi cách bạn thực hiện dự án. Phần này mô tả các tính năng của Trình tạo thao tác khác với Dialogflow và sự khác biệt này thay đổi cách bạn triển khai mã thực hiện đơn hàng như thế nào.

  • Các thay đổi đối với cách triển khai cuộc trò chuyện

    • Dialogflow sử dụng quy trình trò chuyện hướng đến ý định theo ngữ cảnh, trong đó từng ý định được kết hợp dựa trên cụm từ huấn luyện và ngữ cảnh đầu vào/đầu ra của ý định trước đó.
    • Luồng trò chuyện của Trình tạo hành động sử dụng cảnh làm vùng chứa cho các lượt trò chuyện. Trong một cảnh, bạn có thể so khớp các ý định cụ thể, tương tự như ngữ cảnh của Dialogflow. Lượt chuyển đổi xác định cảnh cần chuyển sang, dựa trên ý định phù hợp.
  • Các hàm webhook có thể tái sử dụng

    • Trong Dialogflow, các trình xử lý webhook liên kết với từng ý định. Nếu cần thêm logic, bạn phải tạo một ý định riêng để xử lý hàm mới.
    • Trình xử lý webhook có tên trình xử lý tuỳ chỉnh trong Trình tạo hành động. Tính năng này cho phép bạn gọi một hàm từ nhiều cảnh trong suốt dự án.
  • Các cách khác để gọi webhook

    • Một phương thức tiếp cận webhook cho mỗi ý định trong Dialogflow yêu cầu thêm ý định để hỗ trợ thêm logic trò chuyện trong quá trình thực hiện dự án của bạn.
    • Trình tạo hành động cho phép bạn thực hiện lệnh gọi webhook từ nhiều vị trí trong một cảnh: khi nhập, dựa trên các điều kiện, dựa trên việc lấp đầy vị trí và thông qua việc so khớp ý định tuỳ chỉnh và so khớp ý định của hệ thống.

Cập nhật mã thực hiện đơn hàng

Mã thực hiện của mỗi Hành động sẽ khác nhau tuỳ thuộc vào độ phức tạp và mục đích của Hành động đó. Tuy nhiên, có những bước chung cần thực hiện khi cập nhật mã:

  1. Tải xuống và cài đặt phiên bản mới nhất của thư viện ứng dụng.

    npm install @assistant/conversation
    
  2. Cập nhật câu lệnh require trong mã của bạn. Ví dụ:

    const {
      SimpleResponse,
      BasicCard,
      Image,
    } = require('actions-on-google');
    

    Mã ở trên được cập nhật thành như sau:

    const {
      conversation,
      Simple,
      Card,
      Image,
    } = require('@assistant/conversation');
    
  3. Tái cấu trúc mã của bạn để sử dụng các phương thức mới.

    • Trình xử lý ý định: app.intentapp.handle
    • Trả lời/lời nhắc: conv.askconv.add
    • Các chức năng của nền tảng/thiết bị: conv.surface.capabilities.has('actions.capability.SCREEN_OUTPUT')conv.device.capabilities.includes('RICH_RESPONSE')
    • Bộ nhớ dữ liệu: conv.dataconv.session.params
    • Loại câu trả lời:

      • SimpleResponseSimple
      • BasicCardCard
      • SuggestionsSuggestion
    • Tham số ý định: conv.parameters[KEY]conv.intent.parameters[KEY].resolved

    • Chuyển đổi ngữ cảnh/cảnh: conv.contexts.set(content_name, 5);conv.scene.next.name = 'context_name'

    • Kết thúc cuộc trò chuyện: conv.close(response)conv.add.response; conv.scene.next.name = 'actions.page.END_CONVERSATION'

  4. Cập nhật mã phản hồi để sử dụng dữ liệu phản hồi gốc mới của Trình tạo. Ví dụ:

    conv.ask(new Suggestions (['a', 'b']));
    

    Mã ở trên được cập nhật thành như sau:

    for (suggestion of ['a', 'b']) {
      conv.add.(new Suggestion({title: suggestion}))
    }
    

Hãy xem bản đồ dịch mã của phương thức thực hiện dưới đây để biết danh sách đầy đủ các phương thức.

Hãy sử dụng các trang sau để so sánh tải trọng yêu cầu và phản hồi:

Thiết lập webhook

Sau khi bạn cập nhật phương thức thực hiện, hãy bật lệnh gọi webhook trong suốt các cảnh trong dự án. Mặc dù công cụ di chuyển di chuyển chế độ cài đặt webhook của ý định Dialogflow nhưng bạn cần xem lại các chế độ cài đặt này vì mã phương thức thực hiện được tái cấu trúc và các chức năng webhook có thể thay đổi.

Trong Dialogflow, các webhook được bật theo ý định và mã phương thức thực hiện của bạn bao gồm các trình xử lý và hàm cần thực thi khi khớp với ý định. Trong Trình tạo hành động, một webhook có thể kích hoạt trong các cảnh hoặc ý định gọi, từ đó gửi yêu cầu đến điểm cuối của phương thức thực hiện. Phương thức thực hiện của bạn chứa các trình xử lý webhook xử lý tải trọng JSON trong yêu cầu. Bạn có thể kích hoạt webhook trong các trường hợp sau:

  • Sau khi khớp ý định gọi
  • Trong khi một cảnh quay chuẩn bị vào sân khấu
  • Sau khi một điều kiện được đánh giá là true trong giai đoạn điều kiện của một cảnh
  • Trong giai đoạn gửi vị trí của cảnh quay
  • Sau khi quá trình so khớp ý định xảy ra trong giai đoạn đầu vào của một cảnh

Khi di chuyển từ Dialogflow sang Trình tạo hành động, bạn cần tính đến các thay đổi đối với quy trình trò chuyện của mình vì điều này có thể thay đổi về thời điểm và vị trí bạn thực hiện cuộc gọi qua webhook.

Để bật cuộc gọi qua webhook, hãy làm theo các bước sau:

  1. Chọn cảnh bạn muốn gọi webhook từ đó.
  2. Chọn trạng thái mà bạn muốn bật webhook. Bạn có thể bật webhook cho một hoặc nhiều trạng thái sau:

    • Khi nhập
    • Điều kiện
    • Lấp đầy khoảng trống
    • Xử lý ý định của người dùng
    • Xử lý ý định của hệ thống
  3. Đánh dấu vào lựa chọn Gọi webhook của bạn.

  4. Nhập trình xử lý webhook mà bạn đã xác định trong mã phương thức thực hiện.

  5. Nhấp vào Lưu.

  6. Chuyển đến mục Kiểm thử để trải nghiệm các thay đổi đối với lệnh gọi webhook và phương thức thực hiện.

Bản đồ dịch mã thực hiện đơn hàng

Bảng dưới đây cho bạn biết cách cú pháp mã thực hiện của Dialogflow chuyển thành mã Trình tạo hành động. Hãy xem tài liệu tham khảo về Trình tạo hành động và SDK để biết danh sách đầy đủ các phương thức.

Dialogflow Trình tạo hành động
conv.data conv.session.params
conv.ask conv.add
conv.close conv.scene.next.name = 'actions.scene.END_CONVERSATION'
conv.user.storage conv.user.params
conv.input.raw conv.intent.query
conv.parameters conv.intent.params[key].resolved
conv.arguments.get('MEDIA_STATUS')
mediaStatus.status==='FINISHED'
conv.intent.params['MEDIA_STATUS']
mediaStatus.resolved==='FINISHED'
Sự kiện Xử lý ý định của hệ thống:
MEDIA_STATUS_FINISHED
MEDIA_STATUS_FAILED
conv.device.capabilities.has("actions.capability.SCREEN_OUTPUT") conv.device.capabilities.includes("RICH_RESPONSE")
app.intent app.handler
app.middleware app.middleware
Câu trả lời đơn giản prompt -firstSimple
Câu trả lời nhiều định dạng prompt -content -card: object -image: object -table: object -media: object -suggestions -link

Bạn có thể xem thông tin về công cụ bổ sung dưới đây: