我正在创建一个聊天机器人来管理客户支持。我有一个流程叫做“产品问题”。它应该检测所涉及的产品类型,并重定向到特定于该类型的另一个流。这里的想法是使更小的流量更容易管理。
对于每个请求,我需要三个元素:产品类型、品牌和问题描述。在最初的要求中,很多客户会使用品牌名称。在大多数情况下,品牌也将决定产品的类型。
例如,假设我创建了三个实体:汽车(“Volvo”和“Bentley”)、电视(“Sony”、“Panasonic”)和产品类型(“car”、“television”)。如果最初的请求是“我的沃尔沃有问题”,我知道这个品牌,但我也知道产品类型。已检测到品牌,但未检测到产品类型。
我创建了一个webhook来管理它。我没有错误,但产品类型参数未设置。
- webhook**
exports.mapBrandToProductType = (req,res) => {
const brand = req.body.sessionInfo.parameters.brand;
const fullUrl = req.body.sessionInfo.session + "/contexts/product-type-context";
let productType;
if (brand === "Volvo" || brand === "Bentley") {
productType = "car";
} else if (brand === "Sony" || brand === "Panasonic") {
productType = "television"
}
const response = {
fulfillment_response: {
messages: [
{
text: {
text: ["product is a " + productType],
}
}
],
outputContexts: [
{
name: fullUrl,
lifespan_count: 60,
parameters: {
"product-type": productType
}
}
]
}
};
res.status(200).send(response)
}
我有一个页面"问题信息",其中的产品类型是必需的,使重定向到另一个流。我在fulfillment中添加了webhook。
当我测试聊天机器人时,我看到一个文本,显示product-type
是我的js代码。但参数仍然缺失。
1条答案
按热度按时间hgqdbh6s1#
product-type参数缺失的可能原因是您的webhook代码出错。使用
outputContexts
设置参数是Dialogflow ESwebhook的一部分。为了使其工作,使用SessionInfo参数更改webhook响应对象。以下是webhook文档中的example code: