Messenger 平台自然語言處理

自然語言處理 (NLP) 讓您能夠從自家企業所收到的訊息中,解讀並擷取有意義的資訊(日期、時間等)。之後,您便可使用這些資訊來確定意圖,以實現對話所需的訊息傳遞體驗。

使用 Meta 的內置 NLP 可減少計入訊息功能傳輸率限制次數的 API 呼叫。

運作方式

把訊息傳送至您的企業前,Meta 的內置 NLP 首先會剖析訊息以幫助偵測含義,並使用來自 Meta 的 Wit.ai 及指示剖析程式正確概率的信賴指數來擷取資訊。隨後,系統會照常把訊息連同在訊息中偵測到的任何有意義資訊、實體特質,一併轉發給您的企業。例如,如果一則訊息包含「hello, tomorrow at 2pm」之類的短句,您會收到包含問候語的特質,以及包含實際時戳的實體。

內置 NLP 會自動啟用語言識別功能,而且日期和時間會根據用戶個人檔案中的地區設定自動本地化。

Wit.ai

Wit.ai 是剖析用戶訊息並從中建立實體的應用程式。您可以將預設 Wit.ai 用於支援的語言,或者為您想要支援的每種語言自行建立 Wit.ai 應用程式。Messenger 平台收到訊息後,會首先找出偵測到的最主要語言,然後使用關聯的 Wit.ai 應用程式來擷取實體。如果沒有與所偵測最主要語言關聯的 Wit.ai 應用程式,則系統會使用預設語言模式。

請參閱 Wit.ai 文件,進一步了解 Wit.ai 應用程式及如何建立和測試您建立的自訂 Wit.ai 應用程式 ,以及受支援語言清單

在您的專頁新增 NLP

我們提供 2 種方式讓您在商家專頁新增 NLP:使用 Meta 應用程式管理中心或採用編程方式。

應用程式管理中心

如要使用應用程式管理中心 來新增內置 NLP,請在產品下方前往 Messenger > 設定,然後向下捲動至內置 NLP 部分。從下拉式選單中選取 Facebook 專頁,並把開關切換至開啟。然後,選取語言模型,其中包含新增多種語言的選項。進階設定讓您能夠選擇 NLP 版本及詳細標記,以獲取有關實體的更多資訊,以及您想要接收的每個意圖和特質的 n-best 值。此設定還會確定系統傳回的已偵測本地語言數量。

根據您專頁收件匣中過往對話而建立的隨機範例會經過彙整,並顯示在新建的 Wit 應用程式中。這些範例可立即在 Wit.ai 應用程式中用於標註。

編程方式

如要透過編程方式新增 NLP,您需要具備下列項目:

  • 專頁存取憑證,由可以在專頁上執行 MESSAGING 任務的用戶所要求
  • 專頁編號
  • pages_messagingpages_manage_metadata 權限

傳送 POST 要求至 /PAGE-ID/nlp_configs 端點,並將 nlp_enabled 參數設定為 true,從而為專頁啟用 NLP。您還可以加入 model 參數,以設定除預設語言(英文)以外的語言。

請參閱專頁 NLP 參考資料 ,了解更多資訊。

要求範例

我們已設定特定格式以便閱讀。
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"

您可運用 custom_token 參數,以使用自訂 Wit.ai 應用程式,並透過 POST 要求更新 NLP 參數。如要停用 NLP,請傳送 POST 要求,並將 nlp_enabled 參數設定為 false

Webhook 通知

如果已啟用內置 NLP,則相關的 NLP 實體和特質將包含在每項訊息物件的 message Webhooks 通知中。

實體和特質

根據預設,Messenger 平台會傳回下列實體。

資訊實體

金額

wit$amount_of_money:amount_of_money

日期/時間

wit$datetime:$datetime

距離

wit$distance:distance

時間長度

wit$duration:duration

電郵地址

wit$email:email

地點

wit$location:location

手機號碼

wit$phone_number:phone_number

數量

wit$quantity:quantity

溫度

wit$temperature:temperature

網址

wit$url:url

體積

wit$volume:volume

內置特質

根據預設,Messenger 平台會傳回下列特質。

資訊特質

Bye(僅限英文)

wit$bye

Greetings(僅限英文)

wit$greetings

感受

wit$sentiment

Thanks(僅限英文)

wit$thanks

請參閱我們的 Wit.ia 文件 ,進一步了解可用實體和特質等資訊。

通知範例

在以下範例中,訊息包含短句「see you tomorrow at 4pm」,並會在系統執行剖析後加入 wit$datetimewit$sentiment 實體:

{...,
  "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
      }
    ]
  }

剖析 NLP 訊息

在您的 messages Webhooks 中,您可善用預設 NLP 來回覆訊息。舉例來說,如果您擁有的 handleMessage() 函式會回覆收到的每一則訊息,您便可使用 greetings 實體來傳送適當回應:

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
  }
}