2017-12-26 39 views
1

koa 프레임 워크로 google 액션을 사용하려고합니다. koa 미들웨어에서 AoG 생성자와 사용할 요청 및 응답을 이해할 수 없습니다. AoG 선교사 콘솔 시뮬레이터에 그것을 시도koa.js와 google-actions를 사용할 때 응답을 보내는 올바른 방법

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

나는 다음과 같은 오류 얻을 :

이 내 코드는 내가 잘 작동하는 대신 .ask()의 JSON 응답을 사용하는 경우

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) 

합니다. AoG 요청의 경우 Dialogflow 이행을위한 전체 json 응답 형식에 대해 잘 모르겠습니다.

답변

2

Google의 작업에 대한 Node.js 클라이언트 라이브러리는 Express 스타일 request/response 쌍을 예상합니다.

+0

AoG 용 클라이언트 라이브러리를 사용하고 싶지 않은 경우 Google Assistant [Dialogflow.ai fulfillment] (https://dialogflow.com/docs/fulfillment)의 응답 형식은 어떻게해야합니까? – zhuiks

+0

성취 응답의 '데이터'부분을 사용하여 JSON의 data.google 요소의 richResponse 속성에서 Google 특정 시각적 요소 항목을 보낼 수 있습니다 (https://developers.google.com/actions/dialogflow 참조)./webhook # response –