DialogflowからFirebaseにWebhook


簡単に制御するための覚え書き

前回の「まずはDialogflowを触ってみる」の返事をFirebaseにやらせる方法です。https://qiita.com/sanoh/items/efd99ebbdee294a7beb3

■受け渡しAPIにはV1とV2がある

最近V2をリリースしたので、V2使ってねという事だとおもいます、今回はV1とV2両方を書きます。

■V1 APIの場合

・設定で「V1 API」になっている事を確認してから「SAVE」を押します。

・Firebase設定
「Fulfilment」で他のサーバ設定ができます。
今回はFirebaseを使用するので「Inline Editor」を「ENABLED」してください

「index.js」のプログラムは以下のようにし、最後「DEPLOY」を押します(デプロイされるまでしばらくかかります)

index.js
'use strict';

const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');

exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
  const agent = new WebhookClient({ request, response });
  function foodApp (agent) {
    var params = request.body.result.parameters;
    var rFoods = params['foods'];
    var rFeel = params['feel'];

    agent.add('私も' + rFoods + '' + rFeel + 'です');
  }
  let actionMap = new Map();
  actionMap.set('食べ物の好み!', foodApp);
  agent.handleRequest(actionMap);
});

・Intentの設定
最後に「食べ物の好み!」のIntentの設定で「Fulfillment」の「Enable webhook call this intent」をOnにし「SAVE」すれば終了です。

■V2 APIの場合

・設定で「V2 API」になっている事を確認してから「SAVE」を押します。

・Firebase設定
「Fulfilment」で他のサーバ設定ができます。
今回はFirebaseを使用するので「Inline Editor」を「ENABLED」してください

「index.js」のプログラムは以下のようにし、最後「DEPLOY」を押します(デプロイされるまでしばらくかかります)

index.js
'use strict';

const functions = require('firebase-functions');
const { dialogflow } = require('actions-on-google');

const app = dialogflow();

app.intent('食べ物の好み!', (conv, params, confirmationGranted)  => {
    var rFoods = params['foods'];
    var rFeel = params['feel'];

    conv.ask('私も' + rFoods + '' + rFeel + 'です');
});

exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);

・Intentの設定
最後に「食べ物の好み!」のIntentの設定で「Fulfillment」の「Enable webhook call this intent」をOnにし「SAVE」すれば終了です。

■動作

V1,V2でも同じような動作になります、しかし、今後の事を考えるとV2のほうですかね!

(Botの場合、V1でないと動作が怪しいので要注意ですね)