SORACOM LTE-M Button + Amazon ConnectでSOSコールボタン的なものを作る

SORACOM LTE-M ButtonとAmazon Connectを組み合わせて、緊急時に電話で助けを求めるSOSコールボタンなるものを作ってみました。
2019.01.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

最近、SORACOM LTE-M Button powered by AWS(以下、LTE-M Button)を買いました。 (発売当初のキャンペーンに乗り遅れたのは私です…)

せっかく「#あのボタン」を手に入れたので、色々と活用してみたいところです。

今回は、LTE-M ButtonとAmazon Connect(以下、Connect)を組み合わせて、サクッと緊急SOSコールボタン的なものを作ってみました。 ボタンを押すと、特定の電話番号にコールして通話先にSOSであることを知らせます。

構成

構成は以下のような感じです。

SOSを出したい時にLTE-M Buttonを押すと、連携されたLambdaでConnectのAPIを叩き、指定先の電話番号に発信して自動音声にて緊急事態である旨を伝えます。

Amazon Connectの準備

電話を発信するにあたり、まずはConnect(東京リージョン)で問い合わせフローを準備します。 Connectを初めて触る場合は、以下などを参考にしてインスタンスと発信可能な電話番号を取得しておいてください。

【東京リージョン】Amazon Connectでコンタクトセンター構築はじめの一歩

それでは、問い合わせフローを作成してみます。 以下のように、SOSであることをTakumiさんから通話先へ伝えてもらいます。

作成後、「保存して発行」するのを忘れずに。

Lambdaの実装

次に、LTE-M Buttonと連携するLambdaの実装です。

LambdaではConnectのAPIを利用するので、IAMロールで以下のリソースにアクセスできるようにポリシーを設定しておいて下さい。

  • connect:StartOutboundVoiceContact

Lambdaのコード(Node.js 8.10)は以下です。

'use strict';

const AWS = require('aws-sdk');
AWS.config.update({
  region: 'ap-northeast-1'
});
const connect = new AWS.Connect();

const params = {
  ContactFlowId: process.env.CONNECT_CONTACT_FLOW_ID,
  DestinationPhoneNumber: process.env.DEST_PHONE_NUMBER,
  InstanceId: process.env.CONNECT_INSTANCE_ID,
  SourcePhoneNumber: process.env.SOURCE_PHONE_NUMBER
};

exports.handler = async (event) => {
  console.log(JSON.stringify(event));
  try {
    const res = await connect.startOutboundVoiceContact(params).promise();
    console.log(res);
  } catch(err) {
    console.error(err);
  }
};

パラメータ部分(環境変数)には、以下の値を設定します。

変数名 説明
CONNECT_CONTACT_FLOW_ID 先程作成した問い合わせフローのID (下記参照)
DEST_PHONE_NUMBER 発信先(SOS先)の電話番号 +819011112222
CONNECT_INSTANCE_ID ConnectインスタンスのID (下記参照)
SOURCE_PHONE_NUMBER 発信元の電話番号 +818003334444

ConnectインスタンスのIDは、インスタンスARNから取得することができます。

問い合わせフローのIDは、問い合わせフローエディタから取得することができます。 (インスタンスARNも記載されているので、ConnectインスタンスIDもこちらから取得できます。)

AWS IoT 1-Clickアプリでデバイスの登録

次に、LTE-M ButtonをAWS IoT 1-Clickに登録します。

今回は、AWS IoT 1-Click モバイルアプリ(iOS or Android)を利用してデバイスの登録をしてみます。

アプリを起動すると、 まずAWSアカウントでログインします。 その後、「デバイスIDの登録」でLTE-M Buttonを登録します。

「スキャン」を選択します。

デバイスIDは、本体のQRコードから読み取ることができます。 本体裏の蓋を開けたところに記載されていますので、スキャンします。 (うまくスキャンできない場合は、記載されているDSNを直接入力することもできます)

デバイスが追加されたら、「登録」を選択します。

次に、LTE-M Buttonのボタンをクリックして登録を完了します。 (登録成功した場合、登録:成功と表示されます)

AWS IoT 1-ClickでデバイスとLambdaの関連付け

最後に、AWSコンソールのAWS IoT 1-ClickでLTE-M Buttonと実装したLambdaを関連付けます。 「プロジェクトの作成」を選択します。

適当なプロジェクト名を設定して「次へ」。

デバイステンプレートでは、「すべてのボタンタイプ」を選択します。

デバイステンプレート名に適当な名前を設定し、アクションで「Lambda関数の選択」を選択します。 AWSリージョンとLambda関数に先程実装したLambdaファンクションを指定し、「プロジェクトの作成」を選択します。

プロジェクト作成後、続けてプレイスメントの作成を行います。

適当なプレイスメント名を設定の上、先程設定したデバイステンプレートを選択し、「プレイスメントの作成」を選択します。

以上で各種設定は完了です! 実際にLTE-M Buttonを押して動作を確認してみましょう。

ボタンを押してSOS出してみる

おわりに

SORACOM LTE-M ButtonとAmazon Connectを組み合わせて、SOSコールボタン的なものを作ってみました。 LTE-M ButtonはAWS IoT Enterprise Buttonと違ってWi-Fiに繋ぐ必要がなく、気軽に外へ持ち出せるので、様々なユースケースに応用できそうですね。

それでは。

参考リンク