Amazon Connect でリアルタイムチャットメッセージストリーミングを有効にする
Amazon Connect Chat は API を提供します。ユーザーはこの API でチャットメッセージのリアルタイムストリームをサブスクライブすることができます。これらの API を使用すると、次のことができます。
-
API を使用して、新しいチャットの問い合わせが作成されたときに、リアルタイムでメッセージをストリーミングする。
-
現在の Amazon Connect Chat 機能を拡張して、SMS ソリューションおよびサードパーティーのメッセージングアプリケーションとの統合を構築する、モバイルプッシュ通知を有効にし、チャットメッセージのアクティビティを監視および追跡するための分析ダッシュボードを作成するなどのユースケースをサポートする。
メッセージストリーミング API の仕組み
Amazon Connect メッセージストリーミング API は、Amazon Connect Chat の問い合わせで特定のイベントが発生したときにトリガーされます。例えば、顧客が新しいチャットメッセージを送信すると、イベントは送信したばかりのメッセージに関するデータを含む指定されたエンドポイントにペイロードを送信します。メッセージは、特定のエンドポイントに対し、Amazon Simple Notification Service (Amazon SNS) 使用して公開されます。
このトピックでは、Amazon Connect および Amazon SNS を使用してリアルタイムメッセージストリーミングをセットアップする方法について説明します。手順は次のとおりです。
-
Amazon SNS コンソールを使用して、新しいスタンダード SNS トピックを作成し、メッセージをセットアップします。
-
StartChatContact API を呼び出し、チャットの問い合わせを開始します。
-
StartContactStreaming API を呼び出し、メッセージストリーミングを開始します。
-
CreateParticipantConnection API を呼び出し、参加者の接続を作成します。
ステップ 1: スタンダード SNS トピックを作成する
-
Amazon SNS コンソールに移動します。
-
AWS アカウントで SNS トピックを作成します。[Details] (詳細) セクションで [Type] (タイプ) に[Standard] (スタンダード) を選択し、トピックの名前を入力して、続いて、[Create topic] (トピックを作成) を選択します。
注記
現在、メッセージストリーミング API は、メッセージのリアルタイムストリーミングのためのスタンダード SNS のみをサポートしています。Amazon SNS FIFO (First-In-First-Out) トピックはサポートされていません。
-
トピックを作成すると、その Amazon リソースネーム (ARN) が、[Details] (詳細) セクションに追加されます。トピック ARN をクリップボードにコピーします。トピック ARN は次のステップとステップ 3: 問い合わせのメッセージストリーミングを有効にするで使用します。
トピック ARN は以下の例のようになります。
arn:aws:sns:
us-east-1
:123456789012
:MyTopic
-
[Access policy] (アクセスポリシー) タブで、[Edit] (編集) をクリックし、SNS トピックにリソースベースのポリシーを追加して、Amazon Connect がそれを公開するための許可を持てるようにします。JSON エディタにコピーして貼り付け、独自の値を使用してカスタマイズできるサンプルの SNS ポリシーを次に示します。
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"connect.amazonaws.com" }, "Action":"sns:Publish", "Resource":"
YOUR_SNS_TOPIC_ARN
", "Condition":{ "StringEquals":{ "aws:SourceAccount":"YOUR_AWS_ACCOUNT_ID
" }, "ArnEquals":{ "aws:SourceArn":"YOUR_CONNECT_INSTANCE_ARN
" } } } ] }注記
デフォルトのアクセスポリシーには、次に示す
sourceOwner
などに適用される条件が付属しています。"Condition": { "StringEquals": { "AWS:SourceOwner": "921772911154" } }
これを削除して、
SourceAccount
に置き換えてください。例:"Condition":{ "StringEquals":{ "aws:SourceAccount":"YOUR_AWS_ACCOUNT_ID" }, "ArnEquals":{ "aws:SourceArn":"YOUR_CONNECT_INSTANCE_ARN" } }
これにより、サービス間の混乱した代理問題を回避できます。
-
SNS でサーバー側の暗号化を使用している場合は、
connect.amazonaws.com
の許可が KMS keyで有効になっていることを確認してください。次に、サンプルポリシーを示します。{ "Version": "2012-10-17", "Id": "key-consolepolicy-3", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
your_accountId
:root", "Service": "connect.amazonaws.com" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::your_accountId
:root", "Service": "connect.amazonaws.com" }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" } ] }
ステップ 2: チャット問い合わせを開始する
-
Amazon Connect StartChatContact API を呼び出し、チャットの問い合わせを開始します。
Amazon Connect API を呼び出すための SDK クライアントを作成する方法の詳細については、以下のトピックを参照してください。
-
StartChatContact 応答からの
ContactId
とParticipantToken
を追跡します。これらの応答属性は、ストリーミングを有効にするために必要な他のチャット API を呼び出すために使用されるためです。これについては、次の手順で説明されます。
ステップ 3: 問い合わせのメッセージストリーミングを有効にする
-
StartContactStreaming を呼び出し、SNS トピックへのリアルタイムメッセージのストリーミングを有効にします。
-
制限: 問い合わせごとに最大 2 つの SNS トピックをサブスクライブできます。
-
StartContactStreaming を呼び出すと、SNS トピックの Amazon リソースネーム (ARN) を指定する必要があります (ステップ 1: スタンダード SNS トピックを作成する を参照)。
単一の SNS トピック ARN を複数の AWS アカウントで使用できます。ただし、Amazon Connect インスタンスと同じリージョンに存在する必要があります。例えば、トピックの ARN が us-east-1 の場合は、Amazon Connect インスタンスは us-east-1 に存在する必要があります。
-
ストリーミングエンドポイントで受信されない最初のチャットメッセージについては、GetTranscript API を呼び出して最初のメッセージを受信できます。
-
ステップ 4: 参加者の接続を作成する
-
CreateParticipantConnection と true として渡された
ConnectParticipant
属性を呼び出します。-
チャットの作成から 5 分以内に CreateParticipantConnection を呼び出す必要があります。
-
CreateParticipantConnection を true に設定された
ConnectParticipant
と呼び出すことは、ステップ 2: チャット問い合わせを開始する でストリーミングを有効にし、発信者参加者がCustomer
である場合にのみ機能します。 -
このステップ (参加者接続の作成) は、
WEBSOCKET
を使用してチャット問い合わせに正常に接続している場合は、オプションです。
-
次のステップ
メッセージストリーミング API を操作するための設定はすべて完了です。
-
正常に動作することを確認するには、作成した SNS トピックにメッセージが公開されていることを確認します。この検証は、Amazon CloudWatch メトリクスを使用して実行できます。手順については、CloudWatch を使用した Amazon SNS のモニタリングを参照してください。
-
SNS の保持期限に制限がある
場合は、Amazon Simple Queue Service (Amazon SQS) Amazon Kinesis 、またはメッセージを保持するための別のサービスをセットアップすることをお勧めします。 -
StopContactStreaming の使用はオプションであり、問い合わせフローでチャットが切断されている場合、お客様がチャットを切断した場合には不要です。ただし、
StopContactStreaming
は、チャットがアクティブで進行中であっても、SNS トピックでのメッセージのストリーミングを停止するオプションを提供します。