Giải Pháp Tích Hợp Chatbot Vào Web Của Bạn Với Amazon Lex

AWS Jan 18, 2022

Bối cảnh

Hiện tại công ty khách hàng đang sở hữu một chuỗi Salons tóc, gồm 200 cửa hàng. Hằng ngày, công việc của nhân viên cửa hàng là truy cập vào Website để tư vẫn, hưỡng dẫn, đặt lịch cho khách hàng có nhu cầu muốn tới cửa hàng để sử dụng dịch vụ. Công việc này sẽ dễ dàng cho các nhân viên khi số lượng khách hàng không quá lớn. Nhưng gần đây việc số lượng khách hàng truy cập vào Website thường xuyên hơn, và nhiều thời điểm trong ngày. Điều này đã làm cho công việc của đội ngũ tư vấn, hưỡng dẫn, đặt lịch cho khách hàng đang gặp nhiều khó khăn. Về phía công ty đang băn khoăn và có nhiều lo lắng. Họ nhận thấy việc hỗ trợ khách hàng thủ công như vậy đang mất nhiều công số, và năng suất lao động không cao. Nên họ đang nghĩ tới việc sử dụng Chatbot để cải thiện các vấn đề đăng gặp phải.

Vẫn đề nội tại

Khách hàng đã có một Web chat, và họ đang muốn phát triển thêm chatbot để hỗ trợ cho việc đặt lịch tự động. Và chatbot cần có các tính năng: 
- Xử lý các yêu cầu text
- Tìm kiếm cửa hàng theo vị trí
- Chọn khung giờ
- Người dùng sẽ chọn dịch vụ và đặt lịch đến cửa hàng
- Sau khi người dùng đặt lịch thì sẽ có email thông báo và có mã QR code

Phân tích vấn đề và đưa ra nhu cầu của khách hàng

Là một người tư vấn giải pháp, tôi đã nhìn nhận và đánh giá các vấn đề mà khách hàng đang gặp phải. Đó là khách hàng đã có Website và muốn thay đổi việc tư vấn, đặt lịch thủ công sang tự động bằng cách tích hợp chatbot vào Website mà họ hiện có. Và đồng thời chatbot có thể hỗ trợ các tính năng mà khách hàng muốn thiết lập cho nhu cầu kinh doanh của họ.

Giải pháp tổng quát

Một số khái niệm về chatbot

Chatbot:

Chatbot là một chương trình máy tính thực hiện cuộc trò chuyện bằng ngôn ngữ tự nhiên thông qua các phương pháp giọng nói hoặc văn bản, hiểu ý định của người dùng

friendly-chatbot

Một số thuật ngữ quan trọng

- Intent: ý định trong mỗi câu nói của người dùng(ví dụ: chào hỏi, tìm quán cà phê...).
- Entity: các thông tin có thể trích xuất trong câu nói của người dùng(ví dụ: số điện thoại, địa chỉ, tên quán cà phê...).
- Slot: đối tượng để ánh xạ giá trị các trường trong Database với với các thông tin mà người dùng cung cấp,xuất dữ liệu( ví dụ thông tin người dùng cung cấp là tìm quán cà phê để “học bài” thì mục đích “học bài” sẽ được ánh xạ vào cặp key-value là “purpose: HB” để tiện cho việc truy xuất dữ liệu)
- Action: là hành động mà Chatbot có thể làm, thể hiện khả năng của Chatbot(ví dụ: tìm quán cà phê, tìm nhà ăn...)
- Domain: là một tập các intents, entities, slots, actions. Chúng mang ý nghĩa thể hiện cho tất cả những gì Chatbot có thể hiểu thông qua intents, entities, slots và có thể làm actions.
- Tracker Store: là cơ sở dữ liệu để lưu trữ lịch sử cuộc hội thoại của Chatbot với người dùng. Một số hệ thống thiết kế đơn giản sẽ lưu lịch sử trò chuyện trong RAM hoặc gộp chung với Knowledge DB.
- Knowledge DB: là cơ sở dữ liệu lưu trữ tri thức của Chatbot. Ví dụ như: thông tin về các quán ăn, khu du lịch, ...

Phân loại Chatbots

  • Task-oriented Dialogue Systems
    TODs là loại Chatbot được thiết kế để thực hiện các tác vụ cụ thể trong một lĩnh vực nhất định như: mua vé, cung cấp thông tin, đặt lịch…
    Chúng thường được các doanh nghiệp phát triển để cung cấp dịch vụ hỗ trợ khách hàng 24/7.
    Các hệ thống TODs hiện nay đang được các doanh nghiệp ứng dụng mạnh mẽ trong nhiều lĩnh vực như tài chính, y tế, thương mại điện tử, viễn thông...nghiệp tự phát triển
    chúng thường được tích hợp trên các nền tảng Chat như Messenger, WhatsApp, Slack hoặc Chat platform do doanh
  • Intelligent Personal Assistants
    IPAs là loại Chatbot đóng vai trò như một trợ lý cá nhân để giúp người dùng thực hiện một số công việc thường ngày của họ
    Ví dụ trợ lý cá nhân Siri, Cortana của Microsoft, Google Assistant, Alexa của Amazon
  • Chit-chat Dialogue Systems
    Chit-chat dialogue systems(CDDs) được thiết kế để trở thành một người “bạn ảo” đồng hành lâu dài với người dùng, lắng nghe họ tâm sự và cùng thảo luận về mọi chủ đề trong cuộc sống.

Một số nhà cung cấp dịch vụ chatbot hàng đầu: Google DialogFolow, Amazon Lex, botexpress
Các dịch vụ có cả miễn phí và trả phí cung cấp các nền tảng kênh facebok, zalo, Twilio, ...

Do khách hàng đang sử dụng chatbot để xử lý các yêu cầu Text, nên trong giải pháp lần này tôi sẽ sử dụng chatbot loại Task-oriented dialogue systems

Giải pháp tổng quát

Để có một cách hiểu đơn giản các mong muốn, yêu cầu của khách hàng thì tôi đã đưa ra giải pháp tổng quát khi tích hợp chatbot vào một Website, chúng ta cùng xem mô hình dưới đây

giai_phap_tong_quat

Follow:

  • Users login và truy cập cập vào Chat Platfform
  • Users gửi các request text chứa các ý định tới Chat Platform
  • Chat Platform sẽ chuyển requests text tới chatbot(Google DialogFolow, Amazone lex, Botexpress), qua đó Chat bot sẽ phân tích các ý định chứa trong request text mà users đã gửi đến
  • Chatbot sẽ đưa ra actions và gửi lại response về Chat Platform
  • Chat Platform sẽ hiện thị các thông tin cho users

Chú thích

  • Automatic Speech Recognition (ASR) và Text to Speech (TTS)

    • Nhận dạng giọng nói tự động (ASR) và chuyển văn bản thành giọng nói (TTS)
  • Natural Language Understanding (NLU)

    • Đây là module chịu trách nhiệm chuyển đổi tin nhắn văn bản của người dùng thành dạng dữ liệu có cấu trúc đã được định nghĩa từ trước. Dạng dữ liệu có cấu trúc này chính là các Intents, Entities.
  • Dialogue State Tracking (DST) là module chịu trách nhiệm theo dõi và cập nhật trạng thái của cuộc hội thoại.

    • Có 2 luồng xử lý riêng biệt trong module này bao gồm:
      • Luồng 1: cập nhật trạng thái được kích hoạt bởi module NLU
        Ở luồng thứ nhất DST sẽ thực hiện các tiến trình sau: Cập nhật Intent và Entities được gửi tới từ NLU vào Tracker Store. Dựa trên Intent và Entities tại trạng thái hiện tại và lịch sử cuộc trò chuyện thực hiện cập nhật giá trị của các Slots. Cập nhật giá trị của Slots mới vào Tracker Store. Sau đó gửi trạng thái hiện tại của hệ thống cho module Dialogue Policy. Trạng thái của hệ thống được gửi tới Dialogue Policy bao gồm: Intent, Entities, Slots và lịch sử cuộc trò chuyện.
      • Luồng 2: cập nhật trạng thái kích hoạt bởi Dialogue Policy.
  • Dialogue Policy (DP)

    • là module thực hiện dự đoán hành động kế tiếp mà Chatbot cần thực hiện dựa trên trạng thái cuộc hội thoại được gửi tới từ DST.
    • Natural Language Generation (NLG) là module chịu trách nhiệm tạo ra câu trả lời bằng ngôn ngữ tự nhiên từ kết quả của module DP.

Ở sơ đồ logic đơn giản trên, chúng ta có thể thấy là việc xây dựng chatbot là yếu tố quan trọng cho giải pháp lần này. Sẽ có rất nhiều nhà cung cấp giải pháp và dịch vụ để phục vụ cho nhu cầu này với các hình thức đa dạng bao gồm miễn phí và trả phí, cloud và on-premise.

Một số chatbot phổ biến

  • Google DialogFolow
  • Botexpress
  • Amazon lex

Bài toán yêu cầu

Bài toán 1: Xây dựng giải pháp tích hợp chatbot vào nền tảng Web có sẵn, có thể customize theo nhu cầu doanh nghiệp
Bài toán 2: Tối ưu hoá chi phí vận hành (running cost)
Bài toán 3: Tối ưu hoá chi phí phát triển

Google DialogFolow

Điểm lợi

  • Có option miễn phí cho người dùng nhu cầu thấp
  • Dễ hiểu và dễ học, ngay cả đối với người mới bắt đầu.
  • Chất lượng tốt nhất và các cuộc trò chuyện phong phú bằng cách sử dụng ngôn ngữ tự nhiên.
  • Hỗ trợ nhiều nền tảng: Google, Assistant, Slack, Viber, FB, Messenger, Twitter, LINE, Twilio etc.
  • Hỗ trờ nhiều ngôn ngũ, có thêm các tính năng riêng như là phân tích tình cảm
  • Cung cấp giao diện web để tạo chatbot

Điểm bất lợi

  • Tuy nhiên cần upgrade lên plan doanh nghiệp, chi phí dịch vụ phải bỏ ra lớn
  • Lập trình viên khó có thể kiểm soát tốt việc xử lý đối thoại

Botexpress

Điểm lợi

  • Là một open-source, sử dụng miễn phí
  • Có thể tuỳ chỉnh
  • Một cách dễ dàng để phát triền bot của riêng bạn
  • Hỗ trợ các nền tảng: Messenger, LINE

Điểm bất lợi

  • Khó thể mở rộng lên cho các mô hình doanh nghiệp lớn
  • Chi phí cho phát triển / vận hành tương đối lớn
  • Việc chạy các bot instance sẽ phải quan tâm tới việc thuê máy chủ, bảo trì, tốn kém nhiều chi phí

Với những ưu và nhược điểm, kết hợp với nhu cầu của khách hàng, chúng ta sẽ tạm thời không xét tới Botexpress.

Chúng ta sẽ đến một giải pháp tiềm năng đó là sử dụng Amazon Lex

Amazon Lex là một dịch vụ xây dựng giao diện trò chuyện bằng voice and text do AWS cung cấp. Được hỗ trợ bởi cùng một công cụ đàm thoại như Alexa, Amazon Lex cung cấp khả năng nhận dạng giọng nói và hiểu ngôn ngữ chất lượng cao, cho phép bổ sung ‘chatbots’ ngôn ngữ tự nhiên, tinh vi vào các ứng dụng mới và hiện có

Amazon Lex giảm thiểu nỗ lực phát triển đa nền tảng, cho phép bạn dễ dàng publish chatbot bằng giọng nói hoặc văn bản của mình lên các thiết bị di động và nhiều dịch vụ trò chuyện, như Facebook Messenger, Slack, Kik hoặc Twilio SMS

Khả năng tương tác gốc với AWS Lambda và Amazon CloudWatch và dễ dàng tích hợp với nhiều dịch vụ khác trên nền tảng AWS bao gồm Amazon Cognito và Amazon DynamoDB giúp cho việc phát triển bot trở nên dễ dàng.

Như vậy Amazon Lex cung cấp

  • Chatbot dựa trên sức mạnh nền tảng điện toán đám mây do chính họ xây dựng. Nó là một lợi thế lớn, tiết kiệm chi phí vận hành
  • Cung cấp dịch vụ có sắn để giảm thiểu chi phí phát triển
  • SDK dành cho các nhà phát triển có thể xây dựng các ứng dụng và bổ sung thêm các tính năng phù hợp cho doanh nghiệp

Chi phí dành cho Amazon lex là rất cạnh tranh

$0.00075 per request text
$0.004 per speech requests

Ví dụ

Khách hành có 200 của hàng salons tóc, mỗi ngày sẽ có 100 người cần tư vấn và đặt lịch. Trung bình mỗi người sẽ gửi 15 yêu cầu text.
Chi phí khi dùng Amazon Lex trong một ngày:
200 cửa hàng * 100 người * 15 request text * $0.00075/per request text = $225

Vậy làm sao tích hợp được chatbot của bạn vào web? Mời các bạn đọc giải pháp dưới đây mà tôi đưa ra nhé!

Giải Pháp Tích Hợp Chatbot Vào Web Của Bạn Với Amazon Lex

Với việc sử dụng linh hoạt giữa các dịch vụ AWS. Tôi có sử dụng thêm một số dịch vụ khác vừa đảm bảo về chí phí phát triển, cũng như tiết kiệm chí phí vận hành:

AWS Amplify
AWS Cognito
AWS AppSync

aws_amazon_lex-2

Follows

  • Ứng dụng Web Interface Client được xây dựng, sử dụng AWS Amplify.

  • Authenticate/Authorization được thực hiện thông qua AWS Cognito.

  • Client sẽ sử dụng giao diện FontEnd Chat Server được tích hợp trên Web interface, FontEnd Chat Server đóng vai trò trung gian để chuyển tiếp các request/response giữa Client và Amazon Lex.

  • Khi có request text từ phía Client, FontEnd Chat Server sẽ gửi các request text tới Amazon lex, qua đó Chat bot sẽ phân tích các ý định chứa trong request Text mà User đã gửi đến

  • Amazon Lex xác định các lambda function để thực hiện khởi tạo và xác thực, thực hiện hoặc cả hai trong cấu hình Intent của Amazon Lex.

  • AWS Lambda fulfillment các Intent(Appointment Scheduling, Payment Menthod, Send SMS) của Amazon Lex, AWS Lambda sẽ gửi lại các phản hồi tương ứng cho Amazon Lex.

  • Amazon Lex sẽ gửi lại các phản hồi cho FontEnd Chat Server, FontEnd Chat Server sẽ hiện thị thông tin cho Client.

  • S3/Cloudfront được sử dụng cho hệ thống KH trong việc phân phối nội dung cho Amazon Lex.

Runnig cost:

Để tính chi phí khi kết hợp Amazon lex với một số dịch vụ của aws, thì chúng ta cùng xem qua ví dụ dưới đây:
Ví dụ:
Khách hành có 200 của hàng Salons tóc, mỗi ngày sẽ có 100 người dùng cần tư vấn và đặt lịch. Trung bình mỗi người sẽ gửi 15 yêu cầu text.
Tatol running cost per day:
$225 Amazon Lex + $1.93 AWS Lambda + $0.4 SNS ~ $227.33

aws_pring-1

Tài liệu tham khảo
AWS Calculator

Chúng ta cùng quay lại với giải pháp sử dụng Google DialogFolow
Khi sử dụng Google DialogFolow, Google cung cấp hai phiên bản là Dialogflow ES Edition, Dialogflow CX Edition

Già thành:
ES Agent: $0.002 per request Text
CX Agent: $0.007 per request Text

Chúng ta sẽ lựa chọn phiên bản ES Agent:
Cũng một vấn đề ở ví dụ trên , giá DialogFolow ES trong một ngày:
200 cửa hàng * 100 người * 15 request text * $0.002/per request text = $600

Tài liệu tham khảo
Dialogflow pricing

Chỉ mới tính về giá thành cho chatbot(Google DialogFolow ES) đã thấy chi phí phát triển với nó là rất lớn, chưa kể chúng ta còn phải cấu hình thêm các dịch vụ khác

Cuối cùng, Amazon lex là sự lựa chọn tôi sẽ cung cấp cho khách hàng để giải quyết các vấn đề khách hàng đang đưa ra.

Conclusion

Với việc kết hợp Amazon Lex với một số dịch vụ AWS ( AWS Amplify, AWS Cognito, AWS AppSync,...) sẽ giúp bạn dễ dàng tạo các bot và tích hợp chúng vào trong web site của bạn, vừa đảm bảo được các yêu cầu đặt ra, tốn ít phí phát triển, dễ dàng mở rộng.

Demo

Doing

Tags

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.