Watson Assistantでアプリケーションを作成する。

#サンプルアプリのダウンロード
##任意のディレクトリを作成
ここでは、ホームディレクトリ配下に作成し、移動する。（CentOS7を使用）

```
$ mkdir local
$ cd local
```
##サンプルアプリのダウンロード
```
$ git clone https://github.com/watson-developer-cloud/assistant-simple.git
Cloning into 'assistant-simple'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 1165 (delta 2), reused 0 (delta 0), pack-reused 1159
Receiving objects: 100% (1165/1165), 12.90 MiB | 2.88 MiB/s, done.
Resolving deltas: 100% (567/567), done.
$ ls
assistant-simple
```
→local配下にassistant-simpleディレクトリが作成されている。

#設定ファイルの編集
##設定ファイルの準備
```
$ cd assistant-simple/
$ ls -a
.              .git             Procfile           package.json
..             .gitattributes   README.md          public
.cfignore      .gitignore       app.js             readme_images
.env.example   .travis.yml      casper-runner.js   server.js
.eslintignore  CONTRIBUTING.md  manifest.yml       test
.eslintrc.yml  LICENSE          package-lock.json  training
$ cp .env.example .env
$ cat .env 
# Environment variables
ASSISTANT_ID=                                       ★追記
# You need to provide either username and password
ASSISTANT_USERNAME=
ASSISTANT_PASSWORD=
# OR IAM API key and URL
ASSISTANT_IAM_APIKEY=                               ★追記
ASSISTANT_IAM_URL=
ASSISTANT_URL=https://gateway.watsonplatform.net/assistant/api ★編集
```
→以下三つのパラメータを設定する。
ASSISTANT_ID
ASSISTANT_IAM_APIKEY
ASSISTANT_URL

##パラメータの確認と設定1
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/971ef1bc-e410-7e72-448b-8a977bdb810a.png)
→API鍵を「ASSISTANT_IAM_APIKEY」に、URLを「ASSISTANT_URL」に記載する。

##パラメータの確認と設定2
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/953827b8-586c-7a0e-7df4-d5c28236c683.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/2083e713-ab32-2330-476c-a4e7442c05a5.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/cd922dcd-559c-93e0-3d46-0dd2eb3a2b0e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/dbc65f7f-c673-3253-457b-9cf6244cc611.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/cf0a1eae-3bc3-14f5-342a-1c7b7fa820b2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/b92704eb-1ca2-f627-4d7e-cb0a42b27874.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/ebb983b8-b2d4-2fb6-6e90-ad5597bf4568.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/7db47cdc-4fe7-7cc9-3c4e-506970c9f20f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/abf0b1cd-67de-1986-a1b5-7a029c2c4608.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/3a1e5bcf-071b-ca10-bf1a-08dfe0ae0085.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/f26acb1d-731c-68f9-c9a3-411894b8980a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/943816fe-f693-1492-4e35-7eff9116c85c.png)
→Assistant IDを「ASSISTANT ID」に記載する。
 ※本とはAssistant IDの確認方法が違ってた。

```
$ cat .env
# Environment variables
ASSISTANT_ID=0a779097-a592-446c-850a-xxxxxxxxxx
# You need to provide either username and password
ASSISTANT_USERNAME=
ASSISTANT_PASSWORD=
# OR IAM API key and URL
ASSISTANT_IAM_APIKEY=vccQyK1a2dpmLy0xLC-U7P0VmT4KPVYWwmi-xxxxxxx
ASSISTANT_IAM_URL=
ASSISTANT_URL=https://gateway.watsonplatform.net/assistant/api
```
#manifest.ymlの編集
```
$ cat manifest.yml 
applications:
- name: watson-assistant-simple   ★編集
  command: npm start
  path: .
  memory: 256M
  instances: 1
```
→viなどでnameパラメータを編集して、一意の文字列とする。
#サンプルアプリをIBM Cloudに配置する。
```
$ ibmcloud login
API エンドポイント: https://cloud.ibm.com
地域: us-south

Email> foo@example.ne.jp

Password> 
認証中です...
OK

ターゲットのアカウント Kosuke Machida's Account (3fec00718b7f4xxxxxxxxxxxxxxx)

                            
API エンドポイント:      https://cloud.ibm.com   
地域:                    us-south   
ユーザー:                foo@example.ne.jp   
アカウント:              Kosuke Machida's Account (3fec00718b7f4xxxxxxxxxxxxxxx)   
リソース・グループ:      リソース・グループがターゲットになっていません。'ibmcloud target -g RESOURCE_GROUP' を使用してください   
CF API エンドポイント:      
組織:                       
スペース:                   

ヒント: Cloud Foundry アプリケーションおよびサービスを管理している場合
- 'ibmcloud target --cf' を使用して Cloud Foundry 組織/スペースを対話式にターゲットにするか、'ibmcloud target --cf-api ENDPOINT -o ORG -s SPACE' を使用して組織/スペースをターゲットにします。
- 現行の IBM Cloud CLI コンテキストを使用して Cloud Foundry CLI を実行する場合は、'ibmcloud cf' を使用します。
```
どうもリソースグループの設定がよくないらしい。
リソースグループを確認し、設定する。

```
$ ibmcloud resource groups
foo@example.ne.jp としてアカウント Kosuke Machida's Account の下ですべてのリソース・グループを取得しています...
OK
名前      ID                                 デフォルト・グループ   状態   
Default   6ee46b3d8aca4xxxxxxxxxxxxxxxxxx   true                   ACTIVE   
$ ibmcloud target -g Default
ターゲットのリソース・グループ Default

                           
API エンドポイント:      https://cloud.ibm.com   
地域:                    us-south   
ユーザー:                foo@example.ne.jp   
アカウント:              Kosuke Machida's Account (3fec00718b7f4xxxxxxxxxxxxxxx)   
リソース・グループ:      Default   
CF API エンドポイント:   https://api.ng.bluemix.net (API バージョン: 2.128.0)   
組織:                    foo@example.ne.jp  
スペース:                dev   
$ 
```
```
$ ibmcloud target --cf
ターゲットの Cloud Foundry (https://api.ng.bluemix.net)

ターゲットの組織 foo@example.ne.jp

ターゲットのスペース dev

                          
API エンドポイント:      https://cloud.ibm.com   
地域:                    us-south   
ユーザー:                foo@example.ne.jp   
アカウント:              Kosuke Machida's Account (3fec00718b7f4xxxxxxxxxxxxxxx)   
リソース・グループ:      Default   
CF API エンドポイント:   https://api.ng.bluemix.net (API バージョン: 2.128.0)   
組織:                    foo@example.ne.jp   
スペース:                dev   
$ ibmcloud app push
'cf push' を起動しています...

foo@example.ne.jp としてマニフェストから組織 foo@example.ne.jp / スペース dev にプッシュしています...
マニフェスト・ファイル /home/kosuke/local/assistant-simple/manifest.yml を使用しています
アプリ情報を取得しています...
これらの属性でアプリを更新しています...
  名前:                       watson-assistant-simple-20190912jp
  パス:                       /home/kosuke/local/assistant-simple
  コマンド:                   npm start
  ディスク割り当て量:         1G
  ヘルス・チェック・タイプ:   port
  インスタンス:               1
  メモリー:                   256M
  スタック:                   cflinuxfs3
  経路:
    watson-assistant-simple-20190912jp.mybluemix.net

アプリ watson-assistant-simple-20190912jp を更新しています...
経路をマップしています...
ローカル・ファイルをリモート・キャッシュと比較しています...
Packaging files to upload...
ファイルをアップロードしています...
 104.91 KiB / 104.91 KiB [====================================================================] 100.00% 1s

API がファイルの処理を完了するのを待機しています...

アプリを停止しています...

アプリをステージングし、ログをトレースしています...
   Downloading liberty-for-java_v3_35-20190813-1755...
   Downloading php_buildpack...
   Downloading swift_buildpack_v2_0_20-20190401-2122...
   Downloading ruby_buildpack...
   Downloading liberty-for-java...
   Downloaded liberty-for-java_v3_35-20190813-1755
   Downloading sdk-for-nodejs...
   Downloaded swift_buildpack_v2_0_20-20190401-2122
   Downloading dotnet-core...
   Downloaded ruby_buildpack
   Downloading swift_buildpack...
   Downloaded php_buildpack
   Downloading staticfile_buildpack...
   Downloaded liberty-for-java
   Downloading noop-buildpack...
   Downloaded dotnet-core
   Downloading java_buildpack...
   Downloaded swift_buildpack
   Downloading xpages_buildpack...
   Downloaded staticfile_buildpack
   Downloading liberty_v3_14-20171013-1023...
   Downloaded java_buildpack
   Downloading swift_buildpack_v2_0_18-20190303-1915...
   Downloaded liberty_v3_14-20171013-1023
   Downloading liberty-for-java_v3_17_1-20180131-1532...
   Downloaded swift_buildpack_v2_0_18-20190303-1915
   Downloading go_buildpack...
   Downloaded xpages_buildpack
   Downloading nodejs_buildpack...
   Downloaded noop-buildpack
   Downloading dotnet-core_v2_3-20190609-2145...
   Downloaded go_buildpack
   Downloading python_buildpack...
   Downloaded nodejs_buildpack
   Downloading binary_buildpack...
   Downloaded liberty-for-java_v3_17_1-20180131-1532
   Downloading swift_buildpack_cflinuxfs3_v2_1_0-20190404-1206...
   Downloading sdk-for-nodejs_v3_28-20190722-1336...
   Downloaded dotnet-core_v2_3-20190609-2145
   Downloading dotnet-core_v2_2-20190327-1013...
   Downloaded sdk-for-nodejs
   Downloaded binary_buildpack
   Downloading sdk-for-nodejs_v3_27-20190530-0937...
   Downloaded swift_buildpack_cflinuxfs3_v2_1_0-20190404-1206
   Downloading liberty-for-java_v3_34-20190715-1014...
   Downloaded sdk-for-nodejs_v3_27-20190530-0937
   Downloaded dotnet-core_v2_2-20190327-1013
   Downloaded liberty-for-java_v3_34-20190715-1014
   Downloaded python_buildpack
   Downloaded sdk-for-nodejs_v3_28-20190722-1336
   Cell f1b9c42f-f377-49d4-a395-6a68296126d4 creating container for instance c6eb8f01-b559-4ce9-bb1c-17afe1a81ce9
   Cell f1b9c42f-f377-49d4-a395-6a68296126d4 successfully created container for instance c6eb8f01-b559-4ce9-bb1c-17afe1a81ce9
   Downloading app package...
   Downloading build artifacts cache...
   Downloaded app package (314.5K)
   Downloaded build artifacts cache (2.6M)
   -----> IBM SDK for Node.js Buildpack v3.28-20190722-1336
          Based on Cloud Foundry Node.js Buildpack v1.5.24
   -----> Creating runtime environment
          
          NPM_CONFIG_LOGLEVEL=error
          NPM_CONFIG_PRODUCTION=true
          NODE_ENV=production
          NODE_MODULES_CACHE=true
   -----> Installing binaries
          engines.node (package.json):  >=8.15.0
          engines.npm (package.json):   unspecified (use default)
          
          Resolving node version >=8.15.0 via 'node-version-resolver'
          Installing Node.js (10.16.0) from cache
          Using default npm version: 6.9.0
   -----> Restoring cache
          Loading 2 from cacheDirectories (default):
          - node_modules
          - bower_components (not cached - skipping)
   -----> Building dependencies
          Installing node modules (package.json)
          audited 75266 packages in 4.436s
          found 1112 vulnerabilities (1111 high, 1 critical)
          run `npm audit fix` to fix them, or `npm audit` for details
   -----> Installing App Management
   Checking for Dynatrace credentials
   No Dynatrace Service Found (service with substring dynatrace not found in VCAP_SERVICES)
   -----> Caching build
          Clearing previous node cache
          Saving 2 cacheDirectories (default):
          - node_modules
          - bower_components (nothing to cache)
   -----> Build succeeded!
          ├── body-parser@1.18.3
          ├── dotenv@6.2.0
          ├── express@4.16.4
          └── ibm-watson@4.2.0
          
   Exit status 0
   Uploading droplet, build artifacts cache...
   Uploading build artifacts cache...
   Uploading droplet...
   Uploaded build artifacts cache (2.6M)
   Uploaded droplet (25.6M)
   Uploading complete
   Cell f1b9c42f-f377-49d4-a395-6a68296126d4 stopping instance c6eb8f01-b559-4ce9-bb1c-17afe1a81ce9
   Cell f1b9c42f-f377-49d4-a395-6a68296126d4 destroying container for instance c6eb8f01-b559-4ce9-bb1c-17afe1a81ce9

アプリが開始するのを待機しています...

名前:                   watson-assistant-simple-20190912jp
要求された状態:         started
経路:                   watson-assistant-simple-20190912jp.mybluemix.net
最終アップロード日時:   Thu 12 Sep 13:56:39 JST 2019
スタック:               cflinuxfs3
ビルドパック:           SDK for Node.js(TM) (ibm-node.js-10.16.0, buildpack-v3.28-20190722-1336)

タイプ:           web
インスタンス:     1/1
メモリー使用量:   256M
開始コマンド:     npm start
     状態   開始日時               cpu    メモリー            ディスク           詳細
#0   実行   2019-09-12T04:57:14Z   0.2%   256M の中の 27.6M   1G の中の 101.7M  
```
#動作の確認
ブラウザで動作を確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/2cfb651a-fac5-32bf-5248-73c7f68db1af.png)