dialogflow v2 在实现中提取参数
dialogflow v2 extracting parameters in fullfillment
我在 facebook messenger 上使用我的对话流并传递一个参数。我能够提取它但不确定为什么它不是字符串。
代码如下所示
function botHandler(agent) {
console.log("inside bot handler request body is:" +
JSON.stringify(request.body.queryResult.parameters));
const adParams = request.body.queryResult.parameters;
let state = adParams.stateName;
state = state.toString().toUperCase()
它抛出的错误是
TypeError: state.toString(...).toUperCase is not a function
at botHandler (/srv/index.js:52:30)
at WebhookClient.handleRequest (/srv/node_modules/dialogflow-fulfillment/src/dialogflow-fulfillment.js:303:44)
at exports.dialogflowFirebaseFulfillment.functions.https.onRequest (/srv/index.js:114:9)
at cloudFunction (/srv/node_modules/firebase-functions/lib/providers/https.js:57:9)
at /worker/worker.js:783:7
at /worker/worker.js:766:11
at _combinedTickCallback (internal/process/next_tick.js:132:7)
at process._tickDomainCallback (internal/process/next_tick.js:219:9)
值存在但不确定为什么 toString 失败
我建议在您的实现中提取这样的参数:
function botHandler(agent) {
let state = agent.parameters["stateName"];
let uState = state.toUpperCase();
let answer = "So you live in " + uState + "?";
agent.add(answer);
}
您可以通过这种方式检查参数是否存在:
if (agent.parameters["stateName"]) {
//do stuff here
}
希望对您有所帮助!
toString()
没有失败(虽然它可能是不必要的,因为它可能已经是一个字符串)。
您的方法 toUpercase()
失败,因为您在 "uppercase" 中有错字。它应该有两个 "p",而不是一个。 toUppercase()
.
就是说,正如 Mathais 指出的那样,您应该确保首先拥有 stateName
参数。
我在 facebook messenger 上使用我的对话流并传递一个参数。我能够提取它但不确定为什么它不是字符串。
代码如下所示
function botHandler(agent) {
console.log("inside bot handler request body is:" +
JSON.stringify(request.body.queryResult.parameters));
const adParams = request.body.queryResult.parameters;
let state = adParams.stateName;
state = state.toString().toUperCase()
它抛出的错误是
TypeError: state.toString(...).toUperCase is not a function
at botHandler (/srv/index.js:52:30)
at WebhookClient.handleRequest (/srv/node_modules/dialogflow-fulfillment/src/dialogflow-fulfillment.js:303:44)
at exports.dialogflowFirebaseFulfillment.functions.https.onRequest (/srv/index.js:114:9)
at cloudFunction (/srv/node_modules/firebase-functions/lib/providers/https.js:57:9)
at /worker/worker.js:783:7
at /worker/worker.js:766:11
at _combinedTickCallback (internal/process/next_tick.js:132:7)
at process._tickDomainCallback (internal/process/next_tick.js:219:9)
值存在但不确定为什么 toString 失败
我建议在您的实现中提取这样的参数:
function botHandler(agent) {
let state = agent.parameters["stateName"];
let uState = state.toUpperCase();
let answer = "So you live in " + uState + "?";
agent.add(answer);
}
您可以通过这种方式检查参数是否存在:
if (agent.parameters["stateName"]) {
//do stuff here
}
希望对您有所帮助!
toString()
没有失败(虽然它可能是不必要的,因为它可能已经是一个字符串)。
您的方法 toUpercase()
失败,因为您在 "uppercase" 中有错字。它应该有两个 "p",而不是一个。 toUppercase()
.
就是说,正如 Mathais 指出的那样,您应该确保首先拥有 stateName
参数。