自然语言处理 (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 应用 ,以及受支持语言列表 。
可便于您向企业公共主页添加 NLP 的方法分为两种:使用 Meta 应用面板或采用编程方式。
如要使用应用面板添加内置 NLP,请在产品下方前往 Messenger > 设置,然后向下滚动至内置 NLP 部分。从下拉菜单中选择 Facebook 公共主页,并把开关切换至开启。然后,选择语言模型,其中包含新增多种语言的选项。高级设置可便于您选择 NLP 版本、用于获取更多实体相关信息的详细标记,以及您想要接收的每个意图和特征的 n-best 值。此设置还会确定系统传回的已检测到的语言数量。
系统会编译您公共主页收件箱中过往对话的随机示例,并将其显示在新建的 Wit 应用中。您可立即在 Wit.ai 应用中标记示例。
如要以编程方式添加 NLP,您需要具备下列项目:
MESSAGING
任务的用户处获取的公共主页访问口令pages_messaging
和 pages_manage_metadata
权限 向 /PAGE-ID/nlp_configs
端点发送 POST
请求,并将 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
。
如果已启用内置 NLP,则相关 NLP 实体和特征将包含在各消息对象的 message
Webhooks 通知中。
默认情况下,Messenger 开放平台会返回下列实体。
信息 | 实体 |
---|---|
金额 |
|
日期/时间 |
|
距离 |
|
时长 |
|
邮箱 |
|
地点 |
|
手机号 |
|
数量 |
|
温度 |
|
网址 |
|
体积 |
|
默认情况下,Messenger 开放平台会返回下列特征。
信息 | 特征 |
---|---|
Bye(仅限英文) |
|
Greetings(仅限英文) |
|
感受 |
|
Thanks(仅限英文) |
|
请参阅我们的 Wit.ia 文档 ,进一步了解可用实体和特征等信息。
在以下示例中,信息包含短句“see you tomorrow at 4pm”,并会在系统执行解析后加入 wit$datetime
和 wit$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
}
]
}
在您的 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
}
}