Alexa買い物リストに登録した内容をDynalistに反映


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で以下のように指定します。

  1. New Appletを選択
  2. Thisに「Amazon Alexa」を指定
  3. 「Item added to your Shopping List」を選択
  4. Thatに「Webhooks」を指定!
  5. 「Make a web request」を選択

するとwebhook設定を記入する画面になります。

私の場合は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側の買い物リストは溜まる一方なので、適当に時期を見て削除しましょう。