
AWS IoT ButtonとNexmoを使って電話をかける
所要時間:1 分
Nexmo Voice APIをAmazon IoTボタンに統合することで、ゲストブロガーの マイケル・ピクイロ彼の息子が学校まで歩いて行けるように、ボタンをクリックして電話をかけられるようにした。その方法を紹介しよう。
妻が早く仕事に出かけるので、子供たちの支度をして学校に送り出すのは私の役目だ。時間を節約するために、8歳の息子に一人で学校まで歩かせようと考えていたのだが、問題があった。学校が始まる約1時間前に息子を送り出す。その時間はすべてのドアがロックされている。早く校舎に入るには、カフェテリアで早番の子供たちを見張っている先生の携帯電話に電話する必要がある。
私の最初の直感は、息子に自分の携帯電話を持たせることだったが、少し考えてから考え直した。毎月の電話代とサービス料がかかるし、息子は簡単になくしてしまうかもしれないし、おそらく息子はできる限りその電話でゲームをすることになるだろう。彼は本当に、一日のうちのこの一瞬のために何かが必要だったのだ。何か安くて簡単なものがあるはずだと思ったんだ。
アマゾンで私の問題を解決してくれる製品を探した結果、次のようなことが思い浮かんだ。 AWS IoTボタンを使うことができるかもしれないと思いついた。 Amazon Dashボタンのようなもので、自分のAmazonウェブサービスにリンクさせることができる。このボタンは安価で、私とよく似たユースケースのために設計されている:時折ボタンをクリックして、インターネット経由で何かを起こす。
最初のステップは、AWSのボタンを入手し、WiFiネットワークに接続し、Hello Worldアプリをセットアップすることだった。もし ドキュメントを見てみるとを参照すると、従うべきステップがいくつかあることがわかるだろう。デバイスを全て配線し、ボタンをクリックするたびにAWSコンソールにイベントが表示されるのを確認した。
Amazon Dash, AWS IoT
さて、次にそれをコードでつなげてみよう。Lambda関数を使った。これはAWSの方法で、サーバーのセットアップに煩わされることなく、クラウド上でコードを実行することができる。 この部分はずっと簡単だったすでにIoT Buttonの設計図が用意されていたからだ。ボタンが押されたときにメールを送信するNode.jsコードを自動的にセットアップしてくれた。 そのコードはここで見ることができる.
exports.handler = (event, context, callback) => {
console.log('Received event:', event.clickType);
// create/get topic
createTopic('aws-iot-button-sns-topic', (err, topicArn) => {
if (err) {
return callback(err);
}
console.log(`Publishing to topic ${topicArn}`);
// publish message
const params = {
Message: `${event.serialNumber} -- processed by Lambda\nBattery voltage: ${event.batteryVoltage}`,
Subject: `Hello from your IoT Button ${event.serialNumber}: ${event.clickType}`,
TopicArn: topicArn,
};
// result will go to function callback
SNS.publish(params, callback);
});
};
次のステップは、自動電話をかけられるサービスを探すことで、Nexmo APIを見つけた。最初のDashのセットアップとは違い、Nexmoを使い始めるのはとても簡単だった。 Nexmoには明確なドキュメントがある。があり、Node.jsアプリの作り方を丁寧に説明している。数分もしないうちに、私の電話番号にRoboコールを送る、ターミナル経由でローカルで実行できるものができた。 そのコードはこちら.Nexmoのドキュメントを見た後、自分の声を録音してそれを代わりに使う方法を見つけた。 自分の声を録音して、それを音声合成の代わりに使う方法を見つけた。を使う方法を見つけた。
2つのパーツが動作するようになったので、今度はそれらを組み合わせる必要があった。ダッシュのラムダ機能からメールを送信するコードをすべて切り取り、電話をかけるNexmoのコードを差し込んだ。
exports.handler = (event, context, callback) => {
console.log('Calling phone number', recipientNumber);
nexmo.calls.create({
to: [{
type: 'phone',
number: recipientNumber
}],
from: {
type: 'phone',
number: '12325551212'
},
answer_url: ['http://capturetheory.com/school_dash/first_call_talk.json']
}, (err, res) => {
if(err) {
console.error("there is an error");
console.error(err);
}
else {
console.log(res);
}
});
};
完全なコードは 完全なコードは次のようになります。.
それから、家の中で使えるボタンがあった。それを押すと、私の電話に電話がかかってくる。学校の電話にかけるには、ネクスモのアカウントに10ポンドのクレジットを入れなければならなかった。 1分あたりの料金はとても安いんだけどね。それをすぐに使うことは想像できない。ダッシュを学校のWiFiネットワークを使うように変更したら、ビジネスになった。
今は、これを改善するためのアイデアを練っているところだ。
電話が混み合っていたり、つながらなかったりした場合に 電話が混んでいたり、つながらなかったりしたらそうすれば、どこにいても電話をかけることができる。
私は バーチャル番号を追加する先生から折り返し電話がかかってくると、私の携帯電話が鳴ります。
アマゾンダッシュはボタンの長押しにも対応している。だから、そのイベントをトリガーにして、"迎えに来て "とか、"学校に入るのが大変なんだ "という別のメッセージを私に送ることができる。
一旦 プレストーなどのセルラーIoTボタンが起動すれば、学校のWIFIネットワークに接続する必要もなくなり、どこでも使えるようになるので、より強力になる。
しかし今のところ、息子は自分の足で歩いて学校に通っており、私は朝の日課から貴重な時間を取り戻した。
これは私がこのプロジェクトについて説明しているビデオだ。