やりたいこと
Node-redでnode-red-contrib-amazon-echoやnode-red-contrib-alexa-home-skillのパレットを使うと、Alexaに音声で話しかけることをトリガーにNode-redの処理を開始できます。しかし、これらのパレットでは、処理の結果をAlexaを使って音声で回答する(=しゃべらせる)ことはできません。今回は、Node-redからAlexaをしゃべらせることをやってみます。
Node-redの設定
実際にNode-redを使って、Alexaをしゃべらせてみます。
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画面の左側に「alexa」欄が追加され「Alexa Routine」「Alexa Event」「Alexa Echo」などのノードが追加されるので、確認しましょう。
Alexa Routineノードの利用
ここからはAlexa Routineノードを利用して、実際にAlexaをしゃべらせてみたいと思います。
①Alexa Routineノードの追加
左側のメニューより「Alexa Routine」ノードをドラッグしてフローに追加します。
②Account設定画面の表示
追加したAlexa Routineノードをダブルクリックして設定画面を開き、さらにその中のAccount欄の鉛筆アイコンをクリックして、Accountの設定画面を表示させます。
③Accountの設定
Accountの設定画面に以下のように入力して、更新ボタンを押しましょう。
・Auth Method:「Email & Password」を選択
・Email:Alexaに紐づいているAmazonアカウントのEmailアドレス
・Password:Amazonアカウントのパスワード
・Service Host:alexa.amazon.co.jp
・Page:amazon.co.jp
・Language:ja_JP
④Alexa Routineノードの設定
Alexa Routineノードの設定画面に以下のように入力して、完了ボタンを押しましょう。
・Text:※アレクサにしゃべらせたい言葉
・Device:しゃべらせたいEchoを選択
⑤Injectノードの追加
テストするためにInjectノードを追加して、Alexa Routineノードと接続しましょう。そして、最後に「デプロイ」ボタンを押しましょう。「デプロイ」ボタンを押すと、Node-redがAlexaサイトにログインを行いAlexa Routineノードの下に「ready」が表示されます。
ログインアカウントによっては、うまく「Ready」が表示されず、エラーとなってしまうようです。エラーとなった場合には、以下を試してみてください。
⑥テスト!!
それでは、Inhectノードの左側のボタンを押してみましょう!!!Alexaはしゃべってくれましたか?うまくいくとAlexa Speekノードの下に「Success」と表示されます。
おわりに
今回はNode-redとnode-red-contrib-alexa-remote2を使って、Alexaに任意のテキストをしゃべらせることをやってみました。スマートホームなど、ちょっとしたことをAlexaが音声でおしえてくれたら良いなーと思うことが多いので、この機能を今後使っていこうと思います。
コメント
はじめまして。
非常に参考になる記事をありがとうございます。Qiitaに掲載されていたときから参考にさせていただいておりました。
日本語の情報が少ない中、とても助かりました。
なお、ここ一週間ほど、Account設定を行った場合、認証に失敗するようになってしまい、解決できていないのですが、同様の現象は発生していないでしょうか。
突然で申し訳ございませんが、もし対策についてなにかご存知でしたら教えていただけますと幸いです。
Alexa RoutineノードでAuth Method:Email & Password」にて認証を行うと以下のログが出力され認証に失敗する。
30 Apr 20:17:33 – [error] [alexa-remote-account:(メールアドレス)] Login unsuccessfull. Please check credentials.
記事をお読みいただきありがとうございます。私も同様のエラーが出てログインに失敗することがありました。
私の場合は、Alexa Routineノードを多数(10個以上)設置していたので、それを2つ程度に減らしたらほとんどエラーが発生しなくなりました。また、node-red-contrib-alexa-remote2のGitHub上でも同様なエラーが報告されていて、User AgentをChromeののものにすると治った人もいるようです。
私のアカウントでは大丈夫ですが、異なるアカウントに変更してみたところ「Login unsuccessfull. Please check credentials」エラーが再現しました。
いろいろ調査したところ、Amazon側の仕様変更でEmail & Passwordは、アカウントによっては使えなくなったようです。解決方法を見つけましたので、以下の記事をお試し下さい。
https://www.smarthome-diy.info/blog/developper/smarthome/2020/05/1035/