#chiroito ’s blog

Java を中心とした趣味の技術について

Oracle Digital Assistant でチャットボットを作ってみた

この記事は「Oracle Cloud その2 Advent Calendar 2018」の12月5日の記事として書かれています。

Oracle Cloud の Digital Assistant を使ってチャットボットを作ってみます。

 Oracle Digital Assistant の画面で左上のメニューから Development - Bots と遷移して、New Bot という大きな●を選択します。

f:id:chiroito:20181201170209p:plain
MENU - Development - Bots

 ダイアログが表示されるので、チャットボットの名前と説明分を入力します。

f:id:chiroito:20181201170244p:plain
MENU - Development - Bots - New Bot

作成はこれだけで完了です。サンプルとしてあいさつをするチャットボットが作成されます。

試しに動かしてみましょう。右上の▲(赤枠)を選択してボットを開発モードで起動します。

 Hiと声を掛けると、どの様に返事をすれば良いか候補を出してきます。 英語の挨拶であるHello!を選択しましょう。候補に無い場合は任意のあいさつを入力できます。 名前を聞かれるので名前を入力してみましょう。先ほど選んだあいさつと入力した名前で返事がきます。

f:id:chiroito:20181201170604p:plain
GreetBot

Oracle Cloud Infrastructure CLIを設定してみた

この記事は「Oracle Cloud その2 Advent Calendar 2018」の12月3日の記事として書かれています。

Oracle Cloud Infrastructure (OCI) CLIを使うには、インストールしたあとに以下のようなちょっとした設定が必要です。

インストールがまだな場合はこちらの手順どおりにインストールしましょう。 Oracle Cloud Infrastructure CLIをインストールしてみた - #chiroito ’s blog

  1. 秘密鍵/公開鍵の作成
  2. 公開鍵の登録
  3. 設定ファイルの作成

これらの設定が終わっていないと、以下のようなエラーメッセージが出力されます。

・設定ファイルが存在しない場合のエラーメッセージ

$ oci os object list -bn ChihiroBucket
ERROR: Could not find config file at /home/opc/.oci/config

・設定ファイルはあるけど正しく設定されていない場合のエラーメッセージ

oci os object list -bn ChihiroBucket
ERROR: The config file at ~/.oci/config is invalid:

+Config Errors+---------+----------------------------------------------------------------------------------+
| Key         | Error   | Hint                                                                             |
+-------------+---------+----------------------------------------------------------------------------------+
| key_file    | missing | the full path and filename of the private PEM key file                           |
| region      | missing | for example, us-phoenix-1                                                        |
| tenancy     | missing | log into the console and find this OCID at the bottom of any page                |
| user        | missing | log into the console and go to the user's settings page to find their OCID       |
| fingerprint | missing | openssl rsa -pubout -outform DER -in <path to your private key> | openssl md5 -c |
+-------------+---------+----------------------------------------------------------------------------------+

秘密鍵/公開鍵の作成

 ociコマンドで鍵を作成すると、秘密鍵と公開鍵のファイルをOCIの設定用ディレクトリに作成してくれます。鍵ファイルにはパスフレーズを設定できます。コマンドが成功すると鍵のフィンガープリントが出力されます。これはあとで必要な情報となりますのでメモします。

 また、作成された公開鍵ファイルは次のステップでOCIのコンソールへ登録が必要なため、中身を表示してメモします。

※セキュリティ上公開できない部分は X になっていますが、これらは任意の英数字になります。

> oci setup keys
Enter a passphrase for your private key (empty for no passphrase):
Public key written to: /home/opc/.oci/oci_api_key_public.pem
Private key written to: /home/opc/.oci/oci_api_key.pem
Public key fingerprint: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX


    If you haven't already uploaded your public key through the console,
    follow the instructions on the page linked below in the section 'How to
    upload the public key':

        https://docs.us-phoenix-1.oraclecloud.com/Content/API/Concepts/apisigningkey.htm#How2

> ls /home/opc/.oci/
oci_api_key.pem  oci_api_key_public.pem

> ls /home/opc/.oci/oci_api_key_public.pem
-----BEGIN PUBLIC KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXX
-----END PUBLIC KEY-----

公開鍵の登録

 作成した公開鍵をOCIのコンソールへ登録します。ユーザ毎に公開鍵の登録が必要です。

 ユーザの画面でAdd Public Keyボタン(赤枠)を押して登録用のダイアログを表示します。

f:id:chiroito:20181201162602p:plain
MENU - Identity - Users - User Details

先ほど表示した公開鍵の中身をダイアログのテキストエリアへコピーします。

f:id:chiroito:20181201162043p:plain
MENU - Identity - Users - User Details - Add Public Key

登録が完了すると、登録された鍵が一覧表示され、鍵のフィンガープリントが表示されます。先ほどメモを忘れてた場合にはこちらからメモしましょう。

設定ファイルの作成

設定ファイルを作る前に、以下の情報をOracle Cloud Infrastructureの画面から取得します。

  • テナンシーのOCID
  • リージョン
  • ユーザのOCID

これらの情報は以下の2つの画面で確認できます。

  • MENU - Administration - Tenancy Details
  • MENU - Identity - Users

 画面左上のMENUからAdministration - Tenancy Detailsと遷移していきます。

 この画面ではRegionとテナンシーのOCIDを取得します。(赤枠)表示時にはOCIDは全ての桁が表示されていませんが、Copyを押すとクリップボードへコピーされます。全ての桁を表示するにはShowを押します。

f:id:chiroito:20181201160434p:plain
MENU - Administration - Tenancy Details

 画面左上のMENUからIdentity - Usersと遷移していくとユーザ一覧が表示されるため設定したいユーザを選択します。

 この画面ではユーザのOCIDを取得します。(赤枠)表示時にはOCIDは全ての桁が表示されていませんが、Copyを押すとクリップボードへコピーされます。全ての桁を表示するにはShowを押します。

f:id:chiroito:20181201160639p:plain
MENU - Identity - Users

好きなテキストエディタで $HOME/.oci/configを作成し、以下を設定します。

  • 秘密鍵ファイルの場所
  • リージョン
  • テナンシーのOCID
  • ユーザのOCID
  • 鍵のフィンガープリント

設定例は以下のとおりです。

※セキュリティ上公開できない部分は X になっていますが、これらは任意の英数字になります。

[DEFAULT]
key_file=/home/opc/.oci/oci_api_key.pem
region=us-phoenix-1
tenancy=ocid1.tenancy.oc1..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
user=ocid1.user.oc1..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
fingerprint=XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

確認

ociコマンドでなにかしてみて、先ほどのようなエラーメッセージが出なくなれば正しく設定できています。

以下の例では、オブジェクトストレージにあるChihiroBucketというバケットのファイル一覧を取得します。

$ oci os object list -bn ChihiroBucket
{
  "data": [
    {
      "md5": "VC+BNIk9Xh3T7+rf9Ss4pQ==-12",
      "name": "TestFile.txt",
      "size": 8475,
      "time-created": "2018-11-24T08:23:19.907000+00:00"
    }
  ],
  "prefixes": []
}

Oracle Cloud Infrastructure CLIをインストールしてみた

この記事は「Oracle Cloud Advent Calendar 2018」の12月2日の記事として書かれています。

 ほとんどの人は Oracle Cloud を初めて聞くと思いますが、Oracle はストレージのIOやネットワークのIOに強いIaaS、長年培われてきたミドルウェアをクラウドに対応したPaaS、これらの上で動くアプリケーションをSaaSとしてOracle Cloud上で提供しています。 参考: Oracle Cloud Infrastructure:サービス概要のご紹介

 他のクラウドベンダーと同様に Oracle Colud にも CLI が存在します。 このOracle Cloud Infrastructure (OCI) CLI はインストール用のシェルを実行するだけでインストールが完了します。 インストール用のシェルはGithub上にあるため、そのファイルをダウンロードしてbashで実行します。

curlコマンドでインストールシェルをダウンロードして、bashで次の様に実行します。
bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"

参考:
CLIのインストール
GitHub - oracle/oci-cli: Command Line Interface for Oracle Cloud Infrastructure

インストール中に以下を聞かれますが全てデフォルトで大丈夫です。

  • インストール先
  • ociの実行ファイルの場所
  • OCIスクリプトの場所
  • PATHを通すかどうか
  • rcファイルの場所

以下のようにInstallation successful.が出れば成功です。ociと入力するとOCI-CLIを使えるようになります。

 > bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current Dload  Upload   Total   Spent    Left  Speed
100  6226  100  6226    0     0  15428      0 --:--:-- --:--:-- --:--:-- 15410
Downloading Oracle Cloud Infrastructure CLI install script from https://raw.githubusercontent.com/oracle/oci-cli/6dc6                                                                                                                        1e3b5fd2781c5afff2decb532c24969fa6bf/scripts/install/install.py to /tmp/oci_cli_install_tmp_6faf.
######################################################################## 100.0%
Python3 not found on system PATH
Running install script.
-- Verifying Python version.
-- Python version 2.7.5 okay.
-- Verifying native dependencies.
-- Unable to verify native dependencies. dist=oracle linux server, version=7.6. Continuing...

===> In what directory would you like to place the install? (leave blank to use '/home/opc/lib/oracle-cli'):
-- Creating directory '/home/opc/lib/oracle-cli'.
-- We will install at '/home/opc/lib/oracle-cli'.

===> In what directory would you like to place the 'oci' executable? (leave blank to use '/home/opc/bin'):
-- Creating directory '/home/opc/bin'.
-- The executable will be in '/home/opc/bin'.

===> In what directory would you like to place the OCI scripts? (leave blank to use '/home/opc/bin/oci-cli-scripts'):                                                                                                                        
-- Creating directory '/home/opc/bin/oci-cli-scripts'.
-- The scripts will be in '/home/opc/bin/oci-cli-scripts'.
(略)

===> Modify profile to update your $PATH and enable shell/tab completion now? (Y/n):

===> Enter a path to an rc file to update (leave blank to use '/home/opc/.bashrc'):
-- Backed up '/home/opc/.bashrc' to '/home/opc/.bashrc.backup'
-- Tab completion set up complete.
-- If tab completion is not activated, verify that '/home/opc/.bashrc' is sourced by your shell.
--
-- ** Run `exec -l $SHELL` to restart your shell. **
--
-- Installation successful.
-- Run the CLI with /home/opc/bin/oci --help