Google Homeからマストドンにトゥートする方法

どうも、sasachi.です。
Google Homeに話しかけることによりマストドンにトゥートできるようにしました。
面倒でやってなかったのですが、いざやり始めると思ったより簡単にできました。

前提

必要物

  • Google Home
    もちろんですね。
  • IFTTT
    Googleアシスタントで受け取ったテキストをマストドンにAPI経由で飛ばします。

参考にしたサイト

Twitter の投稿を IFTTT で Mastodon へ転送する。 – Qiita

手順

手順はこんな感じです。
※インスタンスはmstdn.jpを想定していますが、ほかのインスタンスで行う場合は適宜置き換えてしてください。

1.アプリケーションの登録

画像で説明します。


まずwebクライアントの右端にある「ユーザー設定」をクリックします。


設定画面で左下にある「開発」をクリックします。


「新規アプリ」をクリックします。


上の画像の通りに入力し、最後に「送信」を押します。

2.ターミナルでの操作

本当に申し訳ありません。
ターミナルの操作が全く不要だったので、打ち消し線で消しています。

その代わりに必要となる操作を下に書いていますのでご覧ください。

チールさん( @thiele_jp )に情報提供いただきました。
ありがとうございます!

curlコマンドが使える環境下で以下のコマンドを実行してください。

curl -X POST -d “client_name=先ほど決めたアプリ名&redirect_uris=urn:ietf:wg:oauth:2.0:oob&scopes=write&website=先ほど入力したurl” -Ss https://mstdn.jp/api/v1/apps

すると、文字列が返ってきます。

{“id”:”153049″,”name”:”先ほど決めたアプリ名”,”website”:”先ほど入力したurl”,”redirect_uri”:”urn:ietf:wg:oauth:2.0:oob”,”client_id”:”64文字の文字列”,”client_secret”:”同じく64文字の文字列”}

64文字の文字列が2つ返ってきますが、これらは必ず控えておいてください。

続いて以下のコマンドを実行してください。

curl -X POST -d “scope=write&client_id=64文字の文字列&client_secret=64文字の文字列&grant_type=password&username=ご自身のマストドンアカウントのメールアドレス&password=あなたのパスワード” -Ss https://mstdn.jp/oauth/token

そうすると、以下の文字列が返ってきます。

{“access_token”:”64文字の文字列”,”token_type”:”bearer”,”scope”:”write”,”created_at”:1510759528}

こちらの64文字の文字列を控えておいてください。

2.アクセストークンの確認

以下の手順で進めてください。

マストドンwebクライアントの設定→開発から、先ほど作成したアプリ名をクリックします。

ここの、「アクセストークン」という部分を控えておいてください。

3.IFTTTの設定

IFTTTにアクセスしてアカウント登録を済ませた後、画像の通りに進めてください。


右上のアカウント名をクリックします。


「New Applet」をクリックします。


「This」をクリックします。


検索して、「Google Assistant」をクリックします。


「Say a phrase with a text ingredient」をクリックします。


画像の通りに入力します。
「マストドン」の部分を置き換えてもいいですが、「トゥート」にすると「ルート」と認識されてしまうのでうまくいきません。


画像の通りに入力して、「Create trigger」をクリックします。


「that」をクリックします。


検索して、「Webhooks」をクリックします。


「Make a web request」をクリックします。


①の部分に「https://mstdn.jp/api/v1/statuses」と入力し、Methodの部分を「POST」と選択します。


②の部分を「application/x-www-form-urlencoded」と選択し、③の部分に「access_token=先ほど控えたアクセストークン&status= {{TextField}} from Google Home&visibility=public」と入力して、Create actionをクリックし、遷移後の画面で「Finish」を選択します。
この際64文字の文字列は、2で最後にサーバーから返ってきた値に入っている64文字の文字列を入力します。

これで完了です。
しばらく待ってからGoogle HomeにOk googleで起動した後「マストドン 〇〇」と言ってみましょう。

Google Homeからトゥートテスト

はい、こんな感じです。よく見るとクライアント名が「sasachi’s google home」になってますよね。

ちなみに、「from Google Home」を消したければ、IFTTTのActionを設定する画面の③にある「from Google Home」を消せば消えます。

まとめ

結構解説すると長いですね……。
ともあれ、完成しました。
ぜひGoogle Homeでトゥートしてみてください!

SNSでもご購読できます。