VoiceAppLabさんがリリースしているゾンビのまちというのがあるのですが、
演出もリアルで今存在しているVUI向けゲームスキルでは群を抜く出来栄えです。
そのスキルはプレイヤーが知らない電話番号に電話をして、
偶然ケンタくんに繋がるところから物語がスタートします。
そのオープニングの演出を実際の携帯電話にかかってきたら怖さ倍増するんじゃないかと思い、
リアルゾンビのまちとして作ってみました。
サンプル動画
Amazon Connectを使ってVoiceAppLabさんのリアル「ゾンビのまち」を作ってみた。 pic.twitter.com/Nc93l6B9YJ
— がおまる@スマートスピーカーアプリ開発入門発売中! (@gaomar) April 23, 2019
1. Amazon Connectのセットアップ
1-1. Amazon Connectの準備
AWSにログインしてサービスからAmazon Connectを選択します。

東京リージョンになっていない方はアジアパシフィック(東京)を選択します。
アクセスURLは好きな名前を決めてください。

名前を決めたら、他の選択肢はデフォルトのまま進めて、[インスタンスの作成]ボタンをクリックします。

インスタンスが作成できたら、[今すぐ始める]をクリックします。

1-2. 電話番号を取得する
Amazon Connect専用の電話番号を手に入れます。
別のタブでAmazon Connect用の画面が表示されるので、そこに表示されている[今すぐ始める]ボタンをクリックします。

次のタイプは2種類あります。お好きな方を選んでください。
| タイプ | 特徴 |
|---|---|
| Direct Dial | 050番号が取得できる。発信者が通話料負担する。 |
| Toll Free | 0800番号が取得できる。発信者の通話料無料(フリーダイヤル)開発者が負担する。 |
最後にお好きな番号を選択して、[次へ]ボタンをクリックします。

1-3. 再生するファイルをアップロードする
左側メニューにあるルーティングカテゴリのプロンプトをクリックします。

再生する音声ファイルをアップロードします。対応しているファイルは.wavファイルのみです。

1-4. 問い合わせフローを作成する
左側メニューにあるルーティングカテゴリの問い合わせフローをクリックします。

問い合わせフローの名前を最初に設定しておきます。今回は LINEBotCall としました。

操作カテゴリにあるプロンプトの再生をドラッグアンドドロップして、そのブロックをクリックします。

終了/転送カテゴリの切断/ハングアップをドラッグアンドドロップします。

ブロックを線で繋いで、[保存して発行]ボタンをクリックします。

追加のフロー情報の表示部分を展開して、
instanceのID(赤い線部分)とcontact-flowのID(青い線部分)をそれぞれメモしておきます。

2. Lambda関数の作成
2-1. Lambda関数を作成しよう
Lambda関数を作成します。
| 項目 | 値 |
|---|---|
| ①関数名 | ClovaConnect |
| ②実行ロール | AWSポリシーテンプレートから新しいロールを作成 |
| ③ロール名 | ClovaConnect-Role |
| ④ポリシーテンプレート | 基本的なLambda@Edgeのアクセス権限 |
関数ができたら、下にスクロールしてClovaConnect-Roleをクリックします。

2-2. IAMの編集
IAMを編集してAmazon Connectに必要な権限を追加します。インラインポリシーの追加をクリックします。
アクションの書き込みにあるStartOutboundVoiceContactのチェックを入れます。

リソースはすべてのリソースをクリックして、[ポリシーの確認]をクリックします。

ポリシー名を入力して、[ポリシーの作成]ボタンをクリックします。

2-3. Lambda関数の編集
Lambdaに戻り、index.jsを編集します。下記コードをコピペしてください。
具体的にはstartOutboundVoiceContactにAmazon ConnectのインスタンスIDとフローIDを指定するだけですね。
'use strict';
const AWS = require('aws-sdk');
var connect = new AWS.Connect();
exports.handler = function (event, context, callback) {
var response = {
statusCode: 200,
headers: {},
body: ""
};
var speechText = "";
var requestJson = JSON.parse(event.body).request;
if (requestJson.type === 'LaunchRequest') {
// 起動時処理
speechText = '知らない番号から電話がかかってきた!電話を取ってみよう。';
var params = {
ContactFlowId: process.env.CONTACTFLOWID,
DestinationPhoneNumber: process.env.PHONENUMBER,
InstanceId: process.env.INSTANCEID,
SourcePhoneNumber: process.env.SOURCEPHONENUMBER
};
// 電話をかける
connect.startOutboundVoiceContact(params, function(err, data) {
if (err) {
console.log("gaomar=" + err);
} else {
console.log("gaomar=" + data);
}
});
// Clovaにレスポンスを返す
responseCall(speechText, response, callback);
} else if (requestJson.type === 'SessionEndedRequest') {
speechText = 'さようなら、また遊びましょう。';
responseCall(speechText, response, callback);
}
};
// レスポンス処理
function responseCall(speechText, response, callback) {
var responseJson = JSON.stringify({
"version": "1.0",
"response": {
"outputSpeech": {
"type": "SimpleSpeech",
"values": {
"type":"PlainText",
"lang":"ja",
"value": speechText
}
},
"card": {},
"directives": [],
"shouldEndSession": true
}
});
response.body = responseJson;
callback(null, response);
}
環境変数を追加します。
| 項目 | 値 |
|---|---|
| INSTANCEID | 1-3でメモしたinstanceのIDを貼り付ける |
| CONTACTFLOWID | 1-3でメモしたcontack-flowのIDを貼り付ける |
| PHONENUMBER | 鳴らしたい携帯電話等を入力する番号は+81をつける |
| SOURCEPHONENUMBER | Amazon Connectで発行した番号を入力する |
2-4. API Gatewayを追加する
トリガーの追加からAPI Gatewayをクリックして追加します。
下にスクロールして、各項目を選択して、[追加]ボタンをクリックします。
| 項目 | 値 |
|---|---|
| API | 新規APIの作成 |
| セキュリティ | オープン |
右上の[保存]ボタンをクリックすると、API GatewayのアクセスURLが発行されるので、メモしておきます。

3. Clovaの設定をする
3-1. サーバー設定
Clovaのプロジェクトを作成して、サーバー設定にAPI GatewayのアクセスURLを貼り付けます。
3-2. テストする
テストタブをクリックして、シナリオテストを有効にします。○○を起動してをクリックします。
すると、指定した番号に電話がかかってきます。
まとめ
LIFF等と連携すると、かけたい電話番号を指定することが可能になるかもしれません。
Amazon Connectはただのコールセンターだけでなく、アイデア次第で面白いものが作れるかもしれませんね。
システム化のご検討やご相談は弊社までお問い合わせください。
https://i-enter.co.jp/contact/








