Dialogflow チュートリアルをActions on Google API v2 対応にする
はじめに
軽くDialogflow を触ってみようとググったらGoogle 公式っぽいチュートリアルが見つかったので試してみたところ、Actions on Google でエラーになったので対応をメモしておきます。
試したチュートリアルはこちら。
Dialogflow で初めてのアプリをビルドする
※ 2018/07/10 時点の情報なので、チュートリアルページがアップデートされたらこの記事は不要になります。
Dialogflow とは
Google のチャットボットフレームワーク、でいいのかな。昔はApi.ai という名前でした。Actions on Google やSlack などと連携して音声/テキストのユーザーインタフェースを作れます。
その他出てくるサービス名などはチュートリアルを実施する方なら説明不要と思うので、説明は省略。
チュートリアルでエラー発生
順調に進めていたんですが、「フルフィルメントを構築する」のところでエラーが発生しました(Actions on Google で返事が戻らなかった)。フルフィルメント(Fulfillment) はWebhook でFirebase のFunctions を呼ぶところですね。
Firebase コンソールでログを確認すると次の行がありました。
Error: Dialogflow v2 is not currently supported
何が問題だったのか
ログにあるとおり、Dialogflow API がv1 からv2 にバージョンアップしていました。
Dialogflow のページにアクセスすると上部に警告表示されていたので「へー」と思って即[DISMISS]してたんですが、チュートリアルも対応未済でした。
v1 からv2 へのマイグレーションについては、警告内の「Learn how to migrate your V1 agents here」のリンク先でもいいんですが、Actions on Google のドキュメントの方がv1 とv2 の対応コードも記載されていて分かりやすいので、こちらを参照すると良いと思います。
Actions on Google Node.js Client Library Version 1 Migration Guide
API v2 への対応コード
ひとまずチュートリアルを動かしたところなのでv2 での変更点は本記事では解説しませんが、対応したチュートリアルのコードを載せておきます。
const functions = require('firebase-functions');
const { dialogflow } = require('actions-on-google');
// a. the action name from the make_name Dialogflow intent
const NAME_ACTION = 'make_name';
// b. the parameters that are parsed from the make_name intent
const COLOR_ARGUMENT = 'color';
const NUMBER_ARGUMENT = 'number';
const app = dialogflow();
// c. The function that generates the silly name
app.intent(NAME_ACTION, (conv => {
let number = conv.parameters[NUMBER_ARGUMENT];
let color = conv.parameters[COLOR_ARGUMENT];
conv.close('Alright, your silly name is ' +
color + ' ' + number +
'! I hope you like it. See you next time.');
}));
exports.sillyNameMaker = functions.https.onRequest(app);
まとめ
チュートリアル等の日本語訳はありがたいんですが、最新への追従が遅れていたりするので注意が必要ですね。(チュートリアル最終更新日が2018/3/20、API v2への移行が2018/4/16……つらい)(チュートリアルがアップデートされたらこの記事は不要になります)
Author And Source
この問題について(Dialogflow チュートリアルをActions on Google API v2 対応にする), 我々は、より多くの情報をここで見つけました https://qiita.com/noitak/items/4fac3b334601c7145a1f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .