アレクサTips : 電話番号を調べる

コロナ禍でお店の営業時間が短縮になっていますが、豊洲のコーナンの営業時間が知りたくって、電話番号を調べようと。

ふとアレクサに話しかけたら、ちゃんと電話番号を教えてくれました。

「アレクサ、豊洲にあるコーナンの電話番号教えて」・・・〇
「アレクサ、豊洲のコーナンの電話番後う教えて」・・・×

場所を指定するときは、「〇〇にある」と言わなきゃダメ見たい。

けっこうベタな内容ですが、こうやって使うことがなかった。。。

アレクサTips 自分の携帯を探す

自分の携帯が迷子になったとき、携帯を鳴らしてくれます。

「携帯ファインダー」というスキルを使います。そのスキルの説明書き(Alexaへの話し方の例)にある文章は長ったらしいですが、「アレクサ、携帯どこ?」で反応してくれます!「アレクサ、電話どこ?」でもOK

これは便利♪

アレクサのスキルを有効にする

「携帯ファインダー」というスキルを有効にしましょう。

  • 左上の三本線→スキル・ゲーム
  • 検索窓から「携帯ファインダー」
  • 携帯ファインダーをタップ
  • 「有効にして使用する」をタップ

アレクサに話しかけて、設定を進める

私の場合、ここでトラブルに! 電話をかけても、プチッと切れる。つながらない。。。

アレクサがしゃべってるときじゃないと、電話がつながらない?みたいでした。

ということで、「03‐4540-2801」をメモっておき、携帯片手にアレクサにしゃべりかけましょう。

  • 一度電話番号「03-4540-2801」にTELしておく。(後で発信履歴からTELするため)
  • 携帯を片手に持っておく。電話をすぐにかけれるように。
  • アレクサに話しかける・・・「アレクサ、携帯どこ?」
  • アレクサがもごもご話し出す。しばらくして「スタートと言ってください」とアレクサが言うので、「スタート」と言う。
  • アレクサが電話番号を話し出す。が、この電話番号を聞いた後に電話してもつながらないので、電話番号を言い出したらすぐに発信履歴から「03-4540-2801」にTELする。
  • アレクサもしゃべりつつ、電話先でもごにょごにょ言い出す。ちょっと聞き取りづらくなる。アレクサのほうが黙るまでしばらく待つ。
  • アレクサが黙ったら、「アレクサ、携帯ファインダーのピンコードを教えて」と話しかける。
  • 4桁のピンコードを言うので、携帯にその番号を入力する。
  • 携帯のほうがごにょごにょ言って、自然にTELが切れる。これで設定完了!

接続テスト:アレクサに「携帯どこ?」「電話どこ?」

アレクサに向かって、「アレクサ、携帯どこ?」もしくは「電話どこ?」と言ってみましょう。それで自分の携帯が鳴ったらOK。

アマゾンエンタープライズボタンを照明のスイッチに!

我が家ではアレクサから照明をOn/Offしています。
でも、イラッとする時があります。それは”主電源問題”。
夕方になったりうたた寝明けとかに「アレクサ、照明つけて」って言っても動いてくれない。なぜなら、壁のスイッチが切られているから!

みんなが壁スイッチを押さずに照明を消せばいいんですが、寝るときなどアレクサに話しかけるより壁スイッチをポチっと押したほうが手っ取り早い。

ということで、壁スイッチを”押させない”方法として、壁スイッチの近くにボタンを置き、壁スイッチを押す代わりにこれを押すようにしました。(下にあるほうです。上はSwitchbotで、今回の話とは関係ないやつです)

私はアマゾンのエンタープライズボタンを選びましたが、IoTボタンはいくつか出ています。それぞれ主観で紹介しますね。

IoTボタンを選ぶ

Flic

非常に面白そうな製品で好奇心をとっても刺激されますが、単なる照明ボタンにするにはちょっと値段が高いのと、日本に販売代理店がなさそうというので、避けました。別の使い方を考えてみようと思います。

MESH

こちらも同様に、かなりお値段がお高いので、敬遠です。

Qmote S

お値段はお手頃なのですが、こいつが動くにはスマホが近くにあってQmoteSがBluetoothでスマホにつながってないとだめで、”家の照明ボタン”として使うにはちょっと厳しいです。

実はすでに1個持っていて、私はこれを家の鍵として使っています。スマホとセットで動くこいつは、鍵として使うのが一番いい使い方かも。

ちなみにAmazonではめっぽう評価が低い。。多分IFTTTが(直接は)使えなくなったからかな?WebhooksというサービスをかませばIFTTTを使えますし、私自身はそれほど不自由なく使えてます。

Amazon IoT エンタープライズボタン(ダッシュボタン)

結局こいつにしました。こいつ単体でWifiにつながって機能するし、なんせ安い!
アマゾンページ

昔は(?今も?)ダッシュボタンと呼ばれていました。このボタンは「アマゾンでこのボタン1プッシュで特定の商品を再購入するもの」と思っていました。

今は、IoTボタンとしていろいろなことができるようです。

でも、こいつを使うにはAWSというちょっと変態チックなサービスを使う必要があります。そこのハードルが越えられそうな人は、こいつがベストかと思います。

注意!! ブツがやってきたら、箱は捨てないでください!AWSへ登録する際「DSN番号」が登録に必要なためです。私はそそくさとゴミ箱に捨ててしまってゴミあさりするハメにあいました。。。

このバーコード部分は捨てないように!!

全体像

ダッシュボタン(こっちのほうが言いやすい♪) を押して照明を消すまでの流れは、以下の図のとおりです。

ダッシュボタン

AWS IoT 1-Click

AWS Lambda

Webhooks

IFTTT

Nature Remo

照明リモコンのOn/Off信号が送られる

照明オフ

後半の「Webhooks→IFTTT→Nature Remo→照明を消す」というところは参考ページがたくさんあるのですが、AWS→IFTTTへの信号の送り方がむずかしかった。。。

なので、そこを重点的に書きます。具体的には、

  • AWSにアカウント作成
  • AWSにダッシュボタンを登録する
  • AWSにlambdaというプログラムを作る。こいつがWebhooksに信号を送ります。
  • AWSに「ボタンを押したらlambdaのプログラムを動かす」というアプレット(?)を作る。

Webhooksから先はすでに設定済みという前提で話してます。Webhooks→IFTTT→Nature Remo→アクション(照明を消すとか)は、以下のページなどを参考にしてみてください。

IFTTT→Nature Remo: https://qiita.com/fkooo/items/f2ae1af3f51976275654

Webhooks→IFTTT: https://ifttt-japan.club/apply-webhooks

AWSのアカウント作成

こいつをIoTボタンとして使うには、AWSというサービスを利用しないといけません。が、登録してから使えるようになるまでちょっと時間がかかるようです(最大24時間)。なので、ダッシュボタンをアマゾンでポチったら、そいつが家にやってくるまでにAWSへ登録しておきましょう。
https://aws.amazon.com/jp/register-flow/

ちなみに、クレジットカードを登録させられたりと、ちょっとハードルは高いです。「1年間無料」だそうですが、1年後どうなるんだろう。。。

登録時にちょっとトラブったこと
登録は、すべて半角英数字

 住所とかも、全部半角英数字で入れます。
「次へ」ボタンが押せない
 住所を登録して次に行こうとしても、ボタンが押せない状態になりました。一度ページを戻って入力しなおして・・・を3回繰り返したらなぜか押せるように。。
クレジットカードの登録が終わらない
 最初JCBのカードを登録したら、「入力に不備があります」とでて、その先に進めなくなりました。VISAカードを登録したらそれはすんなり登録でき、デフォルトをそのカードにし、再度デフォルトカードをJCBに戻したら、なぜかJCBも使えるようになってました。

ダッシュボタンをAWSに登録

スマホを使って登録します。AWS IoT 1-Clickというアプリをスマホにインストールしてください。登録までの流れはアプリがわかりやすくリードしてくれます。DSN番号の登録でもバーコードリーダーが使えるのでとっても楽ちんでした。
一点、箱にあるバーコードを読み取った後、どうやったら次に進めるのかで迷いました。次に進むには、「スキャンの停止」を押してください。

画面下にあるこのボタンを押せば、次に進めます。キャンセルっぽいけど。。

AWSでプログラム登録 (lambda)

ここだけパソコンでの作業となります。

まずはリージョンを「東京」に!!

これがわからずにはまりました。。。

画面の右上にリージョン(地域)が表示されています。私は最初「オハイオ」になってました。これを、東京に変えてください。

lambdaプログラムの作成

AWSマネジメントコンソールというトップ画面に行ったら、「lambda」というサービスを検索してください。検索窓を使うと便利です。

次に、「関数の作成」をクリック。

一から作成、関数名は任意(日本語はNG。半角英数字のみ)、ランタイムはPython3.8を選択して、右下の「関数の作成」をクリック。

すると中段に以下のようなデフォルトのプログラムが出てきますので、そこを全部消して、以下のプログラムをまるっと貼りつけます。

↓↓貼りつけるプログラム↓↓

import json
import urllib.request

def lambda_handler(event, context):
    url = 'Webhooksのアドレスを置き換える'
    req = urllib.request.Request(url)
    urllib.request.urlopen(req)

↓コード貼り替え後。こんな感じになります。

コード貼り替え後、こんな感じになります。

「url」の’’で囲まれた部分 は、Webhooksのアドレスに貼り替えてください。

[このページ]の真ん中くらいにWebhooksのアドレスについてまとめてくれています。

続いて、画面上段にある「アクション」→「新しいバージョンを発行」をクリック

説明書きには、例えば以下のような感じで入力。

これでlambdaプログラムの登録終了!今度はまたスマホで作業です。

ボタンとlambdaとの紐づけ

パソコンでも作業ができますが、スマホでやったほうが楽だったので、そちらでの作業方法を書きます。

先ほど使った「AWS 1-Click」を起動してください。

以下のような画面が出てくるので、「プロジェクト」をタップ。

右下の「+」ボタンをタップ→「開始」をタップ

プロジェクト名と説明を適当に入力。

デバイステンプレートの定義をタップ

デバイステンプレート名を適当に入れて、デバイスタイプをボタンに、アクションには「Lambda」を選択、右下の「選択」ボタンで先ほど作ったLambda関数を選択。

いっこ前の画面に戻るので、プレイスメントの属性欄の「属性の追加」をタップし、名前を適当に入力、デフォルト値はなんでもOKですがとりあえず0と入力。

プレイスメントの作成から、

名前を適当に入れてデバイスで登録しているダッシュボタンを選択。

これで完成!!!

ダッシュボタンを押して、照明が消えるか試してみてください。

別の部屋のアレクサの音楽を止める方法

リビングにいるとき、別の部屋からうっすらとアレクサ音楽が聞こえてきた。

止めようとしてリビングにあるアレクサに「音楽止めて」と語りかけても別の部屋のアレクサは歌いっぱなし。

スマホのアレクサアプリで止めるのも面倒くさい。

こんな時にどうするかって話です。

定型アクションを作る

  • 左下のホームボタン→左上の3本線→定型アクションをタップ
    →定型アクション一覧画面が出てくる
  • 右上の「+」ボタンをタップ
    →新規作成の設定画面が出てくる
  • 実行条件を設定→開始フレーズを設定→「(アレクサ、)音楽止めて」と入力し、
    右上の「次へ」をタップ
  • アクションを追加→デバイスの設定→オーディオを停止→すべてのデバイス をタップ
  • 右上の「保存」をタップ

これで、「アレクサ、音楽止めて」というとすべてのアレクサが歌うのをやめてくれました。(すべてのアレクサが歌うのをやめます。その点ご注意ください。)

アレクサの定型アクションはどんどん進化してるようです。

GMailからLINEへ転送する② 特定のメール

以下の記事で、GMailをLINEへ転送する方法を書きました。

が、これでは、全件(もしくは固定キーワードでタイトル検索)転送されてしまいます。ウザいですよね。

というわけで、GMailの分類機能(ラベル)を使って特定のメールだけ転送するようにします。

準備1 GMailで「フィルタ」「ラベル」を作成

まずは仕分けのルールを作りましょう。「フィルタ」にひっかかったメールに「ラベル」を付ける作業です。ちなみにラベルとは、分類みたいなものです。

https://support.google.com/mail/answer/6579?hl=ja を参考に、LINEに転送したい条件でフィルタを作ってください。

その際、ラベルを設定するのを忘れずに!
僕は、LINE転送用の「toLINE」というラベルを作成しました。

準備2 GMail→LINEの転送機能を組み込む

以下の記事のように、GMail→LINEの転送機能を組み込みます。

準備3 プログラムの変更

Google Apps Scriptのプログラムを、1箇所だけ書き換えます。
(書き換えた後、保存ボタンを押すのを忘れずに)

24行目にある「検索条件指定」の部分に、「label:ラベル名」を付け加えます。
以下の例では、「toLINE」というラベルがつくメールをLINEへ転送するようになります。

<変更前>

<変更後> 「toLINE」の箇所を自分で作ったラベル名に置き換えてください。

そして保存ボタンを押せば、それで完成!!

これで、好きな条件でLINEへ転送できるようになりました。(条件を変えたい場合はGMAILのフィルタ/ラベルをいじればOk)

GMailからLINEへ転送する

GMailからLINEへ転送するやり方をまとめました。IFTTTがあれば簡単にできたのですが、IFTTTなき今、「Google Apps Script」を使います。

プログラムを使いますが、コピペして1行変えるだけですので安心して読んでください!

準備その1 LINEとの接続キーをもらう

LINE Notifyというところから通知がくるようになります。
まずはそれを使うためのキー(アクセストークン)をゲットしましょう。

ページ数が多くなるので、別記事にしました。以下をご覧ください。

準備その2 Google Apps Script

次はプログラミングです。
作業をしていると、プログラム画面とかが出てきてビビります。が、、、ビビらないでください!LINEのアクセストークンを1箇所貼り付けるだけです! それ以外は一切変更不要です♪

以下のページを参考にさせていただきました。yuuさんのおかげでビビらずにこのフェーズを乗り越えることができました♪
https://note.com/yuut6/n/nb3528b53ddfa

  • デフォルトで記入されているもの(function myFunction(){})をすべて消し、以下のプログラムをコピペ
var lineToken = "xxxxx"; //LINE notify token
var words = ""; //検索したい文字をスペースで区切って入れてください (例)あああ いいい ううう
var f_body = 0; //0:通知に本文を表示させない、1:通知に本文を表示させる
var interval = 1; //何分前からの新着メールを確認する?


function send_line(Me){
 var payload = {'message' :   Me};
 var options ={
   "method"  : "post",
   "payload" : payload,
   "headers" : {"Authorization" : "Bearer "+ lineToken}  
 };
 UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}


function fetchContactMail() {
 //取得間隔
 var now_time= Math.floor(new Date().getTime() / 1000) ;//現在時刻を変換
 var time_term = now_time - ((60 * interval) + 3); //秒にして+3秒しておく
 
 //検索条件指定
  var strTerms = '(subject:{' + words + '} is:unread after:'+ time_term + ')';
 
 //取得
 var myThreads = GmailApp.search(strTerms);
 var myMsgs = GmailApp.getMessagesForThreads(myThreads);
 var valMsgs = [];
 for(var i = 0; i < myMsgs.length;i++){
   valMsgs[i] = " " + myMsgs[i].slice(-1)[0].getDate().getMonth() + "/"+ myMsgs[i].slice(-1)[0].getDate().getDate() 
    + " " + myMsgs[i].slice(-1)[0].getDate().getHours() + ":" + myMsgs[i].slice(-1)[0].getDate().getMinutes() 
    + "\n[from]" + myMsgs[i].slice(-1)[0].getFrom()
    + "\n" + myMsgs[i].slice(-1)[0].getSubject()
   
   if(f_body == 1){
     valMsgs[i] = valMsgs[i] + "\n\n[Message]\n"+ myMsgs[i].slice(-1)[0].getPlainBody();
   }
 }
 
 return valMsgs;
}


function main() {
 new_Me = fetchContactMail()
 if(new_Me.length > 0){
   for(var i = new_Me.length-1; i >= 0; i--){
     send_line(new_Me[i])
   }
 }
}
  • プログラムを書き換える
    1. 1行目の「lineToken=”xxxxxx”の xxxxx を、LINEのアクセストークンに書き換える
      ~2行目以降は変更不要です。お好みで♪~
    2. 2行目はそのままでもOKです。(全部の未読メールがLINEに来ます)
      もしタイトル(subject)に検索をかけたい場合は、 2行目の””の中に、にそのワードをスペースで区切って入力(or条件で検索をかけます)
    3. 3行目もそのままでもOK。もしLINE通知に本文の内容まで載せたい場合は、「0」を「1」に変更してください。
    4. 4行目もそのままでOK。「何分前の未読メールをチェックするか」を指定します。この後の「トリガー設定」にも影響するので、そのままが無難です。
書き換える場所は、ここだけです。
  • プログラムを保存する(Ctrl+Sか、ファイル→保存)
  • 保存ボタンを押すとプロジェクトの名前を聞いてくるので、任意の名前を入力する。(なんでもいいです。以下の画像の「GMAILtoLINE」のところ)

次はテスト実行です!

準備その3 テスト実行

  • まずは自分あてにメールを送信する。
  • 実行→関数を実行→「main」を実行する(1分以内に実行してください)

最初に実行する場合、googleアカウントへの接続承認画面が出てきます。
進めていくと、以下のような画面が出てきてビビりました。

焦らず「詳細」をクリックすると、以下の文章が出てきますので、そこにあるリンク(以下の例では「GMAILtoLINE(安全ではないページ)に移動」)をクリックすればOKです。

  • すでに1分以上経過していると思うので、再度メール送信
  • 実行→関数を実行→「main」を実行する

どうですか?届きましたか?届けば成功です!!

準備その4 トリガーの設定

準備2で作ったプログラムを、1分ごとに実行するための準備です。

  • 編集→「現在のプロジェクトのトリガー」をクリック
  • 右下にある「トリガーを追加」をクリック(見落としがち!)
  • 以下のような設定にする

これで準備はすべて完了!

自分で自分にメールを送って、試してみてください♪1分以内にLINEに通知が届くはず!!

が、これでは、全件(もしくは固定キーワードでタイトル検索)転送されてしまいます。ウザいですよね。

というわけで、特定のメールだけ転送するようにしましょう。(以下の記事にまとめました)

LINE Notifyを使ってみる

~GMailからLINEへ転送するための準備~

以下のサイトを参考にさせていただきました。

https://qiita.com/iitenkida7/items/576a8226ba6584864d95

手順

使うためのキー(アクセストークン)をもらう

  • アクセストークンを発行する
  • トークンをコピーし、メモ帳などに貼りつけておく

これでGMAILからLINEへ転送する準備その1が完了です!
次のステップに進んでください。以下をクリック!!