Dialogflow(구:API.AI) 이벤트를 Cloud functions에서 받고 사용자에게 텍스트를 반환해 보세요. #dialogflow
API.AI 이벤트 받기
API.AI에서는 Webhook을 설정할 수 있습니다. 이렇게 하면 사용자가 보낸 요청을 외부 서버에서 처리할 수 있습니다. 이번에는 Cloud Functions에서 Actions on Google 이벤트를 받고 사용자에게 텍스트를 반환합니다.
이번에 사용할 서비스
API.AI 프로젝트 준비
이번에는 Google I / O 2017 API.AI 세션의 베이글 주문을 일본식으로 사용해보십시오. 에서 만든 프로젝트를 그대로 사용하고 싶습니다.
Actions on Google 사용
Integrations의 Actions on Goole을 선택하고 활성화하고 Setting에서 프로젝트를 만듭니다. Add actions to your app에서 USE API.AI 또는 Use Actions SDK 중 하나를 선택하는 화면에 오면 USE API.AI를 선택하고 화면 내용을 확인한 후 OK로 돌아갑니다.
※일본어 비대응을 위한 시뮬레이터는 시험할 수 없습니다
Cloud functions 준비
Google Developer console 에서 프로젝트 선택
Cloud functions 사용
Cloud storage 버킷 준비
gcloud init
를 실행하여 GCP 프로젝트를 선택합니다.index.js와 package.json 준비
프로젝트 디렉토리에
index.js
및 package.json
를 만듭니다.index.js
'use strict';
process.env.DEBUG = 'actions-on-google:*';
const App = require('actions-on-google').ApiAiApp;
//API.AI actions
const ORDER_SUSHI = 'order.sushi';
exports.ordersushi = (request, response) => {
const app = new App({request, response});
console.log('Request headers: ' + JSON.stringify(request.headers));
console.log('Request body: ' + JSON.stringify(request.body));
// Fulfill action business logic
function orderSushiHandler (app) {
// Complete your fulfillment logic and send a response
console.log('Requested ' + ORDER_SUSHI);
app.ask('Sushi requested!!');
}
const actionMap = new Map();
actionMap.set(ORDER_SUSHI, orderSushiHandler);
app.handleRequest(actionMap);
};
ORDER_SUSHI에는 Intents의 액션 이름이 포함됩니다.
package.json
{
"name": "sushi-order-demo",
"description": "This is your Action's webhook",
"version": "0.0.1",
"private": true,
"license": "Apache Version 2.0",
"author": "Google Inc.",
"engines": {
"node": "~6.0"
},
"scripts": {
"lint": "semistandard --fix \"**/*.js\"",
"start": "functions deploy ordersushi --trigger-http",
"deploy": "gcloud beta functions deploy ordersushi --trigger-http --stage-bucket order-sushi"
},
"dependencies": {
"actions-on-google": "^1.0.0"
},
"devDependencies": {
"semistandard": "^9.1.0"
}
}
프로젝트 업로드
다음 명령을 사용하여 프로젝트를 Cloud Storage에 업로드합니다.
terminal
gcloud beta functions deploy ordersushi --trigger-http --stage-bucket order-sushi
업로드가 끝나면 URL이 반환된다고 생각합니다. 그 URL을 삼가해 주십시오.
httpsTrigger:
url: https://us-central1-yourproject.cloudfunctions.net/ordersushi
API.AI에 Webhook 설정
Webhook 사용
옆 메뉴에서 Fulfillment를 선택하여 Webhook을 활성화합니다.
그리고 방금전의 URL을 넣습니다.
Webhook 설정
Intents의 Sushi Order에서 Use webhook을 선택하십시오.
테스트해 보자.
Actions on Goole로 테스트하고 싶은 곳입니다만, 아직 시뮬레이터가 일본어 비대응이므로 API.AI의 시뮬레이터로 테스트해 봅시다.
Text Response 삭제
테스트하기 전에 Text Response의 "헤이, 엉망이되었습니다!"를 삭제합니다. 대신 함수에서 "Sushi requested!!"를 반환합니다.
실행
오른쪽 시뮬레이터에서 실행합니다. "스시 먹고 싶다, 녹이 있고, 참치"를 입력하고 주문이 확정되면. . .
제대로 「Sushi requested!!」가 반환되었습니다!
로그 확인
다음 명령으로 functions 로그 보기
terminal
gcloud beta functions logs read ordersushi
Requested order.sushi가 확인되었습니다!
terminal
I ordersushi xxxxxxxx 2017-05-29 23:15:38.465 Requested order.sushi
Reference
이 문제에 관하여(Dialogflow(구:API.AI) 이벤트를 Cloud functions에서 받고 사용자에게 텍스트를 반환해 보세요. #dialogflow), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/flatfisher/items/c96959a0d8d2daf619d2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)