Dialogflowがv2になってuserStorageの保存方法も変わりました。
userStorageはアクションを終了しても永続的にデータが残るものです。
別途データベースを用意しなくても簡易的なデータの保存にはうってつけです。
※100日間何も更新無ければ消えるらしいです。後、ユーザーがアプリをリセットすると消えます。
Inline Editorにあるindex.jsを編集します。
保存方法
まずは、保存の仕方です。conv.user
の中にあるstorage
を使います。
convはDialogflowConversationのことです。storageの後のmemo
とかは自由に決めることができます。
保存方法
function save(agent) {
// Dialogflowから来るパラメータを取得
const memo = agent.parameters.memo;
// DialogflowConversationを取得
const conv = agent.conv();
// userのstorageに保存する
conv.user.storage.memo = memo;
conv.ask('メモを保存しました');
agent.add(conv);
}
// ここはIntent名
let intentMap = new Map();
intentMap.set('SaveIntent', save);
agent.handleRequest(intentMap);
読み込み方法
次は、保存した値を取得する方法です。conv.user.storage
にある値を単純に取得すればOKです。
読み込み方法
function load(agent) {
// DialogflowConversationを取得
const conv = agent.conv();
// storageにあるmemoを取得
const memo = conv.user.storage.memo;
if (memo === undefined) {
conv.ask('メモがありません');
} else {
conv.ask('メモが見つかりました。「'+ memo + '」です');
}
agent.add(conv);
}
// ここはIntent名
let intentMap = new Map();
intentMap.set('LoadIntent', load);
agent.handleRequest(intentMap);
動作例
WelcomeIntentでメモをセーブするかロードするかを案内して、
StartIntentでメモをセーブ
or ロード
の設定を切り替えています。
まとめ
手軽にデータを永続的に保存することができました。
占いアプリでユーザーの星座情報を保存したり、天気アプリで住んでいる地域を保存する等
様々な用途で使えます。是非!お試しあれ!