Dialogflow의 event를 사용해 본다.
소개
Dialogflow에서는 사용자의 텍스트 입력(키보드 or 음성)에 대해 intent가 반응하는 구조입니다만, 텍스트 입력 대신에 event를 발생시켜, 거기에 반응하는 intent를 만들 수 있습니다. 단지, 사용법이 이해하기 어려운 (정보가 적다) 때문에, 아는 한으로 정리해 보았습니다.
이번에는 하나의 Intent가 호출되면 이벤트가 발생하고 다른 Intent가 호출된다는 간단한 처리를 수행합니다.
Intent에서 이벤트 설정.
먼저 Event가 발생했을 때 호출되는 측의 설정입니다. 공식 해설은 여기 입니다. Intent 설정에서 Events에 Event의 이름 (여기서는 Good morning)을 넣는 것입니다.
이쪽의 Intent에서는, 「안녕하세요」라고 말하면 「안녕하세요.오늘도 좋은 하루를.」라고 Text Response를 돌려주었습니다.
Fulfillment 설정.
이번에는 이벤트를 발생시키는 측 설정입니다. 이렇게 하려면 Fulfillment를 설정합니다. 이것은 Webhook를 이용해, intent가 불려 갔음을 서버에 전해, 그곳에서 어떠한 처리를 실시해, 결과를 받습니다. 공식 해설은 여기 이나 여기 를 봐 주세요.
Fulfillment는 왼쪽 메뉴의 Fullfilment에서 설정할 수 있습니다.
이번에는 간단한 테스트를 위해 Inline Editor를 사용하므로 아래 슬라이더를 눌러 Enabled로 설정하십시오.
이제 index.js에서 스크립트를 편집할 수 있습니다. 벌써 샘플 코드가 써 있습니다만, 길고 읽는 것이 힘들기 때문에, 공식의 여기 에 있는 심플한 코드를 기초로 해 해 보았습니다.
index.js'use strict';
const functions = require('firebase-functions');
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
response.setHeader("Content-Type", "application/json");
response.send(
JSON.stringify({
"followupEvent": {
"name": "GoodMorning"
}
})
);
}
);
요청에 대해 JSON을 반환하는 스크립트입니다. 스크립트는 fulfillment에서 이벤트를 발생시키려면 위에서 설명한 대로 JSON에서 followupEvent 매개 변수를 설정해야합니다 (자세한 내용은 공식 페이지 아래 참조). 이것을 설정하면, speech, displayText, data 필드는 무시된다는 것에 주의해 주세요.
코드를 입력한 후 오른쪽 하단의 Deploy 버튼을 누르면 실행 가능합니다.
Event를 호출하는 Intent 설정
이벤트를 호출하는 측의 Intent를 만듭니다. 「인사말」이라고 넣으면 호출됩니다.
지금까지와 달리 Intent 설정 화면 아래에 Fulfillment에 대한 설정이 나옵니다. 여기에서 Use webhook을 활성화하십시오.
참고: 웹훅은 호출하는 쪽만 활성화합니다. 호출되는 측에는 불필요합니다.
해보자
화면 오른쪽의 시뮬레이터로 테스트합시다. ”try it now”의 곳에 「인사말 시작」이라고 넣으면, Event가 일어나, 인사말의 Intent가 실행됩니다.
아래의 SHOW JSON 버튼을 누르면 무슨 일이 일어났는지 알 수 있습니다.
여기서 중요한 것은 metadata의 ExectionSequence이며, 이것을 쫓아가면, 무엇이 Event를 발생시켜, 그 결과 무슨 Intent가 일어났는지를 알 수 있습니다.
결론
우선, 가장 심플한 형태로 Event를 발생시킬 수 있었습니다. 다만, 현재 상태에서는 어떤 Fulfillment라도 반드시 GoodMorning 이벤트가 발생해 버리므로, 수정이 필요하게 됩니다. 그것에 대해서는 또한 앞으로.
Reference
이 문제에 관하여(Dialogflow의 event를 사용해 본다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yanosen_jp/items/dbeb68b88ae64e733f46
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
먼저 Event가 발생했을 때 호출되는 측의 설정입니다. 공식 해설은 여기 입니다. Intent 설정에서 Events에 Event의 이름 (여기서는 Good morning)을 넣는 것입니다.
이쪽의 Intent에서는, 「안녕하세요」라고 말하면 「안녕하세요.오늘도 좋은 하루를.」라고 Text Response를 돌려주었습니다.
Fulfillment 설정.
이번에는 이벤트를 발생시키는 측 설정입니다. 이렇게 하려면 Fulfillment를 설정합니다. 이것은 Webhook를 이용해, intent가 불려 갔음을 서버에 전해, 그곳에서 어떠한 처리를 실시해, 결과를 받습니다. 공식 해설은 여기 이나 여기 를 봐 주세요.
Fulfillment는 왼쪽 메뉴의 Fullfilment에서 설정할 수 있습니다.
이번에는 간단한 테스트를 위해 Inline Editor를 사용하므로 아래 슬라이더를 눌러 Enabled로 설정하십시오.
이제 index.js에서 스크립트를 편집할 수 있습니다. 벌써 샘플 코드가 써 있습니다만, 길고 읽는 것이 힘들기 때문에, 공식의 여기 에 있는 심플한 코드를 기초로 해 해 보았습니다.
index.js'use strict';
const functions = require('firebase-functions');
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
response.setHeader("Content-Type", "application/json");
response.send(
JSON.stringify({
"followupEvent": {
"name": "GoodMorning"
}
})
);
}
);
요청에 대해 JSON을 반환하는 스크립트입니다. 스크립트는 fulfillment에서 이벤트를 발생시키려면 위에서 설명한 대로 JSON에서 followupEvent 매개 변수를 설정해야합니다 (자세한 내용은 공식 페이지 아래 참조). 이것을 설정하면, speech, displayText, data 필드는 무시된다는 것에 주의해 주세요.
코드를 입력한 후 오른쪽 하단의 Deploy 버튼을 누르면 실행 가능합니다.
Event를 호출하는 Intent 설정
이벤트를 호출하는 측의 Intent를 만듭니다. 「인사말」이라고 넣으면 호출됩니다.
지금까지와 달리 Intent 설정 화면 아래에 Fulfillment에 대한 설정이 나옵니다. 여기에서 Use webhook을 활성화하십시오.
참고: 웹훅은 호출하는 쪽만 활성화합니다. 호출되는 측에는 불필요합니다.
해보자
화면 오른쪽의 시뮬레이터로 테스트합시다. ”try it now”의 곳에 「인사말 시작」이라고 넣으면, Event가 일어나, 인사말의 Intent가 실행됩니다.
아래의 SHOW JSON 버튼을 누르면 무슨 일이 일어났는지 알 수 있습니다.
여기서 중요한 것은 metadata의 ExectionSequence이며, 이것을 쫓아가면, 무엇이 Event를 발생시켜, 그 결과 무슨 Intent가 일어났는지를 알 수 있습니다.
결론
우선, 가장 심플한 형태로 Event를 발생시킬 수 있었습니다. 다만, 현재 상태에서는 어떤 Fulfillment라도 반드시 GoodMorning 이벤트가 발생해 버리므로, 수정이 필요하게 됩니다. 그것에 대해서는 또한 앞으로.
Reference
이 문제에 관하여(Dialogflow의 event를 사용해 본다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yanosen_jp/items/dbeb68b88ae64e733f46
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
'use strict';
const functions = require('firebase-functions');
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
response.setHeader("Content-Type", "application/json");
response.send(
JSON.stringify({
"followupEvent": {
"name": "GoodMorning"
}
})
);
}
);
이벤트를 호출하는 측의 Intent를 만듭니다. 「인사말」이라고 넣으면 호출됩니다.
지금까지와 달리 Intent 설정 화면 아래에 Fulfillment에 대한 설정이 나옵니다. 여기에서 Use webhook을 활성화하십시오.
참고: 웹훅은 호출하는 쪽만 활성화합니다. 호출되는 측에는 불필요합니다.
해보자
화면 오른쪽의 시뮬레이터로 테스트합시다. ”try it now”의 곳에 「인사말 시작」이라고 넣으면, Event가 일어나, 인사말의 Intent가 실행됩니다.
아래의 SHOW JSON 버튼을 누르면 무슨 일이 일어났는지 알 수 있습니다.
여기서 중요한 것은 metadata의 ExectionSequence이며, 이것을 쫓아가면, 무엇이 Event를 발생시켜, 그 결과 무슨 Intent가 일어났는지를 알 수 있습니다.
결론
우선, 가장 심플한 형태로 Event를 발생시킬 수 있었습니다. 다만, 현재 상태에서는 어떤 Fulfillment라도 반드시 GoodMorning 이벤트가 발생해 버리므로, 수정이 필요하게 됩니다. 그것에 대해서는 또한 앞으로.
Reference
이 문제에 관하여(Dialogflow의 event를 사용해 본다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yanosen_jp/items/dbeb68b88ae64e733f46
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
우선, 가장 심플한 형태로 Event를 발생시킬 수 있었습니다. 다만, 현재 상태에서는 어떤 Fulfillment라도 반드시 GoodMorning 이벤트가 발생해 버리므로, 수정이 필요하게 됩니다. 그것에 대해서는 또한 앞으로.
Reference
이 문제에 관하여(Dialogflow의 event를 사용해 본다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yanosen_jp/items/dbeb68b88ae64e733f46텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)