#やりたいこと
※※※この記事は古くなっています。最新の記事「Alexaをしゃべらせる(remote2 v3.3編)」を参照ください。
Node-redでnode-red-contrib-amazon-echoやnode-red-contrib-alexa-home-skillのパレットを使うと、Alexaに音声で話しかけることをトリガーにNode-redの処理を開始できます。しかし、これらのパレットでは、処理の結果をAlexaを使って音声で回答する(=しゃべらせる)ことはできません。今回は、Node-redからAlexaをしゃべらせることをやってみます。
#準備:情報収集
Alexaをしゃべらせるためには、以下の3つの情報が必要なので、これらを順に収集します。
1.Amazonアカウント ※これは持っていると思うので割愛
2.AmazonEchoのシリアル番号
3.AlexaAPIを呼び出すためのCookie
##1.AmazonEchoのシリアル番号
AmazonEchoのシリアル番号は、スマホのAlexaアプリから[設定]→[デバイスの設定]→Echoの名前→[その他]と選択していくと表示されます。これをメモしておきます。
##2.AlexaAPIを呼び出すためのCookie
AlexaAPIを呼び出すためのCookie情報が必要ですが、この情報を収集するのが多少めんどうです。
###①AlexaのWebサイトにアクセス###
Google Chromeを使ってAmazon AlexaのWebサイト「https://alexa.amazon.co.jp」にアクセスし、しゃべらせるAlexaに紐づいているAmazonアカウントでログインします。
###②開発ツールを開く###
キーボードの「F12」キーを押して開発ツールを開き「Network」のタブを選択します。
###③音楽を再生する###
次に、左側のWebページ内から「ミージック・ビデオ・本」を選択し、PrimeMusicなど、音楽を選択して再生します。当然ながら、音楽を再生するとAmazonEchoから音楽が流れます!
###④Cookieを取得###
右側の開発ツールの画面内のName欄から「queue-and-play?・・・・」というものを探し、クリックします。
右側の画面を下にスクロールしていくと「Request Header」の中に「Cookie:」があるので、この内容をテキストエディタなどにコピーしておきます。
#Node-redの設定
ここから、実際にNode-redを使って、Alexaをしゃべらせてみます。
##1.node-red-contrib-alexa-remote2のインストール
Node-redからAlexaをしゃべらせたり、音楽を再生するにはnode-red-contrib-alexa-remote2を使います。まずは、node-red-contrib-alexa-remote2をNode-redにインストールしましょう。
###①パレットの追加画面の表示###
Node-redの画面の右上の「三」→パレットの管理→(左メニューの)パレット→ノードを追加の順に選択して、パレットの追加画面を表示させます。
###②node-red-contrib-alexa-remote2の追加###
次に「ノードを検索」の欄に「alexa remote」と入力して検索します。検索して出てきた「node-red-contrib-alexa-remote2」の「ノードを追加」ボタンをクリックします。
※「remote」と「remote2」がありますが、remoteは古いのでremote2を選びましょう。
また、警告などでますが、構わずにOKしましょう。
###③追加ノードの確認###
無事にインストールが完了すると、Node-red画面の左側に「media」欄が追加され「Alexa music」「Alexa Speek」「Alexa Command」の3つのノードが追加されるので、確認しましょう。
##2.Alexa Speekノードの利用
ここからはAlexa Speekノードを利用して、実際にAlexaをしゃべらせてみたいと思います。
###①Alexa Speekノードの追加###
左側のメニューより「Alexa Speek」ノードをドラッグしてフローに追加します。
###②Account設定画面の表示###
追加したAlexa Speekノードをダブルクリックして設定画面を開き、さらにその中のAccount欄の鉛筆アイコンをクリックして、Accountの設定画面を表示させます。
###③Accountの設定###
Accountの設定画面に以下のように入力して、更新ボタンを押しましょう。
・Email:Alexaに紐づいているAmazonアカウントのEmailアドレス
・Password:Amazonアカウントのパスワード
・Service Host:alexa.amazon.co.jp
・Language:ja_JP
・AmazonPage:amazon.co.jp
・Cookie:上記確認でテキストエディタにコピーしたもの。
※Cookieは「x-amzn-dat-gui-client-v」から始まる部分を全て貼り付けます。頭の「Cookie:」は不要です。
###④Alexa Speekノードの設定###
Alexa Speekノードの設定画面に以下のように入力して、完了ボタンを押しましょう。
・Serial or Name:上記でメモしたAmazonEchoのシリアル番号
・Node Name:なんでもOK ※Node-red上のノードの名前
・Text:※アレクサにしゃべらせたい言葉
・Volume:※設定しなくてもOK
※2019年10月現在、Textの部分はアルファベットで入力しないとAlexaはしゃべってくれません。発音は日本語でちゃんと発音してくれるのですが・・・。
###⑤Injectノードの追加###
テストするためにInjectノードを追加して、Alexa Speekノードと接続しましょう。そして、最後に「デプロイ」ボタンを押しましょう。
###⑥テスト!!###
それでは、Inhectノードの左側のボタンを押してみましょう!!!Alexaはしゃべってくれましたか?
うまくいくとAlexa Speekノードの下に「Success」と表示されます。
#おわりに
今回はNode-redとnode-red-contrib-alexa-remote2を使って、Alexaに任意のテキストをしゃべらせることをやってみました。スマートホームなど、ちょっとしたことをAlexaが音声でおしえてくれたら良いなーと思うことが多いので、この機能を今後使っていこうと思います。