前回、MacroDroid で LINE を送れるようになったという話を書きました。
LINE は送れるようになって本当に嬉しかったんですが、別に返信がほしいわけではないので、LINE じゃなくてもいいかな…と思い始めました。
もちろん、LINE を送れる仕組みはいつか役に立つと思うのでとっておきます。
以前から『Webhook』という仕組みがある、ということはわかっていたんです。
しかし、いまいち理解ができていなくて。
ですが、↓のサイトを見ていてなんかわかったような気がしました。
正しいかわかりませんが、『MacroDroid の Webhook』に関する私の理解は以下のとおりです。
MacroDroid をインストールすると、MacroDroid さんから特定の URL が割り振られます。
端末ごとに別のモノが割り振られるので、同じ Google アカウントでログインした別の端末だと、別の URL が割り振られます。
https://trigger.macrodroid.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/
こんな感じ。
『XXXXX~』の部分が端末ごとに違ってきます。
これは他の人には教えないほうがいいです。
端末を勝手に操られてしまう可能性があります。
リセットする方法もあるのでご安心を。
例えば、あるマクロを作成して、遠隔からそのマクロを起動させたい場合、そのマクロのトリガーに『Webhook(URL)』を選びます。
出てきた『識別 ID』の欄は自分で好きに決められます。
例えば、再起動をするマクロなんだったら、『reboot』とか。
そうすると、その下の『URL』の欄が
https://trigger.macrodroid.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/reboot
になります。
Web ブラウザとかにこの URL を入れて『Enter』を押すと、それがトリガーになってそのマクロのアクションが動き始める、という仕組みです。
他のマクロのトリガーにしたいときは、『識別 ID』を他の文字列にすれば、それがそっちのマクロのトリガーになります。
すごい仕組みだなー。
マクロを動かしたい端末と、トリガーの URL にアクセスする端末は別で OK です。
もちろん一緒でも OK。
トリガーの URL にアクセスする端末に、MacroDroid がインストールされている必要もなし。
PC のブラウザや iPhone のブラウザでこの URL にアクセスしてもいいんです。
今回私が作りたいのは、私のスマホに Google カレンダーの通知が表示されたタイミングで、息子のスマホに何らかの通知を出すマクロです。
やることは以下のとおりです。
- 息子のスマホの MacroDroid の Webhook の URL を調べる
- 息子のスマホで『Webhook の URL にアクセスがあったら通知を出す』というマクロを作る
- 私のスマホで『Google カレンダーの通知おすそわけ』のマクロを作る
1. 息子のスマホの MacroDroid の Webhook の URL を調べる
息子のスマホで MacroDroid を開き、『マクロの追加』をタップします。
トリガーに『Webhook(URL)』を選びます。
その画面で『URL』の欄に表示されている Webhook の URL をコピーして(近くのアイコンをタップするとでできます) LINE などで私宛に送ります。
忘れたりうっかり書き換えしたりしないように、MacroDroid の『変数』に『息子 Webhook』などの名前で文字列として保存しておきます。
2. 息子のスマホで『Webhook の URL にアクセスがあったら通知を出す』というマクロを作る
息子のスマホで MacroDroid を開き、『マクロの追加』をタップします。
(先ほど↑で開いていた画面を利用しても OKです)
- ローカル変数に『Title』(文字列型)、『Msg』(文字列型)を作る
- トリガー: Webhook(URL)
識別 ID は『notification』なんかにしておく - アクション
- 通知を表示
タイトル: {lv=Title} ← ローカル変数『Title』
通知のテキスト: {lv=Msg} ← ローカル変数『Msg』 - 変数の値を消去: Title、Msg
- 通知を表示
Webhook がきたら通知を出す、というだけのマクロです。
3. 私のスマホで『Google カレンダーの通知おすそわけ』のマクロを作る
最後に私のスマホでの MacroDroid の設定です。
私は『息子に通知を出す』というアクションブロックをまず作りました。
- 入力変数に『Title』(文字列型)、『Msg』(文字列型)を作る
- アクション
- HTTP リクエスト(GET)
『URLを入力』のところに以下の文字列を入れる
{v=息子 Webhook}notification?Title={lv=Title}&Msg={lv=Msg}
- HTTP リクエスト(GET)
『HTTP リクエスト(GET)』というアクションを使っています。
MacroDroid で Webhook の URL にアクセスするのにブラウザを使うと、スマホのロックが解除されて画面がついているときじゃないと動かないです(多分)。
画面が消えていても Webhook の URL にアクセスするには、『HTTP リクエスト(GET)』というアクションを使えば可能でした。
最初は『Web サイトを開く』の『HTTP GET(Web ブラウザ不使用)』というチェックを ON にして使っていたんですが、その下に薄っすらと『このオプションは非推奨だから、『HTTP リクエスト』を使ってね』と書いてあったので使ってみました。
できてよかったです!
画面が消えていてもアクセスできる仕組みがなければ、前回の LINE の方で運用を続けていたと思います。
{v=息子 Webhook}というのは、『息子のスマホの MacroDroid の Webhook の URL を調べる』のところで調べた息子の Webhook の URL を、私のスマホの『変数』に保存しておいたので、マジックテキストで出しています。
ちなみに、自分の Webhook の URL もマジックテキストの『{webhook_url}』で出せます。
こっちは用意してくれているので、自分で変数に保存していなくても出せます。
『notification』の後ろ、『?』以降の文字ですが、ここに『Title=』と『Msg=』を『&』で繋いで出しています。
息子の Webhook の URL にアクセスするときにここにこのように文字をくっつけると、息子のマクロ側で用意している『Title』と『Msg』という変数にそれぞれこの文字が入ってくれる仕組みです。
次に、本体のマクロを作成します。
- ローカル変数に『初回』(真偽型)を作る
- トリガー: 通知が表示された時
アプリは『Google カレンダー』、『テキストコンテンツ』を『(息子の名前)*☆』 - アクション
- 分岐(IF)で変数『初回 = True』
- 息子に通知を出す
Title: {not_title}
Msg: 出かける準備を開始してください。 - 変数を設定: 『初回』を False に
- 息子に通知を出す
- Else
- 息子に通知を出す
Title: {not_title}
Msg: 出発してください。 - 変数を設定: 『初回』を True に
- 息子に通知を出す
- End If
- 分岐(IF)で変数『初回 = True』
前回同様、Google カレンダーの通知は2回出すことにしているので、初回の通知で準備開始、2回目の通知で出発を知らせるように、それぞれメッセージを変更しました。
初回かどうかを判定するのに『初回』という変数を作成して、実行するごとに True と False で反転させています。
これで、私のスマホの通知を息子のスマホにおすそわけすることができました。
ついでに、働きもののタブレットに Webhook する仕組みもくっつけて、息子の部屋の Alexa に『準備を開始してください』『出発してください』と言ってもらうようにしました。
まー、私が言うよりも Alexa に言ってもらったほうが聞くんですよ。あれ、『効く』かな?
今回の運用ができたおかげで『Webhook』の意味も(少しは)わかるようになったので、とっても嬉しいです。
しっかし便利な仕組みですね…。
いろいろ夢が広がりそうです。
コメント