Amazon Web Services ブログ
Amazon Connect のチャネルとして WhatsApp メッセージを提供
編集者注:このブログは、ビルダーが独自のソリューションを作成するためのデモンストレーションと基礎を提供するために設計されたスターター・プロジェクトの例です。本番環境で使用できるものではありません。本番環境にデプロイして使用することを計画している場合は、本番環境での使用を参照してください。このソリューションをさらに進めるために追加のサポートが必要な場合は、AWS プロフェッショナルサービスまたは Amazon Connect パートナーにお問い合わせください。
AWS Contact Center Day にご参加ください。この無料のバーチャルイベントでは、カスタマーサービスの未来や、機械学習による顧客とエージェントの体験の最適化などについて学ぶことができます。今すぐ登録 >>
※訳注 オンラインイベントは2023年4月26日に開催されました。現在はイベントをオンデマンド配信でご覧いただけます。
企業は顧客の期待に応えるため、よりパーソナライズされた体験を提供しようと努力しています。今日、消費者は友人や家族とのコミュニケーションにさまざまなリッチなデジタルメッセージングアプリケーションから選ぶことができ、WhatsApp は世界的に最もよく利用されているアプリケーションの一つです。消費者は、利便性と柔軟性を求めて、自分の好きなデジタルチャネルでコミュニケーションできる選択肢をますます求めています。どのような規模の組織であっても、変化し続ける顧客のコミュニケーションの好みに応えるためには、デジタルコミュニケーション戦略においてこの点を考慮することが重要です。
Amazon Connect のメッセージストリーミング API を使用すると、デジタルチャネルを Amazon Connect コンタクトセンターに簡単に統合できます。追加のチャネルを統合することで、顧客が好むデジタルチャネルで、パーソナライズされたリアルタイムのサポートを提供することができます。
このブログでは WhatsApp を Amazon Connect コンタクトセンターに統合する方法をご紹介します。ここで説明する手順とアーキテクチャは他のデジタルチャネルとの統合にも応用できます。本記事の手順に従って WhatsApp をセットアップすると、エージェントはすでに Amazon Connect の音声、チャット、タスクで使用しているエージェントデスクトップから、WhatsApp チャネルの顧客メッセージを受信し、返信することができます。
ソリューション概要とアーキテクチャ
このブログ記事では、GitHub リポジトリからサンプルプロジェクトをデプロイします。このプロジェクトには WhatsApp メッセンジャーチャネルをサポートするエンドツーエンドのインフラストラクチャが含まれています。
これらの API を使用して Amazon Connect Chat と SMS を統合する方法については、Amazon Connect を使用した SMS 上でのパーソナライズされた顧客体験の構築 のブログをご覧ください。
- 顧客はデジタルメッセージングチャネルから Amazon API Gateway にホストされている Webhook にメッセージを送信します。
- API Gateway は AWS Lambda にメッセージを送信します。
- AWS Lambda はチャットのコンタクトコンテキストを Amazon DynamoDB に書き込みます。
- これがコンタクトの最初のメッセージである場合、AWS Lambda は、StartChatContact、StartContactStreaming、CreateParticipantConnection の順序で API を呼び出します。チャットがすでに存在している場合、AWS Lambda はAmazon Connect にメッセージを送信します。
- Amazon Connect はエージェントまたはシステムのメッセージを Amazon SNS にストリーミングします。
- Amazon SNS が AWS Lambda を呼び出します。
- AWS Lambda が Amazon DynamoDB にチャットのコンタクトコンテキストを問い合わせます。
- AWS Lambda は返信メッセージを送信元チャネルから API を通じて顧客に配信します。
前提条件
このチュートリアルでは、以下のリソースを理解し、アクセスできることを前提としています:
- 次のサービスに対して管理者権限を持つ AWS アカウント – Amazon Connect、Amazon API Gateway、AWS Lambda、Amazon DynamoDB、Amazon Simple Notification Service、AWS Secrets Manager、AWS CloudFormation
- Amazon Connect インスタンス
- Amazon Connect のコンタクトフローのセットアップ(切断フローを含む)
- ローカル環境での AWS CLI のセットアップ
- Meta (Facebook) の開発者アカウント。詳細は Meta for Developers コンソールをご覧ください。
- NPM を使って開発者マシンへの Node.js のインストール。詳細は nodejs downloads をご覧ください。
デプロイのチュートリアル
Meta for Developers コンソール
- Meta for Developers コンソールに移動します。
- マイアプリ をクリックします。
- アプリを作成 をクリックします(または既存アプリを選択します)。アプリに必要な機能については、その他 を選択し、次へ をクリックします。
- アプリタイプを選択します。ここでは WhatsApp をサポートする ビジネス を選択します。次へ をクリックします。
- アプリの表示名、連絡先メールアドレス、ビジネスアカウント を紐づけるかどうかを選択し、アプリを作成 をクリックします。
- ダッシュボード に移動し、アプリに製品を追加 セクションで WhatsApp サービスの 設定 を選択します。
- Meta ビジネスアカウントを 作成 または選択し、次へ を選択します。
- アプリの設定 > ベーシック に移動し、app secret の 表示 をクリックします。表示された値は Amazon Secrets Manager で WA_APP_SECRET というキーにシークレットを作成する際に必要となるため、保存して下さい。
- WhatsApp > API設定 に移動し、電話番号ID をメモします。このIDは後ほど AWS Secrets Manager でシークレット (WA_PHONE_NUMBER_ID) として必要になります。
- また、テスト番号 もメモします。ソリューションがデプロイされたら、この番号に、テスト用の電話からメッセージを送信する必要があります。これは Amazon Connect デプロイメント用のビジネス電話番号です。
- また、受信者の電話番号を選択 のドロップダウンに、テストに使用するお客様の電話番号を追加して下さい。指示に従って電話番号の追加と認証を行って下さい。注意: この電話番号で WhatsApp を登録し、クライアント端末に WhatsApp クライアントがインストールされている必要があります。検証メッセージは WhatsApp クライアントのアーカイブリストに表示され、メインのメッセージリストには表示されません。
API 経由で WhatsApp にアクセスする新規ユーザーを作成
- Meta の ビジネスマネージャ を開き、あなたが作成した、またはアプリを関連づけたビジネスアカウントを選択し、ビジネス設定(歯車アイコン)をクリックします。
- ユーザー の下にある システムユーザー をクリックします。
- 追加 をクリックし、新規システムユーザーを作成します。
- システムユーザーに名前を付け、役割を 管理者 に設定し、システムユーザーを作成 をクリックします。
- アセットを割り当てる ボタンで新規ユーザーを WhatsApp アプリに関連付けます。アセットタイプの選択 リストから アプリ を選択し、アセットの選択 であなたが作成した WhatsApp アプリ名を選択します。部分的なアクセス許可にて アプリをテスト を有効にし、変更を保存 をクリックして 完了 をクリックします。
- 新しいトークンを生成ボタン をクリックし、作成した WhatsApp アプリを選択します。
- 利用可能なアクセス許可 リストから whatsapp_business_messaging と whatsapp_business_management を選択し、一番下の トークンを生成 をクリックします。
- アクセストークンをコピーして保存します。このアクセストークンは、次のセクションでシークレットWA_ACCESS_TOKEN として使用します。OKをクリックする前に、トークンをコピーしたことを確認してください。
アクセストークン作成の詳細については、Meta for Developers コンソールの WhatsApp > 設定 や 固定トークンの作成方法 をご覧ください。
AWS Secrets Manager のセットアップ
- AWS Secret Manager のコンソール に移動し、新しいシークレットを保存する をクリックし、その他のシークレットのタイプ を選択します。Facebook Messengerとの統合を使用している場合、シークレットは両方のソリューションで共有できますが、シークレット内のキーは各ソリューションで個別に作成する必要があります。
- 下記の キー/値のペア のところに、WA_PHONE_NUMBER_ID、WA_ACCESS_TOKEN、WA_APP_SECRET、WA_VERIFY_TOKEN を追加します。
- WA_PHONE_NUMBER_ID、WA_ACCESS_TOKEN、WA_APP_SECRET には、前のステップで取得した値を指定します。WA_VERIFY_TOKEN には任意のランダム文字列 (自身で作成したもの) を指定できます。これは後のステップで、WhatsApp webhook に追加されます。
- デフォルトの暗号化キー(aws/secretsmanager)を選択します。次 をクリックします。
- 注: 新しいキーを追加することも可能ですが、その際はCDKプロジェクトを変更し、暗号化キーへのアクセス許可を与えてください。
- シークレットの名前 と 説明 を入力し、次 をクリックします。
- 注: リソース権限やその他の設定を追加する場合は、CDKスタックリソースにこのシークレットへの権限が与えられていることを確認してください。
- 次 をクリックし、シークレットを 保存 します。
- 注: 必要に応じて自動ローテーションの設定を行うことができますが、このチュートリアルではデフォルト値のままとします。
- AWS Secret Manager のコンソール で、作成したシークレットを検索し、シークレット ARN をメモしてください。これは後ほど、CDKでデプロイする際に必要になります。
Amazon Connect インスタンスの詳細を取得
- AWS マネジメントコンソールの Amazon Connect に移動します。
- Amazon Connect インスタンスを選択し、インスタンスARN をメモします。
- Amazon Connect 管理コンソールにログインし、コンタクトフロー の画面を開きます。WhatsAppチャネルでチャットを開始させたい コンタクトフロー を選択し、その コンタクトフローID をメモします。
AWS CDK と Bootstrap CDK 環境をインストール(CDK をインストール済みの場合はスキップ)
npm -g install typescriptnpm -g install aws-cdk
cdk bootstrap aws://ACCOUNT_ID/AWS_REGION
プロジェクトのデプロイ
続行する前に、前のステップで以下の変数があることを確認してください。
- Amazon Connect インスタンス ARN
- Amazon Connect コンタクトフロー ID
- WA_PHONE_NUMBER_ID、WA_ACCESS_TOKEN、WA_APP_SECRET、WA_VERIFY_TOKENの値を格納する、AWS Secret Manager のシークレット ARN
- Git を使って、GitHub からリポジトリをクローンします。
git clone git@github.com:amazon-connect/amazon-connect-message-streaming-examples.git
- ターミナルでディレクトリのルートに移動します。
cd amazon-connect-message-streaming-examples
- CDK プロジェクトと AWS Lambda 関数の依存関係をインストールします。
npm install cd src/lambda/inboundMessageHandler npm install cd ../../.. cd src/lambda/outboundMessageHandler npm install cd ../../.. cd src/lambda/digitalChannelHealthCheck npm install cd ../../..
- AWS CLI プロファイルを使用して CDK プロジェクトをデプロイします。cdk スタックに必要なコンテキスト環境変数として、amazonConnectArn、contactFlowId、waSecretArn を指定します。
cdk deploy \ --context waSecretArn=<YOUR SECRET ARN> \ --context amazonConnectArn=<YOUR AMAZON CONNECT INSTANCE ARN> \ --context contactFlowId=<YOUR CONTACT FLOW ID
注: WhatsApp、SMS、Facebook Messenger チャネルは全て同じ CDK プロジェクトの一部です。SMS または Facebook チャネルをデプロイしたい場合には、追加のコンテキストパラメータが必要です。SMS の場合は pinpointAppId と smsNumber (携帯電話番号)、Facebook の場合は fbSecretArn が必要です。詳細は SMS ブログと Facebook ブログ をご参照ください。
- CDK のデプロイが完了したら、CDK の出力から WhatsAppApiGatewayWebhook を確認します。
Meta コンソール
- ターミナルの CDK 出力にて、API Gateway の呼び出し URL WhatsAppApiGatewayWebhook を確認します。
- Meta for Developers コンソールに戻ります。
- WhatsApp > 設定 を選択し、Webhook 設定ページにアクセスします。
- Webhook の下にある 編集 をクリックします。
- コールバック URL には、 API ゲートウェイ呼び出し URL を指定します。
- トークンを検証 には、 AWS Secrets Manager のセットアップの手順で作成したランダム文字列を指定します。
- 確認して保存 をクリックします。
- Webhook フィールドセクションの 管理 をクリックします。
- messages の行の サブスクリプション登録 をクリックします。
- 完了をクリックします。
おめでとうございます!Amazon Connect インスタンスにデジタルチャネルとして WhatsApp が追加されました。WhatsApp ビジネステスト番号を WhatsApp アカウントの連絡先に追加し、その連絡先にメッセージを送信すると、Amazon Connect インスタンスに接続されます!
クリーンアップ
- Whatsapp アプリを削除します。Meta for Developers コンソール に移動し、マイアプリ を選択し、アプリの削除 を選択してWhatsapp アプリを削除します。
- Meta 開発者アカウントを削除します。
- AWS Secret Manager のコンソールに移動し、シークレットを削除します。
- CDK スタックを破棄します。
cdk destroy \ --context waSecretArn=<YOUR SECRET ARN> \ --context amazonConnectArn=<YOUR AMAZON CONNECT INSTANCE ARN> \ --context contactFlowId=<YOUR CONTACT FLOW ID>
まとめ
本ブログでは、Amazon Connect Chat メッセージストリーミング API と WhatsApp を例に、Amazon Connect のデジタルチャネルを構築する方法をご紹介しました。本ブログのステップに従って WhatsApp インテグレーションを実装することで、エージェントは Amazon Connect の音声、チャット、タスクに使用しているエージェントデスクトップから、WhatsApp 上の顧客メッセージの受信と返信を開始することができます。
始めるには GitHub リポジトリにアクセスし、プロジェクトをデプロイしてください!
注: これは実験用に簡単にデプロイできるように設計されたサンプルプロジェクトです。IAM ポリシーは最小権限を使用していますが、デプロイされた AWS API Gateway はパブリックにアクセスできます。次の公式ドキュメント Amazon API Gatewayでのセキュリティ に従い、AWS API Gateway のセキュリティを確保するために適切な処置を行ってください。
著者情報
Abhishek Pandey は Amazon Web Services のシニアソリューションアーキテクトです。16 年以上のエンタープライズ IT の経験を持つ Abhishek は、さまざまな業界のビジネスイノベーションをサポートする創造的なソリューションを設計するために、顧客と深く掘り下げることに情熱を注いでいます。Abhishek は、情熱、熱意、顧客支持、好奇心、創造性の秘密のブレンドを使用して、AWS クラウドの価値を解き放つためにビルダーを鼓舞します。
—
Attila は Amazon Web Services Professional Services グループの Amazon Connect コンサルタントです。コンタクトセンターの経験に加え、ソフトウェア開発とエンタープライズネットワーキングの経験があります。Attila は、顧客メリットを提供するために製品機能を強化する革新的な方法を常に模索しています。
—
AWS Contact Center Day にご参加ください。この無料のバーチャルイベントでは、カスタマーサービスの未来や、機械学習による顧客とエージェントの体験の最適化などについて学ぶことができます。今すぐ登録 >>
※訳注 オンラインイベントは2023年4月26日に開催されました。現在はイベントをオンデマンド配信でご覧いただけます。
翻訳はソリューションアーキテクトの濱上が担当しました。原文はこちらです。