Google Homeのアプリ開発を行っていたとき、DialogflowのFulfillmentを使った会話の継続/終了方法がよくわからず調べたことがあったので、今後も忘れないようメモしておきます。
2018/04/19追記
Dialogflowのバージョンアップ(V1 -> V2)に伴い、仕様が変わったみたいです。以下記事で詳しくまとめらていますのでご覧ください。
Dialogflow v2の会話を継続 or 終了させるメソッドの使い方 - Qiita
app.ask()
or app.tell()
会話を継続させる -> app.ask()
会話を終了させる -> app.tell()
会話を継続させる
const app = new DialogflowApp({request: request, response: response});
const FRUITS_INTENT = 'input.fruits';
// ユーザへの質問(会話継続)
function fruitsIntent (app) {
app.ask('好きな果物を教えてください。');
}
const actionMap = new Map();
actionMap.set(FRUITS_INTENT, fruitsIntent);
app.handleRequest(actionMap);
会話を終了させる
const app = new DialogflowApp({request: request, response: response});
const FRUITS_INTENT = 'input.fruits';
// ユーザへの返答(会話終了)
function fruitsIntent (app) {
app.tell('バナナは栄養価の高い果物です。');
}
const actionMap = new Map();
actionMap.set(FRUITS_INTENT, fruitsIntent);
app.handleRequest(actionMap);
まとめ
開発中、会話を継続したいのに、app.tell()
を使っていたがために会話が終了してしまうことがありました。結局、Dialogflowのリファレンスを読んで理解しました。リファレンス大事!