Alexaを喋らせるだけならGCPの永久無料枠を使うのも良いなと思ったけどGoogle Home Miniしか置いていない部屋もあるのでChromecastによる発話も対応するためにRaspberry PiでNode-RED環境を構築します。ちょっと長くなるので全4回の予定。
前回
前回はNode-REDのインストールと認証設定までを行いました。
今回はAlexaを喋らせるためのモジュール「node-red-contrib-alexa-remote2」をインストール、設定、喋らせてみるところまでを進めていきます。
Node-REDの管理画面にログイン
Raspberry PiのIPアドレスのポート1880番(例 192.168.1.100:1880)にアクセスして前回設定したID/Passwordでログインする。
もしログイン画面が表示されない、ID/Passwordを入力してもログイン出来ない場合はNode-REDが再起動出来ていないか、settings.jsの記述が間違っている可能性がありますので確認しましょう。
パレットの管理メニューからモジュールを追加
右上のハンバーガーメニューから「パレットの管理」を開く
パレット>ノードを追加>node-red-contrib-alexa-remoteを検索し、ノードを追加ボタンをクリック。 モジュールのダウンロード・インストールがバックグラウンドで実行される。(ちょっと時間がかかるかも)
インストールが完了したら左側のメニューにAlexa関連のノードが追加されている
Alexaに紐付けたAmazonアカウントの設定
まずは認証用のCookieを確認するためhttps://alexa.amazon.co.jp/ にアクセスしてログイン。 F12キーにてブラウザのデベロッパーツールを起動し、適当な音楽またはKindle本などをAlexaデバイスで再生する。 デベロッパーツールのNetworkタブに移動して「player」で検索しRequest Headersのcookie(x-amzn-dat-gui~~)をコピーしておく。
Alexa Routineノードをフローに追加しダブルクリックで設定画面を開く→Accountの右側にある編集アイコンをクリック
各種設定を入力して追加しアカウント設定は完了
項目 | 値 |
---|---|
Auth Method | Cookie |
Cookie | 先程コピーした文字列を貼り付け |
Service Host | alexa.amazon.co.jp |
Page | amazon.co.jp |
Language | ja_JP |
Alexaを喋らせてみる
実行トリガーとして「inject」ノードを追加して「Routine Speak」に接続
画像のようにmsg.payloadに文字列として「テストメッセージ」と入力して完了
次に「Routine Speak」の方の設定は以下のようにして完了
項目 | 値 |
---|---|
Account | 追加したAmazonアカウントを選択 |
Text | msg.payload |
Devices | 登録デバイスが表示されるので喋らせたい端末または「全部の部屋」を選択 |
各種ノードの設定変更を反映させるため画面右上の「デプロイ」をクリック
上手く行っていれば「Routine Speak」の下にready
と表示されているはず。
「inject」左のボタンをクリックすると実行されてAlexaが「テストメッセージ」と喋ってくれれば実験成功です。
次回はSlackからチャットの内容を送信させるためにSlack Botを作成していきます。