LoginSignup
7
3

More than 3 years have passed since last update.

AWS AppSyncを利用して、Alexaスキルからモバイルアプリの表示内容をリアルタイムで更新させるサンプル

Last updated at Posted at 2018-03-01

はじめに

AWS AppSyncが東京リージョンでもサービス開始

ということで
Alexaスキル, AWSAppSync, モバイルアプリを組み合わせて
音声アシスタントだけでは伝わりにくい部分を補足する為の
簡易的なサンプルを作成しました。

Alexaスキルの応答にはAlexaアプリ上のみで表示可能なホームカード機能がありますが、モバイルアプリとのよりスムーズな連携を目指してAWSAppSyncを試行しています。

確認には以下のサンプルコードを利用させて頂きました。

構成図

デモ

Echosim.ioとSayコマンドを組み合わせてスキルのテストを実行しています。

下記動画ではAlexaスキルをトリガーにAWSAppSync経由でDynamoDBにデータを追加し、アプリで表示されている都市名の一覧を更新させています。

手順

1. AWS AppSyncの設定

記事を参考に
AWS AppSyncのSchema, DataSources, Mapping Templatesを設定していきます。

2. モバイルアプリ側の設定

サンプルコードをそのまま利用します。

変更箇所は一点で、サンプルコードの aws-exports.js を以下からダウンロードした内容に基づいて修正します。

2018-02-28 17 25 20

この時点でリアルタイムの更新処理を確認することが可能です。

city

3-1. AlexaSkillの設定 開発者ポータル編

開発者コンソールにてAlexaSkillsKitを選択して、新しいスキルを追加、対話モデルの設定、Lambdaとの接続、テストまでを行います。
(※今回はAlexaが呼び出し名に応答したタイミングで処理を実行してますので対話モデルは殆ど設定していません)

3-2. AlexaSkillの設定 Lambda編

AWS Lambdaにて関数を作成します。

ローカルの開発環境は以下です。

% node --version
v8.9.4
% npm --version
5.6.0

サンプルコードはGistsに置きました。

index.js, aws-exports.js, package.json を落としてaws-exports.jsをよしなに書き換えます。

npm install を実行して生成された node_modules, package-lock.json をzipで固めてLambdaにアップロードします。

% zip -r Hoge.zip index.js aws-exports.js package.json node_modules package-lock.json

3-3. テスト

デモ動画ではEchosim.ioを利用していますが、
開発者コンソールのサービスシュミレータでテスト可能です。

Xcodeのシミュレータを立ち上げて実行すれば以下の流れで、デモ動画と同様に表示が切り替わるはずです。

開発者コンソールにて呼び出し名を入力して実行
↓
lambdaのindex.js'LaunchRequest':functionの処理が実行
↓
AppSynchでDynamoDBにデータ追加, Subscriptionに通知
↓
Subscriptionの通知を受けてアプリの表示が更新

謝辞

諸々参考にさせて頂きました、ありがとうございます🙏

その他参考URL

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3