#Alexa買い物リストに登録した内容をDynalistに反映
Amazon Alexaには買い物リストという機能があり便利そうなのですが、私の場合ToDoやメモ、買う物などはDynalistにまとめているため、見る場所が2つになるとどちらかを見忘れることになりかねません。
うまく連携できたらAlexaの買い物リストも使えるんだけどなあと考えていましたが、IFTTTに「買い物リストに追加した時」というthisがあったため、わりと簡単に実現できることに気が付きました。DynalistはIFTTTに対応していませんが、WebAPI経由で編集ができるため、ThatにWebHooksを指定することで連携できます。
以下、IFTTTとDynalistのアカウントは持っている前提で話を進めます。
##Dynalistのtokenを取得
まずはDynalistのAPIを使用するためのtokenを取得します。
DynalistのDeveloperページでSecret tokenを取得できます。
##IFTTTの設定
IFTTTで以下のように指定します。
- New Appletを選択
- Thisに「Amazon Alexa」を指定
- 「Item added to your Shopping List」を選択
- Thatに「Webhooks」を指定!
- 「Make a web request」を選択
私の場合はDynalistをメインで使用しており、Alexa買い物リストからDynalistへ一方的に登録さえできれば良いので、そのように設定します。
Dynalist APIページを参考に埋めていきます。
- URL
- https://dynalist.io/api/v1/doc/edit
- Method
- POST
- Content Type
- application/json
Body部分は以下のように設定します。
{
"token":"*******",
"file_id":"xxxxxxxxxxxxxxxxxxxxxxxx",
"changes":[
{
"action":"insert",
"parent_id":"yyyyyyyyyyyyyyyyyyyyyyyy",
"content":"{{AddedItem}}",
"note":"{{AddedTime}}",
"index":-1
}
]
}
- token
- 先程取得したtokenを指定。
- file_id
- Dynalistのどのファイルに登録するのかを指定。取得方法は後述。
- action
- 登録するので
insert
を指定。 - parent_id
- どのアイテムの下に登録するのかを指定。取得方法は後述。
- content
- 買い物リストの内容そのまま登録したいので
{{AddedItem}}
を指定。 - note
- ノート部分に記載される内容なので、登録時刻
{{AddedTime}}
を指定。 - index
- リストの最後に登録したいため、
-1
を指定。最初に登録したい場合は0
を指定する。
###file_idとparent_idの取得方法
Dynalist上で登録したいアイテムのメニューを開き
、「Get Link」を選択すると、
以下のようなURLが取得できます。
https://dynalist.io/d/xxxxxxxxxxxxxxxxxxxxxxxx#z=yyyyyyyyyyyyyyyyyyyyyyyy
xxxxxxxxxxxxxxxxxxxxxxxx部分がfile_id、yyyyyyyyyyyyyyyyyyyyyyyy部分がparent_idとなりますので、BODY内にそのまま指定します。
##完成
Alexaに「買い物リストにxxxを追加して」と言ってみて、Dynalistに登録されたら成功です。
Alexa側の買い物リストは溜まる一方なので、適当に時期を見て削除しましょう。