【改良版】共感と励ましで継続を！毎朝話しかけてくれるアンガーログBotに進化

こんにちは。
デジタルの勉強を始め、手にした知識を駆使して **「自分のイライラをコントロールしたい！」** とアンガーログをつけられるBotを作成してみました。
前回、**対話形式でログを記録する**ところまでは成功！
今回は三日坊主で終わらないために、少し機能を追加しました。
# 寄り添ってくれる感、増し増しに。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">アンガーログBotさん、改良版！<br>共感増し増しで、支えてもらう！！笑<a href="https://twitter.com/hashtag/protoout?src=hash&amp;ref_src=twsrc%5Etfw">#protoout</a> <a href="https://t.co/swDx2cF8rw">pic.twitter.com/swDx2cF8rw</a></p>&mdash; 紺 (@navy_blue919) <a href="https://twitter.com/navy_blue919/status/1679130198044733443?ref_src=twsrc%5Etfw">July 12, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

### 絶対に三日坊主で終わらせたくない！
前回の記事でアンガーログBot作成の経緯や作り方を書いています。
今回はその改良版になります！

https://qiita.com/navy-blue919/items/0d384a1ce1f7952c52c5

継続が苦手な私。イライラの記録を一人で黙々とつけ続けるのは無理…。
励ましや共感があれば、続けることができるのでは！？と今回の改良に臨みました！

前回のBotは
**1.イラッとした出来事を話しかける
2.Botさんが記録＆返信してくれる
3.怒りレベルを伝える
4.Botさんが記録＆返信してくれる**
と、アンガーログをつける部分を作成しました。

今回は
**`0.毎朝、「ログがんばろー」メッセージを送ってくれる`
1.イラッとした出来事を話しかける
2.Botさんが記録＆返信してくれる`(ランダム)`
3.怒りレベルを伝える
4.Botさんが記録＆返信してくれる`(ランダム)`**
と、本当に会話して共感してくれているっぽさを増して
継続するために支えになりそうな部分を追加修正しました。

# プッシュ通知とランダム設定
修正した部分をご紹介していきます。
### 使用したツール
* Line Deveropers
* Make(旧integromat)
* Googleスプレッドシート

### 1.毎朝の「おはよう、がんばろうね」LINEの設定 
とっっっっても簡単でした！
Makeで別シナリオを作成。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/93d47ba5-8fcd-d7b3-8817-4514fb8207f7.png)
「Send a Push Message」このモジュール1つだけ(笑)
これで毎朝6：00に「おはよう、がんばろうね」LINEが届きます^^

LINEスタンプのIDは[👉こちらから👈](https://developers.line.biz/en/docs/messaging-api/sticker-list/)

### 2.会話っぽく、返信の文章をランダムにする設定
1つめの相づち、2つめの相づちをそれぞれ何パターンか作成してその中からランダムに返信してもらいます。
#### 2-1.返信のパターンをスプレッドシートで作成
<img width="30%" src=https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/7fbcb838-3150-fb4f-6b59-c6c12b8c956c.png>

A列の `メッセージの種類` に1つめの相づち か 2つめの相づちかをそれぞれ「1」「2」として入力。
B列の `メッセージの内容` に相づちとして返信してほしいメッセージを入力しておきます。
#### 2-2.ランダムに返信してもらうための「？？？？？」なモジュール
ここからが難題でした…。
今でもしっかりは理解してません💦
でも、参考記事を見て組み立ててみると完成したんです…！！！

https://qiita.com/cal_mgc/items/70435b7af8ce89ad1241

ありがとうございます！！！！！！！！

メインシナリオの全体像はこうなりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/5a10e8f3-3a93-4ea4-66a2-c7c04faeabfb.png)
①イラッとした出来事を聞いて、ランダムに共感の返信をくれる。(＆スプレッドシートに記録)
②怒りレベルの数字をスプレッドシートに記録。
③怒りレベルを聞いて、ランダムに労いの返信をくれる。

①と③のルートでメッセージをランダムに送ってもらうために使用したが
`Google Sheets` `Array aggregator` `Tools` の3つのモジュールです。

最初に`Google Sheets`の設定です。(※①、③ルートの最初のモジュールです。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/db31c7e7-56aa-3945-9e8d-9231345fd099.png)
フィルターでメッセージの種類を指定します。
**条件に「Equal to」を選択し①ルートは1、③ルートは2と指定**します。

次に`Array aggregator`の設定です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/67c3c375-0dc1-0f82-4d22-2a3e11d8e87c.png)
このモジュールが何者なのかまだよく分かっていません…。
が、設定内容は上図の通りです。
**ルート①も③も全く同じ設定**です。


次は`Tools`の設定です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/f99c3a92-42e9-ceff-fc1c-ac4c86d4a472.png)
こちらも**ルート①と③は全く同じ設定**です。
「Variable Value(変数値)」の欄に数式のようなものを入力します。
ほぼ意味は理解しておりません^^;写しただけです^^;
でもこれでランダムにメッセージを返してくれるんです！すてき。
数式(？)入力時に出てくる補助画面のタブを色々切り替えると必要なものが揃います！


<details><summary>わかんないなりに調べてみたこと</summary>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/ce7efa10-9ab8-28d4-1940-b8024c7cf527.png)

シナリオ完成後、Run Oneceすると各モジュールがどのように動いたかを🔍マークから確認することができます。
その様子が上図です。
全然分かりませんが、
`Array`はプレッドシートの内容を「配列」とやらに変換してくれている…っぽい…？
という理解で留まっております…💦
そして`Tools`で相づちが○種類あるうちの△種類目を選んだよ！
という結果を返してくれているような気がします…笑
そんな理解でもシナリオは動かせました！すごい！笑
</details>


#### 2-3.その他のモジュールは前回の設定から変えていません！
その他使用モジュールの詳細設定は前回記事をご参照ください！

https://qiita.com/navy-blue919/items/0d384a1ce1f7952c52c5

ごめんなさい、1カ所だけ変えていました💦

<img width="70%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/e6e1d894-88a3-3aef-88cf-bb043140b58e.png">

ルート①、③ともに`Send a Reply Message`の赤枠内だけ変更しています。

これで **ランダムに返事を返してくれます^^**
パターンはありますが、会話してくれてる感じがして自分では満足！
イライラしているときにはこんな共感でも若干心が落ち着きます…(笑)

### 3.おまけ　スプレッドシートに記録される日付、日本時間にしたい！！

アンガーログなので、日時もスプレッドシートに記録したいと考え、改良前はA列に`Timestamp`を記録するよう指定していました。
しかし…**日本時間じゃない！！！表記も見慣れない！！**

<img width="70%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/21e50ba9-24fc-67de-9c54-081f569bcb6a.png">

送信日より**9時間前(つまり、グリニッジ標準時)が記録**されてしまいます…。
こんなの、振り返ったとき見辛すぎます…。調べて修正してみました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/d98a1441-c3db-c288-1283-58f6c15a377c.png)

①ルートの2回目登場のの`Google Sheets`モジュールがアンガーログの記録を指示しているので、この中身を少し修正します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/6489a74f-c2c4-ad09-a4fc-254c2a7c1304.png)

A列への記録内容の指示を図の通りに変更します。入力時に出てくる補助画面のタブでカレンダーマークを選ぶと`formatDate`や`now`を入力できます。
この内容で設定すると…

<img width="70%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/d86a6fea-3103-bddc-ba37-4a5539968eb7.png">

見慣れた表示になりました！！！時間も…

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3459210/13e1e208-9bf7-59ad-dcee-8b1b86d3e053.png)

**日本時間になっています！！！！** やったぁ^^

タイムゾーンは[ここから](https://www.hulft.com/help/ja-jp/WebFT-V3/COM-ADM/Content/WEBFT_ADM_COM/TimeZone/timezonelist.htm)探しました！！

# もう1個だけやりたかったこと…
自分の思い描いていたように作っていくことができ大満足です！！！
ただ、1つだけ心残りが…
記事を見ていただいた方より **「数字の入力は[クイックリプライ](https://developers.line.biz/ja/docs/messaging-api/using-quick-reply/"クイックリプライを使う")を使ってみると良いかもです」** とアドバイスをいただいており、やってみる気満々でした！！
1～10までの数字を入力するより、**ボタン1つタップで済む**なら簡単ですもんね！！
しかし…調べてみても全くちんぷんかんぷん…。
サンプルコードは出てくるのですが、それをどこに入れれば良いのか全く分かりません…(; ;)
今回は泣く泣く断念…。
**もっと勉強をして、使い方を習得したら実装してみようと思います！！**

ここまでお付き合いいただきありがとうございました^^