我正在尝试将actions-on-google与koa框架结合使用。我不能理解在koa中间件中哪个请求和响应与AoG构造函数一起使用。
这是我的代码:
const Koa = require( 'koa' )
const koaBody = require('koa-body')
const { DialogflowApp } = require('actions-on-google')
const koaApp = new Koa()
koaApp.use(koaBody())
koaApp.use(async (ctx) => {
const googleAssistant = new DialogflowApp({request: ctx.request, response: ctx.response});
const body = ctx.request.body;
console.log(body)
if (!body.result) ctx.throw(400, 'wrong request')
...
const listItems = []
results.forEach((result, i) => {
listItems.push(
googleAssistant.buildOptionItem('Item'+(i+1))
.setTitle(result.title)
.setDescription(result.text)
)
})
const list = googleAssistant.buildList().addItems(listItems)
console.log('Response to Dialogflow (AoG): ' + JSON.stringify(list))
googleAssistant.askWithList('Here some results', list)
})
const PORT = process.env.PORT || 3000
koaApp.listen( PORT, () => {
console.log( `Listening on ${ PORT }` )
} )在AoG控制台模拟器上尝试它时,我得到以下错误:
server error TypeError: this.response_.status is not a function
at DialogflowApp.doResponse_ (/home/zhuiks/myProject/node_modules/actions-on-google/assistant-app.js:2372:41)
at DialogflowApp.askWithList (/home/zhuiks/myProject/node_modules/actions-on-google/dialogflow-app.js:620:17)
at setGoogleResponse (/home/zhuiks/myProject/app.js:73:25)
at koaApp.use (/home/zhuiks/myProject/app.js:88:9)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:169:7)如果我使用json response而不是.ask(),它工作得很好。我只是不确定在AoG请求的情况下对话流实现的完整json响应格式
发布于 2017-12-28 04:36:54
Google的Node.js客户端库需要一个Express风格的request/response对。
https://stackoverflow.com/questions/47984099
复制相似问题