在V2 Dialogflow中使用express获取正文请求参数

时间:2018-04-24 16:20:41

标签: actions-on-google

我从v1 =>迁移我的Google操作v2使用快速应用程序,在过去,我已经能够获得url params&像这样初始化我的行动地图:

// INITIALIZE EXPRESS APPLICATION & ENDPOINTS
app.use(bodyParser.json({strict: false}));

// POST [TYPE] [PLATFORM] [PUBLISHER] PARAMS => PASS TO FULFILLMENT
app.post('/:platform/:type/:publisher', function(req, res) {
  debugRequest(req);
  console.log(`SENDING TO ${TYPE} => ${PLATFORM} => ${PUBLISHER} FULFILLMENT`);
  fulfillment.fulfillment(req, res);
});

```

使用v2,而不是使用带有快递的.post路线,我只需要使用.use,例如express().use(bodyParser.json(), app)。但是,我不明白如何使用这种方法[身体解析器来获取身体参数(req / res)] [仍然是一种节点新手]来自身体解析器。

我需要来自请求的完整网址路径(类型,平台,发布商),以便稍后在各种意图中完成某些应用逻辑。

如果某人有更多内置的express / v2 Dialogflow示例,那将非常有帮助。我所有这一切都与v1一起工作,但时间变了!

2 个答案:

答案 0 :(得分:1)

您现在应该能够使用2.2.0中添加的新框架元数据功能来获取此数据。有关更多详细信息,请参见此GitHub comment

现在,包含框架元数据的对象作为中间件功能中的第二个参数出现。

现在您可以执行以下操作:

app.middleware((conv, framework) => {
  if (framework.express) {
    conv.expressParams = framework.express.request.expressParams;
  }
});

app.intent('some intent', conv => {
  conv.ask(`Params sent was ${JSON.stringify(conv.expressParams)}`);
});

答案 1 :(得分:0)

来自this GitHub issue中的类似问题:

  

您可以从conv.request检索原始JSON数据,以获取有关Google数据的核心操作,并conv.body检索整个JSON正文。