Tạo các ứng dụng thoại đa nền tảng với Jovo


Dương Điền Lâm
2 năm trước
Hữu ích 2 Chia sẻ Viết bình luận 0
Đã xem 2340

Các nền tảng giọng nói đang ngày càng phổ biến, ngồi và lặng lẽ lắng nghe những gì chúng ta làm trên nhiều thiết bị di động, điện toán và tiêu dùng. Đằng sau mỗi thiết bị này thường là một nền tảng khác nhau đòi hỏi phải học ngôn ngữ, mô hình hoặc khung mới - nó giống như phát triển cho các hệ điều hành di động một lần nữa!

Jovo nhằm mục đích tạo ra một khung phát triển cho phép bạn viết mã một lần và phân phối tới nhiều nền tảng giọng nói (tại thời điểm này, Alexa và Google Assistant). Một lần nữa, nó giống như hệ sinh thái giọng nói đang đi theo con đường tương tự như phát triển ứng dụng, cố gắng tìm cách xoay quanh việc duy trì nhiều cơ sở mã. Vẫn còn một số bước với mỗi nền tảng giọng nói mà bạn không thể tránh, nhưng bạn có thể viết logic cốt lõi của ứng dụng của mình bằng JavaScript.

Đối với bài đăng này, tôi đã tạo một ứng dụng đơn giản cho người dùng biết bài viết mới nhất trên trang web của tôi là gì.

Cài đặt Jovo

Jovo là một mô-đun NPM, vì vậy hãy cài đặt với:

npm install -g jovo-cli

Lệnh này cài đặt tiện ích dòng lệnh sẽ giúp bạn tạo và quản lý dự án, bao gồm lệnh tạo dự án hữu ích:

jovo new <project_name>

Sau đó, cài đặt các phụ thuộc khác mà dự án Jovo của bạn sẽ cần:

cd <project_name>
npm install

Bạn có thể khởi động ứng dụng bằng node index.jshoặc jovo run, nhưng, vì tất cả các nền tảng thoại hoạt động thông qua các ứng dụng được kết nối web, bạn cần đưa ứng dụng của mình lên web thông qua một công cụ như ngrok và lấy phiên bản URL an toàn mà nó tạo ra.

Kết nối Jovo với Alexa

Để có được mã ứng dụng của bạn hoạt động với Alexa, bạn cần thực hiện hai bước ban đầu (nhưng sẽ có các bước khác tùy thuộc vào độ phức tạp của nó).

1. Thêm ý định

Ý định cho Alexa biết phải làm gì với các hành động tùy chỉnh và mặc định cụ thể và các cụm từ tùy chỉnh mà người dùng có thể sử dụng để kích hoạt chúng. Nếu bạn không chỉ định bất cứ điều gì cho các hành động mặc định, nó sẽ sử dụng mặc định nền tảng. Thêm phần sau vào phần ý định của người tạo Alexa cho kỹ năng của bạn:

{
  "languageModel": {
    "intents": [
      {
        "name": "AMAZON.CancelIntent",
        "samples": []
      },
      {
        "name": "AMAZON.HelpIntent",
        "samples": []
      },
      {
        "name": "AMAZON.PauseIntent",
        "samples": []
      },
      {
        "name": "AMAZON.ResumeIntent",
        "samples": []
      },
      {
        "name": "AMAZON.StopIntent",
        "samples": []
      },
      {
        "name": "LatestPostIntent",
        "samples": [
          "latest post",
          "latest news",
          "latest article",
          "latest blog"
        ],
        "slots": []
      }
    ],
    "invocationName": "<your_invocation>"
  }
}

Như bạn có thể thấy ở trên, tôi chỉ thay đổi tùy chỉnh LatestPostIntentvà thêm một số "cách nói" thay thế có thể kích hoạt ý định đó. Mục đích này liên quan trực tiếp đến mã ứng dụng, nhưng tôi sẽ quay lại vấn đề đó sau.

2. Thêm URL Webhook

Trong tab Cấu hình , thay đổi Loại điểm cuối dịch vụ thành HTTPS và thêm URL được hiển thị của bạn từ phía trên, được thêm vào /webhook:

Hướng dẫn của Google

1. Thêm ý định

Thiết lập Google Assistant phức tạp hơn, ít được cung cấp cho bạn theo mặc định. Đối với tốc độ, trong bài viết này, tôi khuyên bạn nên nhập các ý định tôi đã tạo thông qua tùy chọn Cài đặt  > Xuất và Nhập . Bạn có thể xem chi tiết cụ thể LatestPostIntentbên dưới, bao gồm các cụm từ kích hoạt:

2. Thêm URL Webhook

Trong tab Fulfillment , bật Webhook và thêm URL được hiển thị của bạn từ phía trên, được thêm vào /webhook:

Mật mã

Nhờ Jovo, mã cho ứng dụng này khá đơn giản và yêu cầu một bản cập nhật nhỏ index.jsở cuối tệp:

const handlers = {

    'LAUNCH': function() {
        app.toIntent('LatestPostIntent');
    },

    'LatestPostIntent': function() {
        parser.parseURL('https://gregariousmammal.com/feed.xml', function(err, parsed) {
            console.log(parsed.feed.title);
            parsed.feed.entries.slice(1).forEach(function(entry) {
                console.log(entry.title + ':' + entry.link);
                app.tell(entry.title);
            })
        });
    },
};

Các toIntentphương pháp cho phép bạn nhảy vào một ý định mới trong cùng một yêu cầu - trong trường hợp này, các LatestPostIntent. Logic cho mục đích là JavaScript, sử dụng rss-Parser để phân tích nguồn cấp RSS của trang web và trả về một kết quả mà khung công tác nói.

Đây là tôi đang thử ứng dụng trên Echo của tôi.

Và trong trình giả lập Google Assistant:

Làm cho nó thậm chí dễ dàng hơn

Nếu bạn đã đọc cho đến nay, có vẻ như Jovo không giúp bạn tiết kiệm nhiều thời gian như bạn mong đợi và đây là một nhận xét hợp lệ. Điều này một phần là do nhu cầu truy cập các cổng nhà phát triển khác nhau để kết nối mã với nền tảng nhưng cũng vì Jovo là một nền tảng mới. Tôi đã nói chuyện với nhóm đằng sau nền tảng này và họ sẽ sớm phát hành phiên bản mới. Phiên bản này sẽ giảm nhu cầu tạo các mô hình tương tác của bạn trên mỗi nền tảng. Thay vào đó, bạn có thể tạo một tệp cục bộ và các lệnh CLI mới sẽ đẩy các tệp này đến các nền tảng cho bạn. Nó cũng sẽ giới thiệu một cấu trúc tệp hơi khác so với phác thảo ở trên và có kế hoạch sớm thêm quốc tế hóa chuỗi.

Nếu bạn quan tâm đến việc phát triển giao diện giọng nói cho nhiều nền tảng, nhưng muốn giữ mã của mình ở mức có thể quản lý nhất có thể, hãy thử nghiệm với nền tảng đó, hãy đăng ký Jovo Slack và theo dõi những thay đổi đó.

Hữu ích 2 Chia sẻ Viết bình luận 0
Đã xem 2340