(non-Cloudflare Topic) direct と daab をコンテナで起動してみる
direct と daab
direct とは株式会社L is B が提供しているビジネス用チャットサービスです。
daabとはdirect agent assist botの略称でdirect向けボットサービスです。そしてdirect SDKがそれを開発できるツールです。
こちらに開発者向け情報がまとまっています。
この記事では2回連載で以下を行っていきます。
- Daab を活用したBot環境をコンテナで起動
- 1.で出来上がったBotのコンテナ連携
0. 必要なもの
このハンズオンでは以下が必要です。
メールアドレス2つ
AWS アカウント Amazon EC2/Amazon Linux 2023
1. アカウント開設
無料のアカウントが開設でいますのでこちらからアカウントを開設します。登録を行うとメールが届きますのでそちらの内容に従って認証すれば開設できます。
2. 組織の設定とBot用アカウント作成
Chatbotを作成するためにBotを起動させるアカウントを登録する必要があります。管理者用アカウントは1.の手順で出来ていますので、それとは別にBot用アカウントを作成するのですが、その前にまず組織を作成する必要があります。
組織とは管理者により参加が許可されたユーザーの一覧が集まる空間を指します。directでは組織に参加していないユーザーはコミュニケーションを行うことができません。
まず組織の画面に移動し組織の作成
をクリックします。
組織名を適当につけます。
会社名、氏名、住所、電話番号、などが求められますので適宜必要な情報を入力して組織を作成
ボタンをおします。
確認ダイアログでOK
を押します。
組織ができるとユーザーの招待画面になります。
役割
をユーザーとして招待
ボタンを押します。
メールが届きますので適当なパスワードを設定しログインします。パスワードは後ほど使いますので覚えておいてください。
組織への招待を承認
します。
作業が終わったら一度管理者としてログインしなおしておきます。
3. Amazon Linux 2023 での Docker 設定
この手順ではAmazon EC2そのものの起動は割愛します。起動するインスタンスは無料利用枠の最小で問題ありません。
sudo yum install docker
でインストールを行います。
sudo systemctl start docker
systemctl status docker
を実行して以下のような情報が表示されれば起動は完了です。
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; preset: disabled)
Active: active (running) since Mon 2024-07-15 05:03:49 UTC; 12s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Process: 26734 ExecStartPre=/bin/mkdir -p /run/docker (code=exited, status=0/SUCCESS)
Process: 26735 ExecStartPre=/usr/libexec/docker/docker-setup-runtimes.sh (code=exited, status=0/SUCCESS)
Main PID: 26736 (dockerd)
Tasks: 7
Memory: 31.9M
CPU: 324ms
CGroup: /system.slice/docker.service
└─26736 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit nofile=32768:65536
次にAmazon Linux 2023 用のDocker イメージをレポジトリからpullします。
sudo docker pull amazonlinux:2023
2023: Pulling from library/amazonlinux
ee5ee7078986: Pull complete
Digest: sha256:d5b9690df4ce1a70d738d8c8f7a6b4275008df95d4ddc2435e4e8e4352db61a5
Status: Downloaded newer image for amazonlinux:2023
docker.io/library/amazonlinux:2023
次に先ほどpullした素の状態の Amazon Linux 2023 を起動します。
sudo docker run -it -d -p 18080:8080 --name daab amazonlinux:2023
以下のコマンドで起動状態を確認できます。
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
274793d6f332 amazonlinux:2023 "/bin/bash" About a minute ago Up About a minute 0.0.0.0:18080->8080/tcp, :::18080->8080/tcp daab
ではここからコンテナの中身に入りdaabのインストールを行っていきます。
sudo docker exec -it daab bash
mkdir daab
cd daab
(Node15移行だとルートディレクトリでの動作ではエラーが出ますので注意してください)
まず最初に動作に必要なNode
とnpm
をインストールします。
yum install npm
npm -v
次にdaab本体をインストールします。
npm install -g daab
インストールが完了したらボットを初期化します。
daab init
全てEnter
でデフォルトのまま初期化を行います。
? package name
? version 0.1.0
? description
? author
? choose files you need
daab initialized.
次に起動を行うために先ほど作成したbot用アカウントでログインします。
daab login
daab login
[2024-07-15 05:16:57] Not enough parameters provided. I need a access token
[2024-07-15 05:16:57] WebSocket opened.
Email: harunobu@cloudflare.com
Password:
logged in.
ログインが完了したらbotを起動します。
daab start
4. テスト
ではdirectの画面にメイン管理者としてログインしてチャットを開始します。
ping
と入力するとPONG
と戻ってきます。
Linux側でexit
を入力しても引き続き動作します。
今度は以下のコマンドでdaab用コンテナを停止させます。
sudo docker stop daab
再度ping
と入力すると反応が戻ってこなくなるため、コンテナで正しくチャットボットが起動していたことがわかります。
5. 環境の簡単な解説
daab login
を行った時点で.env
にクレデンシャルが書き込まれます。
cat .env | grep HUBOT_DIRECT_TOKEN
daab はこのクレデンシャルを利用してdirectと通信を行っています。
起動されたdaabはdirect側と通信をしながらユーザー(今回の場合は管理者)からのチャットの呼びかけを待ち構えています。つまりチャットボット本体はdirectへアップロードされなくても動作する、という点が注意点です。
Discussion