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/v21.0/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 啟用後,訊息 Webhook 現在包含兩個 NLP 欄位:nlpnlpv2nlp 欄位是舊欄位,使用已停用的命名規則來顯示實體和特質名稱。nlpv2 欄位使用簡化版的實體和特質名稱,詳情如下所示。

nlp 欄位將於 2024 年 6 月 18 日移除。

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

實體和特質

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

資訊實體

金額

amount_of_money

日期/時間

datetime

距離

distance

時間長度

duration

電郵地址

email

地點

location

手機號碼

phone_number

數量

quantity

溫度

temperature

網址

url

體積

volume

內置特質

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

資訊特質

Bye(僅限英文)

bye

Greetings(僅限英文)

greetings

觀感

sentiment

Thanks(僅限英文)

thanks

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

範例通知

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

{...,
  "entities": {
    "datetime:datetime": [
      {
        "id": "340464963587159",
        "name": "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": {
    "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, 'greetings');
  if (greeting && greeting.confidence > 0.8) {
    sendResponse('Hi there!');
  } else { 
    // default logic
  }
}