【IFTTT入門】Alexaの買い物リスト更新をDiscordに通知する

# はじめに
この記事はIFTTTの機能紹介や設定方法がメインです。

# 背景
長年使っていたGoogleHome[^1]の調子が悪くなったのでAmazonEchoに買い替えました。これを機にいろんな活用法を考えています。
[^1]: NestじゃなくてHomeです。2018年頃に入手したので約6年間（6年ってマジ！？）も活躍してくれました。

この第1弾として家族の買い物リストを運用していきます。基本機能だけで使うには少し不便で、以下の3点を解決したいです。
* リストを家族で共有する。ただしAlexaアカウント自体の共用はNG。
* 外出先で確認するためにスマホで表示する。ただし新しいアプリは必要としない。
* 開発と運用にコストがかからない。

我が家ではDiscordを運用しているので、買い物リストをDiscordから確認できれば前2つの要件は満たせます。
低コストでのシステム構築ですが、今回は[IFTTT](https://ifttt.com/)を使います。

# 使用するサービス一覧
残念ながらIFTTT上のAlexaサービスは2023年10月末に終了した[^2]のでIFTTTとAlexaの中継地点が必要になります。
これは以下のサイトを参考に[Todoist](https://todoist.com/)を使います。
[^2]:[公式によるアナウンスはこちら](https://ifttt.com/explore/amazon-alexa-alternatives)


https://zenn.dev/wmoto_ai/articles/c7ad0b897aca3d

ということで、今回使用するサービスと役割は以下の通りです。
* Alexa：音声認識のUI。
* Todoist：買い物リストの実態を管理する。
* IFTTT：TodoistからDiscordに情報を伝達する。
* Discord：買い物リストを確認する。
 
# 1. Alexaの買い物リストをTodoistに紐づける。
Todoist公式が手順を紹介してるのでそちらを参照してください。
https://todoist.com/ja/help/articles/use-amazon-alexa-with-todoist-OKO3lHwv

# 2. IFTTT設定 Todoist編
※IFTTTアカウントの登録は省略します。

まずはアプレット[^3]を作る画面に移動します。
トップ画面右上の`Create`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535581/0753d119-ccdc-5b13-0270-8d4ae4113540.png)
[^3]:[IFTTTではレシピと表現するらしい](https://ja.wikipedia.org/wiki/IFTTT)ですが、この記事ではより一般的な表現にします。


ここからTodoist側を設定します。
`If This`欄の`Add`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535581/21fb5456-efd2-19d8-1f99-7efb187e094d.png)

サービス選択画面に遷移しますので、検索するなどして`Todoist`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535581/88973734-9374-5ab9-7fbf-b3517112af01.png)


Todoistのトリガー一覧が表示されます。買い物リストに追加されたらDiscordに通知させたいので、今回は左上の`New task created`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535581/abb236b9-51f1-cbd1-e054-e9c023f2af20.png)

TodoistにIFTTTとの接続を許可する必要があります。`Connect`をクリックし、画面の指示に従ってアクセスを許可してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535581/9715a637-b026-98f5-6cc9-d5e1cb2f16a1.png)

トリガーの設定画面に移ります。`Todoist account`と`Project to watch`に間違いがないことを確認したら`Create trigger`をクリックします。
Todoist側の設定はこれで完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535581/aec34369-392c-850b-5187-e5b29b50da45.png)



# 3.IFTTT設定 Discord編
続いてDiscord側を設定します。`Then That`の`Add`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535581/d571038d-9eb3-b38f-af8b-4b12b58b57eb.png)

サービス選択画面から`Discord`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535581/db93517e-5af1-a738-3a49-244d545f2387.png)

Discordのアクション一覧が表示されます。今回は`Post a message to a channel`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535581/822381cd-e0fa-9506-1e2f-252635b12b8b.png)

Todoistと同じくDiscordにIFTTT接続を許可します。Connectをクリックし、画面の指示に従ってアクセスを許可してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535581/179ac7e5-f028-c025-d7c0-595ee454f224.png)

`Which Channel?`に通知先のチャネルを選択してください。
`Message`と`Alowable mentions`はデフォルトから変えていません。後から簡単にカスタマイズできます。
上記の設定が完了したら`Create action`をクリックします。これでDiscord側の設定が完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535581/78524dbf-7f84-0a53-3f66-7f27d47123f6.png)

# 4. IFTTT設定 有効化編
最後にアプレットを有効化します。`Continue`をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535581/7adb88af-5ed1-2609-b836-b78c8d04f7e5.png)

`Applet Title`は画像のような内容が自動で生成されます。
これも後から簡単に変えられるのでデフォルトのままとします。
`Receive ...`は今回のユースケースならオフのままでよいでしょう。
設定が完了したら`Finish`をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535581/64e9ca23-a093-9648-ec59-9c30b5929dbe.png)

以上でIFTTTの設定は完了です。超簡単ですね。

# 動作テスト
AmazonEchoに`Alexa, 買い物リストに牛乳を追加して`とリクエストしました。
少し待つとDiscordに以下のメッセージが届きました。問題なく動作してることが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3535581/ef35fbb4-485a-2750-5557-ca0b6b8b49a6.png)
あとはメッセージの内容を調整するだけですね。無駄な情報が含まれているのでそこは消して、細かいところは運用しながら調整していきます。
メッセージの調整は[Discordの設定](#3ifttt設定-discord編)を編集すればOKです。

# まとめ
各サービスのアカウントさえ持っているなら、完全初見でも5分～30分で構築できるでしょう。
連携できるサービスが限られることは残念ですが、無料で簡単にここまでできるのは大きな強みです。