假设 Dialogflow 中的意图名为“ intent.direction ”。此意图包含以下短语:“指向PLACE_NAME的方向”或“导航至PLACE_NAME ”等。此处“ PLACE_NAME ”是用户想要去的任何地方的名称。
当意图 触发时,我希望“ PLACE_NAME ”即地名,传递到我的 WEBHOOK (index.js)。
有没有办法做到这一点?
-------------------更新后的反应------------------ < / p>
function makeDirection(app)
{
if (!hasScreen)
{
app.ask('Sorry, try this on a screen device');
}
else
{
//-----variables----
var body2="";
var placeName = app.getArgument( 'PLACE_NAME' );
app.ask(placeName);
下面是一些测试图片,我得到了最后一句话,即“ PLACE_NAME ”,但......
答案 0 :(得分:3)
是
我认为你的Intent看起来像这样:
有关Intent设置的重要注意事项是:
@sys.any
的实体类型。这将匹配任何东西。如果我们有其他有意义的实体类型(我们定义的类型或类似@sys.address
或@sys.street-address
),我们可以使用它们。PLACE_NAME
。我们还完成了将动作名称设置为某些内容并通过webhook启用履行的功能。
在我们的webhook中,我们将获得此Intent设置的参数值。我们如何做到这将取决于我们使用的库,如果有的话。
由于您已经表明这是针对Google上的操作,因此您可能正在使用AoG node.js库。如果是这样,我们可以使用类似
的方式获取参数var placeName = app.getArgument( 'PLACE_NAME' );
如果您正在阅读JSON并使用Dialogflow V1,您可以使用以下内容从body对象中获取值:
var placeName = body.result.parameters['PLACE_NAME'];
如果你使用的是Dialogflow V2,它的路径会略有不同:
var placeName = body.queryResult.parameters['PLACE_NAME'];
答案 1 :(得分:0)
这是另一种方法:
const functions = require('firebase-functions');
const yourClientId = 'xxxxx-xxxxxx.apps.googleusercontent.com';
const app = dialogflow({clientId: yourClientId}, {debug: true});
app.intent('intent.direction', (conv,params) => {
...
let placeName=params.PLACE_NAME
}