Xử lý ngôn ngữ tự nhiên cho Nền tảng Messenger

Với tính năng Xử lý ngôn ngữ tự nhiên (NLP), bạn có thể hiểu được và trích xuất thông tin có ý nghĩa (ngày, giờ và nhiều thông tin khác) từ những tin nhắn mà doanh nghiệp của bạn nhận được. Bạn có thể dùng thông tin này để xác định ý định triển khai trải nghiệm nhắn tin cần thiết cho cuộc trò chuyện.

Việc sử dụng NLP tích hợp của Meta sẽ góp phần giảm số lệnh gọi API tính theo giới hạn tốc độ nhắn tin.

Cách thức hoạt động

Trước khi doanh nghiệp của bạn nhận được một tin nhắn, trước tiên, NLP tích hợp của Meta sẽ phân tích cú pháp tin nhắn để phát hiện ý nghĩa và trích xuất thông tin bằng Wit.ai từ Meta cũng như mức độ tin cậy cho biết xác suất chính xác của trình phân tích cú pháp. Sau đó, tin nhắn này sẽ được chuyển đến doanh nghiệp của bạn như bình thường cùng với mọi thông tin có ý nghĩa, các thực thểđặc điểm được phát hiện trong tin nhắn. Ví dụ: nếu tin nhắn chứa cụm từ như "hello, tomorrow at 2pm" (xin chào, 14h ngày mai nhé) thì bạn sẽ nhận được một đặc điểm bao gồm lời chào và một thực thể bao gồm nhãn thời gian thực tế.

NLP tích hợp sẽ tự động bật ID ngôn ngữ, cũng như tự động bản địa hóa ngày và giờ dựa theo ngôn ngữ trên trang cá nhân của người dùng.

Wit.ai

Wit.ai là ứng dụng phân tích cú pháp tin nhắn và tạo các thực thể từ tin nhắn của một người. Bạn có thể dùng Wit.ai mặc định cho các ngôn ngữ được hỗ trợ hoặc tạo ứng dụng Wit.ai riêng cho từng ngôn ngữ bạn muốn hỗ trợ. Khi nhận được tin nhắn, trước tiên, Nền tảng Messenger sẽ tìm ngôn ngữ được phát hiện nhiều nhất rồi dùng ứng dụng Wit.ai được liên kết để trích xuất các thực thể. Nếu không có ứng dụng Wit.ai nào liên kết với ngôn ngữ được phát hiện nhiều nhất đó, mô hình ngôn ngữ mặc định sẽ được sử dụng.

Hãy truy cập tài liệu về Wit.ai của chúng tôi để biết thêm thông tin liên quan đến ứng dụng Wit.ai, cách tạo và thử nghiệm ứng dụng Wit.ai tùy chỉnh của riêng bạn cũng như danh sách các ngôn ngữ được hỗ trợ .

Thêm NLP vào Trang

Bạn có thể thêm NLP vào Trang kinh doanh của mình theo 2 cách: thông qua Bảng điều khiển ứng dụng trên Meta hoặc theo cách lập trình.

Bảng điều khiển ứng dụng

Để thêm NLP tích hợp thông qua Bảng điều khiển ứng dụng , trong mục Sản phẩm, bạn cần chuyển đến Messenger > Cài đặt rồi cuộn xuống phần NLP tích hợp. Chọn Trang Facebook trong menu thả xuống rồi gạt nút chuyển sang vị trí BẬT. Sau đó chọn Mô hình ngôn ngữ cho phép bạn thêm nhiều ngôn ngữ. Trong phần Cài đặt nâng cao, bạn có thể chọn phiên bản NLP, cờ chi tiết để xem thêm thông tin về các thực thể, cũng như n giá trị tốt nhất cho từng ý định và đặc điểm mà bạn muốn nhận được. Cài đặt này cũng xác định số lượng ngôn ngữ được phát hiện mà hệ thống sẽ trả về.

Hệ thống sẽ tổng hợp các mẫu ngẫu nhiên từ những cuộc trò chuyện trước đây trong hộp thư trên Trang rồi hiển thị trong ứng dụng Wit mới tạo. Bạn có thể gắn thẻ ngay các mẫu này trong ứng dụng Wit.ai của mình.

Theo cách lập trình

Để thêm NLP theo cách lập trình, bạn sẽ cần có:

  • Mã truy cập Trang do một người có thể thực hiện tác vụ MESSAGING trên Trang đó yêu cầu
  • ID Trang
  • Quyền pages_messagingpages_manage_metadata

Gửi yêu cầu POST đến điểm cuối /PAGE-ID/nlp_configs, đồng thời đặt thông số nlp_enabledtrue để bật NLP cho Trang. Bạn cũng có thể thêm thông số model để đặt ngôn ngữ khác ngoài ngôn ngữ mặc định là tiếng Anh.

Hãy xem tài liệu tham khảo về NLP cho Trang để biết thêm thông tin.

Yêu cầu mẫu

Được định dạng để dễ đọc.
curl -i -X POST "https://graph.facebook.com/LATEST-GRAPH-API-VERSION/me/nlp_configs
      ?nlp_enabled=true
      &model=PORTUGUESE 
      &access_token=PAGE-ACCESS-TOKEN"

Bạn có thể sử dụng thông số custom_token để dùng ứng dụng Wit.ai tùy chỉnh của mình và cập nhật các thông số NLP cùng với yêu cầu POST. Nếu bạn muốn vô hiệu hóa NLP, hãy gửi yêu cầu POST, đồng thời đặt thông số nlp_enabledfalse.

Thông báo webhook

Nếu bạn bật NLP tích hợp, các thực thể và đặc điểm NLP thích hợp sẽ có trong thông báo webhook message cho từng đối tượng tin nhắn.

Thực thể và đặc điểm

Theo mặc định, Nền tảng Messenger sẽ trả về các thực thể sau đây.

Thông tinThực thể

Số tiền

wit$amount_of_money:amount_of_money

Ngày/giờ

wit$datetime:$datetime

Khoảng cách

wit$distance:distance

Khoảng thời gian

wit$duration:duration

Địa chỉ email

wit$email:email

Vị trí

wit$location:location

Số điện thoại

wit$phone_number:phone_number

Số lượng

wit$quantity:quantity

Nhiệt độ

wit$temperature:temperature

URL

wit$url:url

Khối lượng

wit$volume:volume

Đặc điểm tích hợp

Theo mặc định, Nền tảng Messenger sẽ trả về các đặc điểm sau đây.

Thông tinĐặc điểm

Lời tạm biệt (chỉ tiếng Anh)

wit$bye

Lời chào (chỉ tiếng Anh)

wit$greetings

Cảm nghĩ

wit$sentiment

Lời cảm ơn (chỉ tiếng Anh)

wit$thanks

Hãy truy cập tài liệu về Wit.ai của chúng tôi để tìm hiểu thêm về các thực thể, đặc điểm và nhiều thông tin có sẵn khác.

Thông báo mẫu

Dưới đây là ví dụ minh họa một tin nhắn chứa cụm từ "see you tomorrow at 4pm" (hẹn gặp bạn lúc 16h ngày mai nhé), đồng thời sẽ bao gồm các thực thể wit$datetimewit$sentiment sau khi phân tích cú pháp:

{...,
  "entities": {
    "wit$datetime:datetime": [
      {
        "id": "340464963587159",
        "name": "wit$datetime",
        "role": "datetime",
        "start": 8,
        "end": 23,
        "body": "tomorrow at 4pm",
        "confidence": 0.9704,
        "entities": [],
        "type": "value",
        "grain": "hour",
        "value": "2020-06-16T16:00:00.000-07:00",
        "values": [
          {
            "type": "value",
            "grain": "hour",
            "value": "2020-06-16T16:00:00.000-07:00"
          }
        ]
      }
    ]
  },
  "traits": {
    "wit$sentiment": [
      {
        "id": "5ac2b50a-44e4-466e-9d49-bad6bd40092c",
        "value": "neutral",
        "confidence": 0.6162
      }
    ]
  }

Phân tích cú pháp tin nhắn NLP

Trong Webhooks messages, bạn có thể trả lời một tin nhắn bằng cách tận dụng NLP mặc định. Ví dụ: nếu có hàm handleMessage() để trả lời từng tin nhắn nhận được, bạn có thể sử dụng thực thể greetings để gửi một tin trả lời thích hợp:

function firstTrait(nlp, name) {
  return nlp && nlp.entities && nlp.traits[name] && nlp.traits[name][0];
}

function handleMessage(message) {
  // check greeting is here and is confident
  const greeting = firstTrait(message.nlp, 'wit$greetings');
  if (greeting && greeting.confidence > 0.8) {
    sendResponse('Hi there!');
  } else { 
    // default logic
  }
}