自然語言處理(NLP)可讓您瞭解商家收到的訊息,並從中擷取有意義的資訊(日期、時間等)。您可以利用此資訊來識別意圖,以實作對話所需的訊息體驗。
使用 Meta 的內建 NLP 可減少計入訊息速率限制的 API 呼叫。
在訊息送達商家之前,Meta 的內建 NLP 會先使用來自 Meta 的 Wit.ai 以及指出剖析器正確概率的信賴水準來剖析訊息,以幫助偵測含義並擷取資訊。然後訊息會像往常一樣轉送給商家,並且會伴隨在訊息中偵測到之任何有意義的資訊、實體和特徵一起傳送。例如,如果訊息中包含「你好,明天下午 2 點」之類的短句,則您會取得包含問候語的特徵和包含實際時間戳記的實體。
內建 NLP 會自動啟用語言識別功能,而且日期和時間會根據用戶個人檔案中的語言設定自動本地化。
Wit.ai 是一款應用程式,可剖析訊息並從用戶的訊息建立實體。您可以使用所支援語言適用的預設 Wit.ai,也可以針對您想要支援的每一種語言建立自己的 Wit.ai 應用程式。當 Messenger 開放平台收到訊息時,會先尋找最常偵測到的語言,並使用相關聯的 Wit.ai 應用程式來擷取實體。如果沒有已連結最常偵測語言的 Wit.ai 應用程式,則會使用預設語言模型。
請參閱我們的 Wit.ai 文件,進一步瞭解 Wit.ai 應用程式以及如何建立和測試您自己的自訂 Wit.ai 應用程式 ,並查看支援的語言 清單。
有兩種方法可以將 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
欄位使用簡化的實體和特徵名稱,如下所示。
我們將於 2024 年 6 月 18 日移除 nlp
欄位。
如果啟用內建 NLP,則每個訊息物件的 message
Webhooks 通知中將會包含相關的 NLP 實體和特徵。
Messenger 開放平台預設會傳回下列實體。
資訊 | 實體 |
---|---|
金額 |
|
日期/時間 |
|
距離 |
|
時間長度 |
|
電子郵件地址 |
|
地點 |
|
電話號碼 |
|
數量 |
|
溫度 |
|
網址 |
|
容積 |
|
Messenger 開放平台預設會傳回下列特徵。
資訊 | 特徵 |
---|---|
再見(僅限英文) |
|
問候語(僅限英文) |
|
觀感 |
|
謝謝(僅限英文) |
|
請參閱我們的 Wit.ia 文件 ,進一步瞭解可用的實體、特徵等等。
以下範例為包含短句「明天下午 4 點見」的訊息,且在剖析後會包含 wit$datetime
和 wit$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
}
}