AWS Lambda 関数を呼び出す - Amazon Connect

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Lambda 関数を呼び出す

Amazon Connect は、お客様のシステムと連携して、問い合わせフロー内のさまざまなパスを動的に使用することができます。これを実現するには、問い合わせフローで AWS Lambda 関数を呼び出して、結果を取得し、お客様独自のサービスを呼び出すか、他の AWS データストアまたはサービスと連携します。詳細については、「AWS Lambda 開発者ガイド」を参照してください。

問い合わせフローから Lambda 関数を呼び出すには、次のタスクを実行します。

Lambda 関数の作成

任意のランタイムを使用して Lambda 関数を作成し、設定します。詳細については、「」を参照してください。Lambda 関数を作成します()AWS Lambda開発者ガイド

問い合わせセンターと同じリージョンに Lambda 関数を作成した場合は、Amazon Connect コンソールを使用して Lambda 関数をインスタンスに追加できます。Lambda 関数を Amazon Connect インスタンスに追加する。これにより、Amazon Connect が Lambda 関数を呼び出すことを許可するリソースアクセス許可が自動的に追加されます。それ以外の場合、Lambda 関数が別の地域にある場合は、問い合わせフローデザイナーを使用して問い合わせフローに追加し、追加アクセス許可コマンドで、プリンシパルはconnect.amazonaws.comと Amazon Connect インスタンスの ARN。詳細については、「」を参照してください。のリソースベースのポリシーを使用するAWS Lambda()AWS Lambda開発者ガイド

Lambda 関数を Amazon Connect インスタンスに追加する

問い合わせフローで Lambda 関数を使用するには、Amazon Connect インスタンスに追加する必要があります。

Lambda 関数をインスタンスに追加する

  1. Amazon Connect コンソールを開きます。https://console.aws.amazon.com/connect/

  2. [インスタンスエイリアス] 列からインスタンスの名前を選択します。

  3. ナビゲーションペインで、[問い合わせフロー] を選択します。

  4. [AWS Lambda] セクションの [関数] ドロップダウンボックスを使用して、インスタンスに追加する関数を選択します。

    ヒント

    このドロップダウンには、インスタンスと同じリージョンにある関数のみが表示されます。関数がリストされていない場合は、新しい Lambda 関数の作成を開きます。AWS Lambdaconsole.

    別のリージョンまたはアカウントで Lambda を使用するには、AWS Lambda 関数の呼び出しの [] セクション関数を選択します。で Lambda の ARN を入力できます。次に、その Lambda に対応するリソースベースのポリシーを設定し、連絡先フローがそれを呼び出すことを許可します。詳細については、「」を参照してください。他のアカウントへのアクセス権を関数に付与する

  5. 選択Lambda 関数の追加。関数の ARN が [Lambda Functions (Lambda 関数)] の下に追加されていることを確認します。

これで、問い合わせフローの Lambda 関数を参照できるようになります。

問い合わせフローからの Lambda 関数の呼び出し

Lambda 関数を呼び出す問い合わせフローを表示するには、Lambda 統合のサンプル

  1. 問い合わせフローを開くか、作成します。

  2. の追加AWS Lambda 関数の呼び出しブロック (統合グループ) をグリッドに追加します。ブロックと分岐を結合します。

  3. [AWS Lambda 関数の呼び出し] ブロックのタイトルを選択して、プロパティページを開きます。

  4. [関数の選択] で、関数のリストからインスタンスに追加した関数を選択します。

  5. (任意) [関数入力パラメータ] で、[パラメータを追加する] を選択します。Lambda 関数の呼び出し時に Lambda 関数に送信されるキーと値のペアを指定できます。関数の [タイムアウト] の値を指定することもできます。

  6. Eclipseタイムアウト (最大 8 秒)で、Lambda がタイムアウトするまで待機する時間を指定します。この時間が経過すると、問い合わせは Error ブランチを下に進みます。

コンタクトフローからの Lambda 関数の呼び出しごとに、進行中のコンタクトに関連するデフォルトの情報セットと、関数入力パラメータ「」セクション呼び出しAWS Lambdafunctionブロックが追加されました。

Lambda 関数への JSON リクエストの例を次に示します。

{ "Details": { "ContactData": { "Attributes": {}, "Channel": "VOICE", "ContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "CustomerEndpoint": { "Address": "+1234567890", "Type": "TELEPHONE_NUMBER" }, "InitialContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "InitiationMethod": "INBOUND | OUTBOUND | TRANSFER | CALLBACK", "InstanceARN": "arn:aws:connect:aws-region:1234567890:instance/c8c0e68d-2200-4265-82c0-XXXXXXXXXX", "PreviousContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "Queue": { "ARN": "arn:aws:connect:eu-west-2:111111111111:instance/cccccccc-bbbb-dddd-eeee-ffffffffffff/queue/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "Name": "PasswordReset" }, "SystemEndpoint": { "Address": "+1234567890", "Type": "TELEPHONE_NUMBER" } }, "Parameters": { "sentAttributeKey": "sentAttributeValue" } }, "Name": "ContactFlowEvent" }

このリクエストは次の 3 つのパートに分かれています。

  • 問い合わせデータ — 問い合わせのたびに Amazon Connect によって必ず渡されます。一部のパラメータは省略可能です。

  • ユーザー属性-これらは、問い合わせに以前関連付けられていた属性です。問い合わせ属性の設定問い合わせフロー内のブロック。このマップは、保存されている属性が何もない場合は空の場合もあります。

  • パラメータ — Lambda 関数の作成時に定義されたこの呼び出しに固有のパラメータです。

呼び出しの再試行ポリシー

問い合わせフローの Lambda 呼び出しがスロットリングされた場合、リクエストは再試行されます。一般的なサービス障害 (500 エラー) が発生した場合も再試行されます。

同期呼び出しがエラーを返す場合、Amazon Connect は最大 8 秒間にわたり最大 3 回再試行します。この時点で、フローは Error ブランチを下に進みます。

Lambda の再試行方法の詳細については、エラー処理と での自動再試行AWSLambda

複数の Lambda 関数の呼び出し

Amazon Connect は、Lambda 関数のシーケンスの期間を 20 秒に制限します。合計実行時間がこのしきい値を超えるとエラーになります。Lambda 関数の実行中は無音になるため、プロンプトの再生関数間のブロックは、それらが関与し、長い相互作用を認識したままにします。

Lambda 関数のチェーンをプロンプトの再生ブロックを使用すると、20秒しきい値を超える複数の関数を呼び出すことができます。

Lambda 関数を設定して、イベントを解析します。

Lambda 関数と Amazon Connect との間で属性を正しく渡すために、呼び出しAWS Lambdafunctionブロックを作成し、適用する必要があるビジネスロジックを定義します。JSON がどのように解析されるかは、関数に使用するランタイムによって異なります。たとえば、次の例は、sing Node.JS を使用して sentAttributeKey にアクセスする方法を説明しています。

var receivedAttribute = event['Details']['Parameters']['sentAttributeKey'];

関数のレスポンスを検証する

Lambda 関数のレスポンスは、単純な文字列マップである必要があります。このマップは最大で 32 k です。Lambda に到達できない場合、関数は例外をスローし、レスポンスが認識されないか、Lambda 関数が制限時間を超え、問い合わせフローはErrorlabel。

Lambda 関数から返された出力をテストして、Amazon Connect に返されたときに正常に使用されることを確認します。次の例は、Node.JS でのサンプルのレスポンスを示します。

exports.handler = function(event, context, callback) { var resultMap = { Name:'CustomerName', Address:'1234 Main Road', CallerType:'Patient' } callback(null, resultMap); }

この例は、Python を使用したサンプルのレスポンスを示します。

def lambda_handler(event, context): resultMap = {"Name":"CustomerName","Address":"1234 Main Road","CallerType":"Patient"} return resultMap

関数から返される出力は、英数字、ダッシュ、アンダースコアのみが含まれる値を持つ、キーと値のペアのフラットオブジェクトである必要があります。ネストされた複雑なオブジェクトはサポートされません。返されるデータのサイズは、UTF-8 データの 32 KB 未満である必要があります。

次の例は、これらの Lambda 関数からの JSON 出力を示します。

{ "Name": "CustomerName", "Address": "1234 Main Road", "CallerType": "Patient" }

Lambda 関数のレスポンスを消費する

問い合わせフローで関数のレスポンスを使用するには 2 つの方法があります。Lambda から返された変数を直接参照するか、問い合わせ属性として関数から返された値を保存してから、保存された属性を参照することができます。Lambda 関数からのレスポンスへの外部参照を使用する場合、その参照は常に、最近呼び出された関数からのレスポンスを受け取ります。後続の関数が呼び出される前に関数からのレスポンスを使用するには、レスポンスを問い合わせ属性として保存するか、次の関数にパラメータとして渡す必要があります。

変数に直接アクセスする

変数に直接アクセスする場合、それらは問い合わせフローブロックで使用できますが、問い合わせ追跡レコード (CTR) には含まれません。問い合わせフローブロックで直接これらの変数にアクセスするには、[AWS Lambda 関数を呼び出す] ブロックの後にブロックを追加してから、次の例に示すようにそれらの属性を参照します。

Name - $.External.Name Address - $.External.Address CallerType - $.External.CallerType

ソース属性に指定した名前が、Lambda から返されたキー名と一致することを確認します。

変数を問い合わせ属性として保存する

変数を問い合わせ属性として保存すると、問い合わせフロー全体で使用でき、CTR に含まれるようになります。

連絡先の属性として返された値を格納して参照するには、問い合わせ属性の設定の後のコンタクトフローで呼び出しAWS Lambdafunctionブロック。選択外部向けのタイプ。使用している例に従って、[宛先キー] を returnedContactName に設定し、[ソース属性] を Name に設定します。

アドレスを追加するソース属性を使用しreturnedContactAddressとして送信先のキー。次にCallerTypeとしてソース属性を使用しreturnedContactType向けの送信先のキー

ソース属性に指定した名前が、Lambda から返されたキー名と一致することを確認します。