Contents
Chatbot là gì ?
Là một phần mềm máy tính giúp tương tác / nói chuyện với client TỰ ĐỘNG, 24/7.
Chatbot là phần mềm được kết nối với app, web NodeJS,… , giúp người dùng có thể có những thông tin họ muốn.
Chatbot là một công cụ có thể giao tiếp, tương tác với con người thông qua trí tuệ nhân tạo(AI) đã được lập trình sẵn. Trong hầu hết các trường hợp thì chatbot được sử dụng qua ứng dụng nhắn tin để nói chuyện với con người.
Chatbot có thể sử dụng như một công cụ hiệu quả giúp cho việc chăm sóc khách hàng được thực hiện tự động 24/7. Trên thực tế, chatbot nhanh hơn con người trong việc đưa ra câu trả lời. Hơn nữa, với chatbot các doanh nghiệp sẽ không cần thuê nhân viên để chăm sóc khách hàng. Điều này giúp cho chi phí marketing của doanh nghiệp được giảm xuống.
Những điều cần biết về chatbot
Đầu tiên chúng nên cấu hình(config) chatbot trên AWS trước khi code bất kì thứ gì . Quá trình cấu hình sẽ thực hiện như sau:
- Xác định ý định để thực hiện logic phù hợp.
- Cung cấp các cách nói mẫu để làm cho chatbot thông minh hơn.
- Xác định bất kỳ thông tin được truyền vào từ client
Nếu bạn có kinh nghiệm sử dụng Alexa, một số thuật ngữ trên có thể bạn đã biết. Bất kể bạn đã làm gì với AWS Lex
Tạo chatbox đầu tiên
Trước khi config chatbot của mình, chúng tôi cần tạo nó. Từ trang AWS Lex , chọn custom bot để tạo chatbot NodeJS.

Khi tạo chatbot NodeJS, hãy đặt tên cho nó, và chờ một tí.
Thiết lập những thông tin
Chúng ta cần điền những thông tin cần thiết vào chatbot mới được tạo

Tạo ra dòng cơ bản nhất là hỏi người tạo ra. Ở đây mình đặt tên cho nó là AboutIntent . Trong AboutIntent , chúng ta sẽ cần xác định một số cách nói mẫu, còn được gọi là cụm từ mẫu. Những cụm từ này là những câu có thể mà client có thể sử dụng khi tương tác với chatbot.
Ví dụ như sau
give me information about this bot
who made this bot
Bạn có thể nghĩ ra hết những câu dạng như thế, rất rất nhiều. AWS Lex rất thông minh và thực sự có thể học hỏi từ những câu mẫu của bạn. Điều này có nghĩa là bạn càng có nhiều câu mẫu, AWS Lex càng có thể điền vào chỗ trống nếu người dùng cung cấp những câu hỏi tương tự, những câu hỏi không có trong danh sách
Vì chưa kết nối AWS Lambda , ở đây chúng ta chọn Return parameters to client trước khi lưu. Điều này về cơ bản sẽ cho chúng ta thấy ý định nào đã được chọn, nhưng thực tế không thực hiện bất kỳ logic nào.
Tạo thêm bot cho ý định khác
Chúng ta hãy xem một ví dụ khác về ý định.
Lần này đặt tên là FullNameIntent . Tên không quan trọng, miễn sao bạn dễ nhớ để có thể sử dụng ở AWS Lambda .

Tạo ra nhiều để dễ dàng biết những điều client gửi tới
Đây chỉ là một ví dụ đơn giản, nhưng chúng ta sẽ cho phép người dùng cung cấp tên đầy đủ của họ. Tất nhiên tên đầy đủ này sẽ khác nhau trên cơ sở mỗi người dùng. Vì vậy, hãy đặt tên cho nó và sau đó chọn AMAZON.Person làm loại. Tên không thực sự quan trọng miễn là bạn nhất quán
Sau đó, trong các cách nói mẫu của bạn, bao gồm các vị trí trong cách nói của bạn. Xác định một từ là một biến vị trí so với một từ thông thường có thể được xử lý bằng cách sử dụng dấu ngoặc nhọn.
Bây giờ chúng ta có hai ý định khác nhau, chúng ta có thể tập trung vào một số logic thực tế.
Phát triển Logic Chatbot với AWS Lambda và NodeJS
Khi nói đến việc xác định logic chatbot, không có gì nhiều cho nó. Chúng ta sẽ tạo ra một hàm AWS Lambda nhận dữ liệu JSON làm đầu vào. Đầu vào JSON đó sẽ chứa thông tin như mục đích đã được kích hoạt, mọi dữ liệu vị trí có sẵn, v.v. và như một phản hồi chúng ta sẽ cung cấp dữ liệu JSON đáp ứng đặc tả AWS Lex . Những gì xảy ra ở giữa là tùy thuộc vào chúng ta.
Tạo hàm để nhận request
Hãy bắt đầu bằng cách tạo một ứng dụng NodeJS đơn giản . Tạo và mở tệp index.js trên máy tính của bạn:
const dispatcher = (event) => {
let response = {
sessionAttributes: event.sessionAttributes,
dialogAction: {
type: "Close",
fulfillmentState: "",
message: {
"contentType": "PlainText",
"content": ""
}
}
};
switch(event.currentIntent.name) {
default:
response.dialogAction.fulfillmentState = "Failed";
response.dialogAction.message.content = "I don't know what you're asking...";
break;
}
return response;
}
exports.handler = (event, context) => {
return dispatcher(event);
}
Đoạn code trên là điểm khởi đầu của chúng ta. Khi chức năng được thực thi, chức năngdispatche
r sẽ được sử dụng. Các event
tham số sẽ chứa các dữ liệu yêu cầu rằng AWS Lex cung cấp. Nó sẽ trông giống như thế này:
{
"messageVersion": "1.0",
"invocationSource": "NicTest",
"userId": "Nic",
"sessionAttributes": {},
"bot": {
"name": "LexTest",
"alias": "$LATEST",
"version": "$LATEST"
},
"outputDialogMode": "Text",
"currentIntent": {
"name": "AboutIntent",
"slots": {},
"confirmationStatus": "None"
}
}
Tất nhiên yêu cầu trên chỉ là một ví dụ, nhưng định dạng mới là vấn đề. Các JSON sẽ bao gồm tên ý và bất kỳ thông tin. Bên trong chức năng dispatcher
, chúng tôi bắt đầu định dạng response trả về Response được hoàn thành sau khi đủ điều kiện của switch. Chúng tôi muốn tìm hiểu ý định được gửi trước khi trả lời.
Cải tiến hơn
Để làm cho code của chúng ta có nhiều chức năng hơn, chúng ta có thể thêm các chức năng dispatcher
sau vào chức năng của chúng ta :
const dispatcher = (event) => {
let response = {
sessionAttributes: event.sessionAttributes,
dialogAction: {
type: "Close",
fulfillmentState: "",
message: {
"contentType": "PlainText",
"content": ""
}
}
};
switch(event.currentIntent.name) {
case "AboutIntent":
response.dialogAction.fulfillmentState = "Fulfilled";
response.dialogAction.message.content = "Created by hocweb";
break;
case "FullNameIntent":
response.dialogAction.fulfillmentState = "Fulfilled";
response.dialogAction.message.content = "Hello " + event.currentIntent.slots.FullName + "!";
break;
default:
response.dialogAction.fulfillmentState = "Failed";
response.dialogAction.message.content = "I don't know what you're asking...";
break;
}
return response;
}
Lưu ý rằng bây giờ chúng tôi đang kiểm tra AboutIntent
cũng như FullNameIntent
.
Bây giờ, file index.js của chúng ta đã hoàn tất cho ví dụ cụ thể này, nó có thể được thêm vào AWS Lambda . Chọn để tạo một hàm AWS Lambda mới với Node.js . Nó không thực sự quan trọng với những gì bạn gọi nó, nhưng sau khi bạn tạo hàm, hãy thêm dòng code Nodejs.
Với code được thêm vào, bạn có thể quay lại AWS Lex và thay đổi tùy chọn Fulfillment của từng mục đích thành chức năng AWS Lambda . Chọn chức năng Lambda bạn muốn sử dụng
Lưu từng ý định của bạn, sau đó xây dựng chatbot . Bạn sẽ có thể kiểm tra từng ý định của mình để xem liệu chúng có hoạt động như mong đợi hay không.
Kết luận
Bạn vừa thấy cách xây dựng một chatbot đơn giản bằng AWS Lex , AWS Lambda NodeJS đơn giản mà không cần kết nối chatbot này với bất kỳ dịch vụ nào như Slack hoặc Twitter !
Hãy tham khảo thêm về NodeJS : Crawl dữ liệu website bằng NodeJS với Scotch và Express

Bài viết này được sưu tầm và tổng hợp từ nhiều nguồn trên Internet.
Nếu có gì không hiểu thì inbox messenger bên dưới mình hỗ trợ thêm nhé.