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を作成していきます。