メルマガ
会員
募集中

若手SEのAWSコラム第8弾 Amazon Connect Wisdomのカスタムナレッジを作成

AWS
2022.6.16(更新日:2022.6.16)

はじめに

今回は気にはなっていたのですが、忙しくて手がつけられていなかった「Amazon Connect Wisdom」を動かしてみたいと思います。

通常、Amazon Connect Wisdom はコンソールから設定を行った場合”Salesforce”や”ServiceOne”との統合が必須になりますが、API を利用した場合はカスタムナレッジベースを利用することが可能であり、コンテンツの内容としては HTML 及びテキストがサポートされます。

そこで今回は、カスタムナレッジベースを利用してAmazon Connect Wisdomを利用してみます。

Amazon Connect Wisdom とは

Amazon Connect Wisdom は顧客の問い合わせを機械学習で分析し、エージェント(オペレーター)に顧客の課題を解決するために必要な情報を提供します。

エージェントは通話の内容から重要なキーワードを推測する必要はなく、「購入後、ハンドバッグを交換できる期間は?」というように質問やフレーズを入力するだけでナレッジ、Wiki、FAQ 集などサイロに分散したデータベースから適切な解決策を入手できます。

Contact Lens for Amazon Connectのリアルタイム音声分析と自然言語処理(NLP)を使用して、通話中に自動的に顧客の問題を検出し、エージェントにレコメンデーションや回答を提供します。Wisdomは、より迅速に問題解決し、顧客満足度を向上させます。

エージェントが通話の内容からフレーズを入力する必要すらないようです。

カスタムナレッジを利用するための流れ

Amazon Connect Wisdomの利用にあっては、以下の処理を行なって行きます。

①Wisdomドメインの作成
・アシスタントの作成
・ナレッジベースの作成
・アシスタントとナレッジベースの関連付け
・Amazon Connectインスタントとアシスタント及びナレッジベースとの関連付け
②Wisdomのアクセス権限の付与
③Lambda関数
④Lambda関数の環境変数の設定
⑤Lmabda関数のレイヤーの使用

・HTTPライブラリー(axios)の取り込み
・レイヤーの設定
⑥htmlを作成しS3にアップロード
⑦Amazon Connectの問い合わせフローの作成

Amazon Connect Wisdomコントラクトの設定

まずは、アシスタント、ナレッジベース、アシスタント・アソシアーション及びインテグレーション・アソシエーションを作成していきます。

作成は、AWS CloudShellで操作を行います。もちろん、AWS CLIでも操作は可能です。

・アシスタント(Assistant)とは
トップレベルのリソースでドメインを作成します。

・ナレッジベース(Knowledge Base)とは
「知識ベース」とも呼ばれ、業務の経験やノウハウを一ヶ所にまとめたデータベースであり、検索・活用しやすい状態にしたもの。

・アシスタント・アソシアーション(Assistant Association)とは
アシスタントとナレッジベースを関連づけることをいいます。

・インテグレーション・アソシエーション(Integration Association)とは
アシスタントとナレッジベースをAmazon Connectに関連づけることをいいます。

■アシスタントの作成

まずは、アシスタントから作成します。作成は、AWS CloudShell (またはAWS CLI) で行います。

Amazon Connect Wisdom APIの create-assistant CLIコマンドを使用して、トップレベルのアシスタントリソースを作成します。

   $ aws wisdom create-assistant –name TestWisdom – type AGENT

コマンドを実行すると、以下のとおり “assistantId”と”assistantArn”が返されます。
返却される”assistantId” と “assistantArn” の値は、次のコマンドで使用しますのでこの値を保存してください。

・結果

■ナレッジベースの作成

次に、”CUSTOM”を指定したナレッジベースを作成します。
create-knowledge-base CLIコマンドを使用して、カスタムタイプの新しいナレッジベースリソースを作成します。

        $ aws wisdom create-knowledge-base –name TestKnowledgeBase –knowledge-base-type CUSTOM

このコマンドは、”knowledgeBaseId”と”knowledgeBaseArn”を返します。返却される”knowledgeBaseId”と”knowledgeBaseArn”の値は次のコマンドのために保存してください。

・結果

■アシスタントとナレッジベースの関連付け

以下のコマンドで、アシスタントナレッジベースを関連付けます。

create-assistant-association CLIコマンドを使用して、前に作成したアシスタントとナレッジベースとをリンクします。

       $ aws wisdom create-assistant-association –assistant-id ○○○○○ –association knowledgeBaseId-○○○○○ –association-type KNOWLEDGE_BASE

このコマンドは、以下のとおり返します。

・結果

■Amazon Connectインスタンスとアシスタント及びナレッジベースとの関連付け

作成したアシスタントとナレッジベースをそれぞれAmazon Connectインスタンスに関連付けます。
Amazon Connectのcreate-integration-association CLIコマンドを使用して、前のステップで作成したアシスタントとナレッジベースの両方をそれぞれAmazon Connectインスタンスにリンクします。
これにより、アシスタントをConnect連絡先フローに追加して、エージェントが自動推奨を確認できるようになります。
これらのアーティファクトを作成したときのintegrationArnとknowledgeBaseArnを使用します。
また、IntegrationAssociationIDの値を保存してください。

①Amazon Connectとアシスタントの関連付け

create-integration-association CLIコマンドを使用してAmazon Connectインスタントとアシスタントを関連付けます。

     $ aws connect create-integration-association –instance-id ○○○○○ –integration-type WISDOM_ASSISTANT –integration-arn arn:aws:wisdom:○○○○○

・結果

②Amazon Connectとナレッジベースの関連付け

create-integration-association CLIコマンドを使用してAmazon Connectインスタントとナレッジベースを関連付けます。

     Aws connect create-integration-association –instance-id○○○○○ –integration-type WISDOM_KNOWLEDGE_BASE –integration-arn arn:aws:wisdom:○○○○○

・結果

これで Amazon Connect Wisdom 側の設定は完了です。
Amazon ConnectコンソールからWisdomを開いてみると、Wisdomドメインで”TestWisdom”が作成されているのが分かります。

アクセス権限の許可

コンテンツをWisdomにアップロードする権限が必要です。権限の設定がなされていなければ、権限の設定を忘れないでください。
確認のため、Wisdomの権限設定の方法を記載していきます。

①まず、Lambda関数作成で使用したロールをAWS IAMから開きます。
次に、右下の”インラインポリシーの追加”をクリックします。

②”インラインポリシーの追加”のページが開いたら、サービス名”Wisdom”を選択して、リソースで権限を設定します。設定が終わったら右下の”ポリシーの確認”をクリックします。

③ポリシーの確認画面が表示されるので、内容を確認して右下の”ポリシーの作成”をクリックします。

④ロールの概要で、ポリシー名に”Amazon Connect_Wisdom”があれば成功です。

Lambda関数の作成

CLIを使ってWisdomアシスタントとナレッジベースのセットアップが完了したので、S3からWisdomナレッジベースにナレッジを取り込むLambda関数を作成して設定します。
今回はLambda関数のサンプルを利用します。なお、サンプルはS3バケットにオブジェクトを追加または削除すると、JavaScriptコードがLambda関数で実行されますので注意してください。
サンプルは以下にあります。

※参照

https://github.com/amazon-connect/amazon-connect-snippets/blob/master/projects/WisdomAPI/content.html

Lambda関数の環境変数の設定

今回、サンプルで提供されているLambda関数は、KnowledgeBaseIdを環境変数から取得しています。そのため、環境変数”KNOWLEDGE_BASE_ID”にナレッジベースの作成で取得した”knowledgeBaseId”の値を指定します。

Lambdaレイヤーのノードモジュールを使用する

サンプルのLambda関数では、コンテンツをアップロードするためのHTTPリクエストを実行するために、axiosと呼ばれるpromiseベースのHTTPライブラリを使用しています。

WisdomAPIは最新のAWS SDKバージョンでのみ利用可能であるため、Lambda関数も最新のAWS SDKが必要です。Lambdaレイヤーを作成し、それをLambda関数で使用します。

ローカルマシン上に”nodejs”のディレクトリを作成し、Nodejs用の最新のAWS SDKをダウンロードしてインストールします。なお、nodejsディレクトリー名は”nodejs”として下さい。

以下のとおりコマンドを実行していきます。

■HTTPライブラリ(axios)の取り込み

①コマンド”npm init”を実行します。

②package nameを入力し改行します。

③”description”は”This is test”、”author”を入力して、改行します。

④package jsonの値が戻りますので、確認して”yes”と入力して改行します。

⑤コマンド”npm install”でインストールします。

⑥インストールが完了すると、以下の画面になります。

これで、Nodejs用の最新のAWS SDKのインストールは終了です。

次に、nodejsディレクトリを”lambda-layer.zip”という名前で圧縮して、LambdaコンソールまたはCLIからzipファイルを使用してLambdaレイヤーを作成します。

■レイヤーの設定

NodejsレイヤーをLambda関数に追加します。

①レイヤーの画面を開く

AWS Lambdaのコンソール画面を開き、左側の”レイヤー”をクリックします。

②レイヤーの設定

レイヤー作成画面で、名前欄に”レイヤー名”を入力し、”.zipファイルをアップロード”にチェックを入れます。”アップロード”ボタンをクリックして、先ほど”HTTPライブラリ(axios)の取り込み”で作成した、ZIPファイルを設定します。次に、”互換性のあるランタイム”に”Nodejs14.x”を指定します。”作成”ボタンをクリックします。

③バージョンの作成

次にバージョンの作成を行います。画面の内容を確認して、”バージョンの作成”ボタンをクリックします。

■Lambda関数にレイヤーを追加

Lambda関数にレイヤーを追加登録します。
Lambda関数作成画面をスクロールダウンして、レイヤーの項目までスクロールします。
右側の”レイヤーの追加”ボタンをクリックします。

レイヤーの追加画面が開いたら、”レイヤーを選択”の”レイヤーソース”で”カスタムレイヤー”のチェックボタンにチェックを入れます。次に、”カスタムレイヤー”の項目にプルダウンメニューで作成したレイヤーを選択します。”追加”ボタンをクリックします。

以上でレイヤーの作成は終了です。

htmlファイルの作成・保存

サンプルとして、以下のようなhtmlファイルをいくつか、英語バージョンと日本語バージョンで作成しました。

<!DOCTYPE html>
<html lang=”ja”>
  <head>
    <meta charset=”UTF-8″>
    <meta name=”viewport” content=”width=device-width, initial-scale=1.0″ />
    <!–
          <meta http-equiv=”X-UA-Compatible” content=”ie=edge” />
    –>
    <title>Wisdom Content</title>
  </head>
  <body>
      <tr>
        <td>What is Amazon Connect?</td><br>
        <td>Amazon Connect is an omnichannel cloud contact center. You can set up a contact center
                in a few steps, add agents who are located anywhere, and start engaging with your customers.
        </td>
      </tr>
  </body>
</html>

それをS3に保存します。

サンプルファイルがナレッジベースに登録されたかを list-contentsコマンドで確認すると、以下のように表示されました。

ちゃんと登録されています。これで、登録は大丈夫です。

Amazon Connectの問い合わせフローの作成

最後に、Amazon Connectで問い合わせフローの作成とWisdomのセキュリティ・プロファイルの設定を行います。

■問い合わせフローの作成

問い合わせフローの設定の項目より、”Wisdom”ブロックをフローに追加します。
追加した”Wisdom”ブロックに先ほど作成したWisdomのドメインを設定します。

■セキュリティ・プロファイルの設定

次に、セキュリティ・プロファイルを開きます。項目”エージェントアプリケーション”のタイプ”Wisdom”のすべてのチェックボックスにチェック入れます。”保存”ボタンをクリックして保存します。

以上でAmazon Connectで問い合わせフローの作成とWisdomのセキュリティ・プロファイルの設定は終了です。
次はテストを行ってみます。

テストをやってみる

エージェントアプリケーション(agent-app-v2)にアクセスします。
外部から電話をかけると以下の画面になります。

電話を受電した後、右上のWisdomの検索バーから”amazon connect”と入力してサーチを行うと記事一覧が取得できました。

Wisdomのカスタムナレッジを利用して、S3にコンテンツをおいて”検索結果”を表示できました。

さらに、右側の記事一覧から記事 (Wisdom/sample_en2html) をクリックすると中ほどにタグが追加され、記事の内容が表示されました。

また、実際に通話もしてみたのですが、Wisdomを”検索結果”から”提案”に変更したところ、”この通話では提案は使用できません”と表示されて、残念ながら”提案”を得ることは出来ませんでした。もう少し調査する必要があります。

最後に

一から Amazon Connect Wisdom のカスタムナレッジを設定する方法について学べたので、大変良かったです。ただ、”提案”を表示できなかったのは、残念な結果でした。 AWSのサポートに確認してみたところ、Amazon Connect Wisdom APIでカスタムナレッジを作成した場合、”通話中の提案”と”日本語のナレッジ”の表示は、まだ日本語対応していないとのことでした、いい機能ですので残念です。日本語対応を待ちたいところですね。

Amazon Connectを触り始めたころから、通話中に問合せに関するヒントとなるようなデータがFAQやマニュアルから自動的に画面に表示されるようにしたいなと考えていました。

今回のこの方法を利用すれば、自社のマニュアルやFAQなどのデータベースから適切な解決策をすぐに入手できるので、願ってもないサービスですし、顧客やエージェントにとってより良いサービスだと思います。

如何でしたか? 一部上手くいかない部分もありましたが、AmazonConnect Wisdomにカスタムナレッジを設定することができました。

これからAmazon Connectを始められる方、Amazon Connectについてお聞きしたいこと等ございましたら、お気軽に問い合わせ下さい。