AWS IoT 1-Clickで呼び鈴を作ってみる
AWS IoT 1-Clickを使って呼び鈴を作ってみます。
AWS IoT Enterprise ButtonはAmazonで購入できます。
デバイスのセットアップはこちらを参考に済ませます。
呼び鈴といってもボタンをトリガーにLambdaを呼び出しAmazon Connectで電話をかけるだけです。
まずは、以前書いた記事を参考にAmazon ConnectフローとLambdaを作ります。
AWS IoT 1-Clickから電話番号を受け取ってAmazon Connectに渡して架電して音声読み上げを行います。
次に呼び出し側のAWS IoT 1-Clickプロジェクトを作成します。 デバイスに割り当てるプレイスメントのテンプレートを作ります。
先ほど作ったLambdaを割り当てます。 プロジェクトとテンプレートを作成したら次はボタンとパラメータを割り当てるプレイスメントを作ります。 事前に登録したボタンと、パラメータとして渡す電話番号を設定すれば完了です。
早速ボタンを押してみると、3秒後くらいに電話が鳴り、取ると設定した文章が読み上げられます。 レポートから実行結果も確認できます。
Lambdaが実際に受け取るパラメータは次のようになります。
プレイスメントに割り当てたパラメータに加え、どのプレイスメントからどのボタンが押されたかと押下のタイプ(SINGLE、DOUBLE、LONG)が取れるので、アイディア次第でバリデーションのある制御ができそうです。
手軽にIoTデバイスを入手して実践できる
デバイスのセットアップはこちらを参考に済ませます。
呼び鈴といってもボタンをトリガーにLambdaを呼び出しAmazon Connectで電話をかけるだけです。
まずは、以前書いた記事を参考にAmazon ConnectフローとLambdaを作ります。
import boto3
import logging
def lambda_handler(event, context):
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.info(event)
client = boto3.client('connect')
attributes = event['placementInfo']['attributes']
phone_number = attributes['phoneNumber']
result = client.start_outbound_voice_contact(
InstanceId='***********************************',
ContactFlowId='***********************************',
SourcePhoneNumber='+81XXXYYYYZZZZ',
DestinationPhoneNumber=phone_number,
)
return {
'result': result['ResponseMetadata'],
}
次に呼び出し側のAWS IoT 1-Clickプロジェクトを作成します。 デバイスに割り当てるプレイスメントのテンプレートを作ります。
先ほど作ったLambdaを割り当てます。 プロジェクトとテンプレートを作成したら次はボタンとパラメータを割り当てるプレイスメントを作ります。 事前に登録したボタンと、パラメータとして渡す電話番号を設定すれば完了です。
早速ボタンを押してみると、3秒後くらいに電話が鳴り、取ると設定した文章が読み上げられます。 レポートから実行結果も確認できます。
Lambdaが実際に受け取るパラメータは次のようになります。
{
"deviceInfo": {
"deviceId": "G03XXXXXXXXXXXJP",
"type": "button",
"remainingLife": 99.35,
"attributes": {
"projectRegion": "ap-northeast-1",
"projectName": "IoT_Chaime",
"placementName": "Entrance",
"deviceTemplateName": "phone_place"
}
},
"deviceEvent": {
"buttonClicked": {
"clickType": "SINGLE",
"reportedTime": "2020-03-12T23:50:18.755Z"
}
},
"placementInfo": {
"projectName": "IoT_Chaime",
"placementName": "Entrance",
"attributes": {
"phoneNumber": "+8190XXXXYYYY"
},
"devices": {
"phone_place": "G03XXXXXXXXXXXJP"
}
}
}
ディスカッション
コメント一覧
まだ、コメントがありません