自然語言處理 (NLP) 讓您能夠從自家企業所收到的訊息中,解讀並擷取有意義的資訊(日期、時間等)。之後,您便可使用這些資訊來確定意圖,以實現對話所需的訊息傳遞體驗。
使用 Meta 的內置 NLP 可減少計入訊息功能傳輸率限制次數的 API 呼叫。
把訊息傳送至您的企業前,Meta 的內置 NLP 首先會剖析訊息以幫助偵測含義,並使用來自 Meta 的 Wit.ai 及指示剖析程式正確概率的信賴指數來擷取資訊。隨後,系統會照常把訊息連同在訊息中偵測到的任何有意義資訊、實體和特質,一併轉發給您的企業。例如,如果一則訊息包含「hello, tomorrow at 2pm」之類的短句,您會收到包含問候語的特質,以及包含實際時戳的實體。
內置 NLP 會自動啟用語言識別功能,而且日期和時間會根據用戶個人檔案中的地區設定自動本地化。
Wit.ai 是剖析用戶訊息並從中建立實體的應用程式。您可以將預設 Wit.ai 用於支援的語言,或者為您想要支援的每種語言自行建立 Wit.ai 應用程式。Messenger 平台收到訊息後,會首先找出偵測到的最主要語言,然後使用關聯的 Wit.ai 應用程式來擷取實體。如果沒有與所偵測最主要語言關聯的 Wit.ai 應用程式,則系統會使用預設語言模式。
請參閱 Wit.ai 文件,進一步了解 Wit.ai 應用程式及如何建立和測試您建立的自訂 Wit.ai 應用程式 ,以及受支援語言清單 。
我們提供 2 種方式讓您在商家專頁新增 NLP:使用 Meta 應用程式管理中心或採用編程方式。
如要使用應用程式管理中心 來新增內置 NLP,請在產品下方前往 Messenger > 設定,然後向下捲動至內置 NLP 部分。從下拉式選單中選取 Facebook 專頁,並把開關切換至開啟。然後,選取語言模型,其中包含新增多種語言的選項。進階設定讓您能夠選擇 NLP 版本及詳細標記,以獲取有關實體的更多資訊,以及您想要接收的每個意圖和特質的 n-best 值。此設定還會確定系統傳回的已偵測本地語言數量。
根據您專頁收件匣中過往對話而建立的隨機範例會經過彙整,並顯示在新建的 Wit 應用程式中。這些範例可立即在 Wit.ai 應用程式中用於標註。
如要透過編程方式新增 NLP,您需要具備下列項目:
MESSAGING
任務的用戶所要求pages_messaging
和 pages_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
。
內置 NLP 啟用後,訊息 Webhook 現在包含兩個 NLP 欄位:nlp
和 nlpv2
。nlp
欄位是舊欄位,使用已停用的命名規則來顯示實體和特質名稱。nlpv2
欄位使用簡化版的實體和特質名稱,詳情如下所示。
nlp
欄位將於 2024 年 6 月 18 日移除。
如果已啟用內置 NLP,則相關的 NLP 實體和特質將包含在每項訊息物件的 message
Webhooks 通知中。
根據預設,Messenger 平台會傳回下列實體。
資訊 | 實體 |
---|---|
金額 |
|
日期/時間 |
|
距離 |
|
時間長度 |
|
電郵地址 |
|
地點 |
|
手機號碼 |
|
數量 |
|
溫度 |
|
網址 |
|
體積 |
|
根據預設,Messenger 平台會傳回下列特質。
資訊 | 特質 |
---|---|
Bye(僅限英文) |
|
Greetings(僅限英文) |
|
觀感 |
|
Thanks(僅限英文) |
|
請參閱我們的 Wit.ia 文件 ,進一步了解可用實體和特質等資訊。
在以下範例中,訊息包含短句「see you tomorrow at 4pm」,並會在系統執行剖析後加入 datetime
和 sentiment
實體:
{...,
"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
}
]
}
在您的 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
}
}