使用V2 DialogFlow中的Express获取body请求参数



我使用Express应用从V1 => V2迁移我的Google Action,过去,我能够获得URL参数&这样的初始化我的动作图:

// 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,而不是使用Express的.post路由,我只需要使用.use,例如。express().use(bodyParser.json(), app)。但是,我不明白如何使用这种方法(仍然是Body Parser的节点newbie(获取身体参数(REQ/RES(。

我需要从请求中的完整URL路径(类型,平台,发布者(,以便以后在各种意图中履行某些APP逻辑。

如果某人拥有更构建的Express/V2对话流程示例,那将非常有帮助。我所有这些都与V1一起工作,但是时间正在改变!

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

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

现在您可以做类似的事情:

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)}`);
});

来自此GitHub问题的类似问题:

您可以从conv.request中检索RAW JSON数据,以获取Google Data上的核心操作和整个JSON主体的conv.body

最新更新