CDKを使用してAmazon ConnectのFlowを構築する方法

2023.10.23

こんにちは稲葉です。

本記事では、cdkを使用してAmazon ConnectのFlowを構築していきたいと思います。

Preparation

はじめにcdkプロジェクトを作成します。今回はTypeScriptを使用。

mkdir cdk-connect
cd cdk-connect
cdk init app --language typescript

Stack

全体的なフローは以下のキャプチャのように 「Set voice -> Play prompt -> Disconnect」 のような簡単なフローを構築していきます。

connect_flow_image

import * as cdk from "aws-cdk-lib";
import { Construct } from "constructs";

export class CdkConnectStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    const connectInstance = new cdk.aws_connect.CfnInstance(
      this,
      "connect-instance",
      {
        attributes: {
          inboundCalls: false,
          outboundCalls: true,
        },
        identityManagementType: "CONNECT_MANAGED",
        instanceAlias: `connect-instance-test`,
      }
    );

    new cdk.aws_connect.CfnContactFlow(this, "connect-flow", {
      content: JSON.stringify({
        Version: "2019-10-30",
        StartAction: "SetVoice",
        Metadata: {
          entryPointPosition: {
            x: 20,
            y: 19,
          },
          ActionMetadata: {
            SetVoice: {
              position: {
                x: 181,
                y: 80,
              },
            },
            PlayPrompt: {
              position: {
                x: 421,
                y: 81,
              },
            },
            Disconnect: {
              position: {
                x: 660,
                y: 82,
              },
            },
          },
        },
        Actions: [
          {
            Identifier: "SetVoice",
            Type: "UpdateContactTextToSpeechVoice",
            Parameters: {
              TextToSpeechVoice: "Kazuha",
            },
            Transitions: {
              NextAction: "PlayPrompt",
              Conditions: [],
            },
          },
          {
            Identifier: "PlayPrompt",
            Type: "MessageParticipant",
            Parameters: {
              Text: "アラートが発生していますので、確認してください",
            },
            Transitions: {
              NextAction: "Disconnect",
              Errors: [
                {
                  NextAction: "Disconnect",
                  ErrorType: "NoMatchingError",
                },
              ],
              Conditions: [],
            },
          },
          {
            Identifier: "Disconnect",
            Type: "DisconnectParticipant",
            Parameters: {},
            Transitions: {},
          },
        ],
      }),
      instanceArn: connectInstance.attrArn,
      name: "ContactFlow",
      type: "CONTACT_FLOW",
    });
  }
}

CfnContactFlowのcontentにはAmazon Connect Flow languageで一連のフローを記述していきます。

参照:(https://docs.aws.amazon.com/ja_jp/connect/latest/APIReference/flow-language.html

Metadataのx、yは、各アクションの表示される位置を表します。今回はこの数値で定義します。(お好きな数値で構いません)

Actionsで各アクションを定義していきます。

NextActionで言葉の通り、次のアクションを定義します。ここで注意しないといけないのが、指定するアクションはIdentifierで定義したものでなければならないことです。

何かしらのエラーが起きた際のフローはErrorsに定義します。アクションによってはエラーフローがないものもあるため、マネジメントコンソールで要確認!

以上で実装は完了です!デプロイして確認します。

cdk deploy

Confirmation

Amazon Connectに移動して、今回作成したconnect-instance-testを選択し、URLを押すと別タブでWindowが開かれます。

次にFlows画面に移動して先ほど作成したContactFlowをクリックします。

flows_list

そうすると、最初に想定したフローと同じものが作成されていることが確認できると思います。

connect_flow_image

Summary

本記事では、cdkを使用して、Amazon ConnectのFlowを構築しました。

これからもcdkを使用して何かしらのAWSサービスを構築した記事を投稿していきたいと思います。

最後まで読んでくださりありがとうございました!