SREがLoGoチャットボットを作ってみた

パブリテック事業部でSREを担当している大場です。
先日、LoGoチャットボットの理解を深めるため、自分でボットを作成してみたのでノウハウを書き留めておこうと思います。

LoGoチャットボットとは

パブリテック事業部では、自治体さま向けにLoGoチャットというビジネスチャットを提供していますが、あわせてLoGoチャット上で動作するボットもご利用いただいています。
LoGoチャットはdirectのOEM製品であるため、「daab SDK」を使ってボットを開発することができます。
daab SDKの詳細は以下を参照してください。
daab デベロッパー | daab デベロッパー

※実際にLoGoチャットボットを動かすには、LoGoチャットのアカウントが必要です。

「daab SDK」を使ってみる

機能としては、特定のメッセージを投稿するとボットが返事をしてくれるというだけのシンプルなものです。
Node.jsで実装しますが、実際のコードはこちらです。

'use strict';

module.exports = (robot) => {
  robot.hear(/心の俳句|おはようございます|おはよう$/i, (res) => {
    const haiku_list = [
        "草むしり いいことなんて たぶんない",
        "やわらかく おいしいものを 我は所望す",
        "夏の日に ゴキブリ退治 光る汗",
         == 省略 ==
        "春がきて それがすぎたら 次は夏"
    ];
    let idx = Math.floor(Math.random() * Math.floor(haiku_list.length));
    res.send({
        text: haiku_list[idx],
    });
    res.send({
      text: "友蔵 心の俳句",
    });
  });
};

robot.hearでメッセージを受け取り、res.sendでボットからメッセージを送信します。
今回は、”心の俳句”、"おはようございます"、"おはよう"のいずれかのメッセージを送信すると俳句のリストからランダムで選択したメッセージをボットが送信する処理になっています。
これでボットの実装は完了です。

動かしてみる

  • ボットのアカウントを準備する
    まずはボットのアカウントをLoGoチャットに参加させます。

  • daabのインストールとdaab initを実施する

$ npm install -g daab

$ daab init
? package name (作ったフォルダ名) 【そのままEnterでOK】
? version (0.1.0)  【そのままEnterでOK】
? description 【そのままEnterでOK】
? author 【そのままEnterでOK】
? choose files you need ~ 
> ( ) .cfignore
  ( ) .dockerignore
・・・略 
【そのままEnterでOK】

プロジェクトフォルダの中に以下のような構成(ファイル・フォルダ)が作成できていれば成功です。

$ ls -la
bin/
scripts/
external-script.json
package.json
  • ログインする
$ daab login
[2022-03-30 03:47:19]  WebSocket opened.    
Email: 【ボットのEmailアドレスを入力してEnter】
Password: 【ボットのパスワードを入力してEnter】
logged in.

$ cat .env  | grep HUBOT_DIRECT_TOKEN
HUBOT_DIRECT_TOKEN=【ランダムな文字列が追記されている】

正常にログインできると、.envファイルにHUBOT_DIRECT_TOKENが追記されます。

  • ボットを起動する
$ daab run 
npm WARN deprecated chokidar@1.7.0: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated

== 省略==

[2022-03-30 03:58:33]]  WebSocket opened.

WebSocket opened.が表示されれば起動完了です。

動きました!

最後に

簡単にボットを作ることができ、友蔵オタクのメンバーにも喜んでいただけましたw
実際はAWS ECSに乗せて動かしたりしているので、今後この辺りも書いていけたらと思います。

※こちらは弊社で提供するチャットボットに関する記事です。自治体様では本機能はご利用いただけませんのでご了承ください。

トラストバンクではエンジニアを募集しております!
ポジションにとらわれず、いろいろなチャレンジができますのでご興味ありましたら是非募集ページをご覧ください! www.wantedly.com