ガチャつくブログ

IT系のお勉強のために、やってみたことをアウトプットしていきます。

Google Home Mini で遊ぶ - Twitterでフォローされたら「戦闘力・・・たったの5か・・・ゴミめ・・・」としゃべらせる -

はじめに

最近流行りのスマートスピーカー

Google Home Mini』を使って遊びたいと思います。

tmt-tty.hatenablog.com

 

今回はTwitterでフォローされたらしゃべらせるを実装してみます。

フォローされたら

「戦闘力・・・たったの5か・・・ゴミめ・・・」としゃべらせてみますwww

f:id:tmt-tty:20181114093531j:plain

 

 

必要なもの

  1. Google Home MIni

    store.google.com

  2. Twitter
    Twitterのフォローがトリガーなので、必要です。

    twitter.com

  3. IFTTT
    Twitter⇔Slackを連携させるために使用します。
    Webサービス同士を連携させる事ができるツールです。

    ifttt.com

  4. Raspberry Pi
    Google Home Mini にしゃべらせるためには、
    google-home-notifier というプログラムが必要です。
    google-home-notifierが動く環境あれば、ラズパイ以外でも構いません。
    私は、Rapberry Pi Zero Wを使用しています。

    www.switch-science.com

  5. Slackワークスペース
    一旦Slackを経由させるので必要です。

    slack.com

  6. Google Apps Script
    IFTTT⇔Raspberry Pi(google-home-notifier)を繋ぐ間に必要です。

    developers.google.com

構成図

登場人物が多いので、図にまとめます。

図の流れでTwitterフォローをトリガーにして、Google Home Miniに発話させます。

 

f:id:tmt-tty:20181114142705p:plain

 

手順

<前提>

  • Google Home Miniは使用できる状態になっていること。
  • Raspberry Pigoogle-home-notifierが起動してPOSTできる状態になっていること。
    この辺はたくさんの方が記事にされているので、ここでは割愛します。
    下記の様な記事を参考にしてください。

    qiita.com

  • google-home-notifier経由で音声ファイル(mp3)を再生できる状態になっていること。
    下記の記事を参考に実装しました。

    note.mu

 

Google Apps Scriptの実装をやっていきます。

まず、google-home-notifierを起動した時に生成される、外部公開用URLを確認しておきます。
google-home-notifierに同梱されているngrokと呼ばれるプログラムの機能です。

 

Raspberry pi で以下のコマンドを実行します。

curl localhost:4040/status | grep ngrok.io

表示された https://xxxxx.ngrok.io の部分を控えておきます。

 

続いて、Google Apps Scriptを作成します。

Googleドライブを開き、新規 > その他 > Google Apps Script をクリックします。

f:id:tmt-tty:20181114150702j:plain

 

コード.gsに次のコードを貼り付けます。

UrlFetchApp.fetch(
  'https://xxxxx.ngrok.io/google-home-notifier', // google-home-notifierのエンドポイント
  {
  'method': 'POST',
  'contentType': 'application/x-www-form-urlencoded',
  'payload': {'text' : "http://xxxxx/xxxxx.mp3"} 
  }
);

※xxxxxはご自身の環境に合わせて編集してください。

 

プロジェクトを公開します。

公開 > ウェブアプリケーションとして導入 をクリックします。

f:id:tmt-tty:20181114151736p:plain

 

プロジェクトバージョン:新規作成

次のユーザーとしてアプリケーションを実行:自分

アプリケーションにアクセスできるユーザー:全員(匿名含む)

として、"導入"をクリックします。

f:id:tmt-tty:20181114152039p:plain

 

現在のウェブアプリケーションのURL を控えておきます。

f:id:tmt-tty:20181114213727p:plain

 

続いて、SlackからGoogle Apps Scriptを連携させる設定をします。

SlackのAppディレクトリで"発信Webフック"を追加します。

f:id:tmt-tty:20181114152951p:plain

 

発信Webフックの設定をします。

チャンネルはSlackのどのチャンネルを監視するかです。

URLにGoogle Apps Script の"現在のウェブアプリケーションのURL"を貼り付けます。

 

f:id:tmt-tty:20181114153223p:plain

 

最後に、TwitterでフォローされたらSlackに通知するIFTTTのレシピを作成します。

f:id:tmt-tty:20181114135521p:plain

 

thisTwitterの"New follower" thatにSlackの"Post to channel"を設定します。

設定は以下の様になります。

Messageは何でも構いません。

f:id:tmt-tty:20181114135845p:plain

 

動作確認

フォローされないことには、発動しないので。。。

IFTTTで別のトリガーを作って、試してみました。

youtu.be