2017-11-25 15 views
2

XMLHttpRequest를 사용하는 FireFox 용 Cloud Functions를 사용하여 DialogFlow 앱을 만들고 서비스를 배포했습니다. 그러나 다음 오류가 발생했습니다.DialogFlow Webhook : 오류 : EROFS : 읽기 전용 파일 시스템, '.node-xmlhttprequest-sync-2'열기

Error: EROFS: read-only file system, open '.node-xmlhttprequest-sync-2' at Error (native) at Object.fs.openSync (fs.js:642:18) at Object.fs.writeFileSync (fs.js:1348:33) at send (/user_code/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:477:10)

내 코드는 다음과 같습니다.

'use strict'; 

const admin = require('firebase-admin'); 
const functions = require('firebase-functions'); 

const DialogflowApp = require('actions-on-google').DialogflowApp; 
const XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest; 
const googleAssistantRequest = 'google'; 

const Actions = { 
    UNRECOGNIZED_DEEP_LINK: 'deeplink.unknown', 
    TEST_HTTPREQUEST: 'test.httprequest' 
}; 

const testHttpRequest = app => { 
    var req = new XMLHttpRequest(); 
    req.open('GET', 'http://www.google.com', false); 
    req.send(); 
    if (req.status === 200) { 
     console.log(req.responseText); 
    } 
} 

const actionMap = new Map(); 
actionMap.set(Actions.TEST_HTTPREQUEST, testHttpRequest); 

exports.mytestapp = functions.https.onRequest((request, response) => { 
    const app = new DialogflowApp({ request, response }); 
    console.log(`Request headers: ${JSON.stringify(request.headers)}`); 
    console.log(`Request body: ${JSON.stringify(request.body)}`); 
    app.handleRequest(actionMap); 
}); 

누구든지이 오류를 해결하는 방법에 대한 아이디어가 있습니까?

답변

0

testHttpRequest은 Dialogflow의 사용자 요청에 응답하기 위해 app을 사용해야합니다. 요청에 응답하려면 ask 또는 tell 메서드를 사용하십시오. 예를 들어 testHttpRequest의 경우 문 다음에 당신은 추가 할 수 있습니다 : 당신이 구글 시뮬레이터거나 작업에서 도우미 응용 프로그램을 호출 할 때 구글 클라이언트 라이브러리에서 작업을 알려줍니다

app.tell('This response came from Cloud Functions for Firebase!'); 

요청에 대한 응답으로 문자열을 보내 Google Assistant 기기 (Google 테스트 관련 작업 문서 참조)

작업 이름과 관련된 문제가 발생할 수도 있습니다. 여기에서 수행 한 내용 (deeplink.unknowntest.httprequest)도 an action in an intent in your Dialogflow agent으로 표시되어야합니다. 그렇지 않으면 코드가 실행되지 않습니다. Google Assistant에는 환영 인사가 필요합니다. 기본적으로 Dialogflow의 시작 의도에는 코드에 포함되지 않은 input.welcome의 동작이 있으므로 코드 및 Dialogflow 에이전트에 나열된 동작과 일치 할 때까지 코드가 트리거되지 않을 수 있습니다.

외부 HTTP 호출 (Google 네트워크 외부) are not permitted on Cloud Functions without setting up billing first.