結論から言うと、サービスアカウントキーの JSON ファイルを GCP Console より生成して入手し、そのファイルを指定した
状態で実行すると、うまくいきます。
Dialogflow V2 API は、インテントやエンティティなどの追加や削除ができてしまう、結構激し目なAPIです。そのため、
もちろん誰でも実行可能、というわけにはいかず、API を利用するための認証の仕組みが設けられています。
PERMISSION_DENIED エラーは、その認証に失敗していることを示しています。
Dialogflow API は、Google Cloud Platform で共通的に採用されている認証の仕組みに乗っかっています。つまり、
dialogflow-nodejs-client-v2 クライアントライブラリも、その GCP の認証を突破しなければ使えません。
手順としては、以下のようになります。
- GCP Console で [サービス アカウント キーの作成] ページに移動します。
- 上部のヘッダーにて、サービスアカウントを生成したい対象の GCP Project を選択します。
- [サービス アカウント] プルダウン リストから既存のものを選択するか、[新しいサービス アカウント] を選択します。
- "JSON" が選択された状態で、[作成] をクリックします。JSONファイルがダウンロードされるはずです。
- サンプルを実行する際に、"GOOGLE_APPLICATION_CREDENTIALS" 環境変数にダウンロードしたJSONファイル
のパスが指定された状態で実行します。
最後の手順は、以下のようにする感じです。
$ GOOGLE_APPLICATION_CREDENTIALS="./your_project_123435.json" node detect.js event GOOGLE_ASSISTANT_WELCOME -p YOUR_PROJECT_ID -l ja-JP
GOOGLE_APPLICATION_CREDENTIALS環境変数の使い方については、以下に記載されています。
環境変数ではなくプログラムの中でJSONファイルを指定する方法もありますので、調べてみてください。
ご参考になれば幸いです。ではでは。
-Yoichiro
2018年6月7日木曜日 22時39分22秒 UTC+9 Yatima Kagurazaka: