2017-11-27 7 views
0

isLequestFromAssistant 메소드를 구현하여 my fulfillment webhook에 대한 요청을 확인하는 데 문제가 있습니다. 사용 Node.js를, 내하는 index.js 파일의 시작 부분에 다음과 같은 변수를 인스턴스화 :google.js에서 actions-on-google 프로젝트 완료시 isRequestFromAssistant 구현

const App = require('actions-on-google').ApiAiApp; 
const app = new App({ request, response }); 

내가 다음 自問 해보십시오와 "응용 프로그램"을 사용하고 제 기능을 통해 .tell 및 기타 방법.

내가 isRequestFromAssistant을 구현하기위한 문서에 표시되는 코드는 다음과 같습니다

const app = new ActionsSdkApp({request, response}); 
app.isRequestFromAssistant('my-project-id') 
    .then(() => { 
    app.ask('Hey there, thanks for stopping by!'); 
    }) 
    .catch(err => { 
    response.status(400).send(); 
    }); 

내가 첫 번째 라인을 생략하고 대신 .ActionsSdkApp 방법의 .ApiAi 방법을 사용하여 만든 기존 응용 프로그램 변수를 사용하는 경우, 작동하지 않습니다. .ActionsSdkApp 메소드를 사용하여 App1 및 app1 변수를 새로 작성하고 위 코드를 app1.isRequestFromAssistant로 변경하면 작동하지 않습니다. 나는 운이없는 다른 변이를 시도했다.

내가 작동하지 않는다고 말하면 전화를 걸면 500 내부 서버 오류가 발생합니다. 현재 NGROK에서 호스팅하고 있습니다. 저는 Node.js의 초보자입니다. 다른 700 줄의 코드가 정상적으로 작동하고 대부분 Google 검색에서 배우고이 포럼을 읽었습니다.

답변

2

개별적으로 또는 개별적으로 문제가 발생할 수있는 몇 가지 문제가 있습니다.

처음으로 - google-actions-google 라이브러리가 최신 버전인지 확인하십시오. isRequestFromAssistant() 함수가 버전 1.6.0에 추가되었습니다.

두 번째 - 올바른 종류의 App 인스턴스를 만들고 있는지 확인하십시오. 당신이 Dialogflow (이전 API.AI)를 사용하는 경우, 그들은 모두 같은 일을 (

const App = require('actions-on-google').DialogflowApp; 
const app = new App({request, response}); 

또는

const { DialogflowApp } = require('actions-on-google'); 
const app = new DialogflowApp({request, response}); 

같은 뭔가를 작성해야한다, 그러나 당신은 모두를 볼 수 있습니다 양식에있는 양식). ApiAiApp (예제에서 사용하는)에서 DialogflowApp로 전환하여 새 이름을 반영해야하지만 이전 양식은 그대로 유지해야합니다.

당신이 작업을 사용하는 경우는 다음 다시

const { ActionsSdkApp } = require('actions-on-google'); 
const app = new ActionsSdkApp({request: request, response: response}); 

(같은 ActionsSdkApp 개체, 뭔가를 사용한다 (Dialogflow/API.AI를 사용 하지) 직접 SDK, 당신은 볼 수 있습니다 이 변종은 기본적으로 모두 동일합니다.)

세 번째 - 사용중인 개체와 일치하는 올바른 기능을 사용하고 있는지 확인하십시오. 액션 SDK를 사용하는 경우 isRequestFromAssistant() 함수는 입니다.

Dialogflow를 사용하는 경우 해당 기능은 isRequestFromDialogflow()입니다. 그러나 Dialogflow 구성의 일부로 확인 정보를 설정해야하기 때문에 매개 변수가 다릅니다.

마지막으로 - 500 오류가 발생하면 실행중인 node.js 서버에 대한 로그 (또는 stderr의 출력)를 확인하십시오. 일반적으로 올바른 방향으로 가리키는 오류 메시지가 표시됩니다. 그렇지 않다면 StackOverflow 질문의 일부로 오류 메시지를 게시하는 것이 항상 도움이됩니다.

0

nodejs에서 다음 dialogflow 이행 페이지의 보안 (무작위로 생성 된) 인증 헤더 & 키 값을 설정 :

또한
if (app.isRequestFromDialogflow("replace_with_key", "replace_with_value")) { 
    console.log("Request came from dialogflow!"); 
    // rest of bot 
} else { 
    console.log("Request did not come from dialogflow!"); 
    response.status(400).send(); 
} 

참조 : https://developers.google.com/actions/reference/nodejs/DialogflowApp#isRequestFromDialogflow