📝

Amazon Connect のハンズオンを AWS CLI でやってみる #3

に公開

Amazon Connect のハンズオンを AWS CLI でやってみるシリーズの 3 回目です。
各回については以下のリンクからご覧ください。

今から始める Amazon Connect 入門 #3 | DevelopersIO
前回は電話番号の取得を行いました。
今回は問い合わせフローの作成を行います。

前提

  • AWS CLI の実行環境は CloudShell
  • 使用リージョンはバージニア北部

01. オペレーション時間の作成

create-hours-of-operation — AWS CLI 2.31.22 Command Reference

$ INSTANCE_ID="your-instance-id"

$ aws connect create-hours-of-operation \
--instance-id "$INSTANCE_ID" \
--name "Handson Business Hours" \
--description "Handson Business Hours" \
--time-zone "Asia/Tokyo" \
--config '[
    {
      "Day": "MONDAY",
      "StartTime": {
        "Hours": 9,
        "Minutes": 0
      },
      "EndTime": {
        "Hours": 18,
        "Minutes": 0
      }
    },
    {
      "Day": "TUESDAY",
      "StartTime": {
        "Hours": 9,
        "Minutes": 0
      },
      "EndTime": {
        "Hours": 18,
        "Minutes": 0
      }
    },
    {
      "Day": "WEDNESDAY",
      "StartTime": {
        "Hours": 9,
        "Minutes": 0
      },
      "EndTime": {
        "Hours": 18,
        "Minutes": 0
      }
    },
    {
      "Day": "THURSDAY",
      "StartTime": {
        "Hours": 9,
        "Minutes": 0
      },
      "EndTime": {
        "Hours": 18,
        "Minutes": 0
      }
    },
    {
      "Day": "FRIDAY",
      "StartTime": {
        "Hours": 9,
        "Minutes": 0
      },
      "EndTime": {
        "Hours": 18,
        "Minutes": 0
      }
    }
  ]'

$ HOURS_OF_OPERATION_ID="your-operation-id"

02. キューの作成

create-queue — AWS CLI 2.31.22 Command Reference

$ aws connect list-phone-numbers \
--instance-id "$INSTANCE_ID" \
--query "PhoneNumberSummaryList[0].Id"
"xxx"

$ PHONE_NUMBER_ID="your-phone-number-id"

$ aws connect create-queue \
--instance-id "$INSTANCE_ID" \
--name "Handson Book Queue" \
--description "Handson Book Queue" \
--hours-of-operation-id "$HOURS_OF_OPERATION_ID" \
--outbound-caller-config OutboundCallerIdNumberId="$PHONE_NUMBER_ID"

$ BOOK_QUEUE_ID="your-book-queue-id"

$ aws connect create-queue \
--instance-id "$INSTANCE_ID" \
--name "Handson Music Queue" \
--description "Handson Music Queue" \
--hours-of-operation-id "$HOURS_OF_OPERATION_ID" \
--outbound-caller-config OutboundCallerIdNumberId="$PHONE_NUMBER_ID"

$ MUSIC_QUEUE_ID="your-music-queue-id"

# BasicQueue にアウトバウンド ID を指定するための設定
$ aws connect list-queues \
--instance-id "$INSTANCE_ID" \
--query "QueueSummaryList[?Name=='BasicQueue'].Id"
[
    "xxx"
]

$ BASIC_QUEUE_ID="your-BasicQueue-id"

$ aws connect update-queue-outbound-caller-config \
--instance-id "$INSTANCE_ID" \
--queue-id "$BASIC_QUEUE_ID" \
--outbound-caller-config OutboundCallerIdNumberId="$PHONE_NUMBER_ID"

03. ルーティングプロファイルの作成

create-routing-profile — AWS CLI 2.8.7 Command Reference

$ aws connect create-routing-profile \
--instance-id "$INSTANCE_ID" \
--name "Handson Book Profile" \
--description "Handson Book Profile" \
--default-outbound-queue-id "$BOOK_QUEUE_ID" \
--queue-configs '[
    {
      "QueueReference": {
        "Channel": "VOICE",
        "QueueId": "$BOOK_QUEUE_ID"
      },
      "Priority": 1,
      "Delay": 0
    }
  ]' \
--media-concurrencies '[
    {
      "Channel": "VOICE",
      "Concurrency": 1,
      "CrossChannelBehavior": {
        "BehaviorType": "ROUTE_CURRENT_CHANNEL_ONLY"
      }
    }
  ]' \
--agent-availability-timer TIME_SINCE_LAST_ACTIVITY

$ BOOK_PROFILE_ID="your-book-profile-id"

$ aws connect create-routing-profile \
--instance-id "$INSTANCE_ID" \
--name "Handson Music Profile" \
--description "Handson Music Profile" \
--default-outbound-queue-id "MUSIC_QUEUE_ID" \
--queue-configs '[
    {
      "QueueReference": {
        "Channel": "VOICE",
        "QueueId": "MUSIC_QUEUE_ID"
      },
      "Priority": 1,
      "Delay": 0
    }
  ]' \
--media-concurrencies '[
    {
      "Channel": "VOICE",
      "Concurrency": 1,
      "CrossChannelBehavior": {
        "BehaviorType": "ROUTE_CURRENT_CHANNEL_ONLY"
      }
    }
  ]' \
--agent-availability-timer TIME_SINCE_LAST_ACTIVITY

$ MUSIC_PROFILE_ID="your-music-profile-id"

04. ユーザーの作成

create-user — AWS CLI 2.31.22 Command Reference

# Agent のセキュリティプロファイルの ID を取得
$ aws connect list-security-profiles \
--instance-id "$INSTANCE_ID" \
--query "SecurityProfileSummaryList[?Name=='Agent'].Id"
[
    "xxx"
]

$ AGENT_PROFILE_ID="your-agent-profile-id"

$ aws connect create-user \
--instance-id "$INSTANCE_ID" \
--username "Book" \
--password "your-password" \
--identity-info FirstName=Book,LastName=Handson \
--phone-config PhoneType=SOFT_PHONE,AutoAccept=false,AfterContactWorkTimeLimit=0,PersistentConnection=true \
--security-profile-ids "$AGENT_PROFILE_ID" \
--routing-profile-id "$BOOK_PROFILE_ID"

$ aws connect create-user \
--instance-id "$INSTANCE_ID" \
--username "Music" \
--password "your-password" \
--identity-info FirstName=Music,LastName=Handson \
--phone-config PhoneType=SOFT_PHONE,AutoAccept=false,AfterContactWorkTimeLimit=0,PersistentConnection=true \
--security-profile-ids "$AGENT_PROFILE_ID" \
--routing-profile-id "$MUSIC_PROFILE_ID"

05. 問い合わせフローの作成

create-contact-flow — AWS CLI 2.31.22 Command Reference

# 顧客キューの作成
$ aws connect create-contact-flow \
--instance-id "$INSTANCE_ID" \
--name "Handson customer queue" \
--type CUSTOMER_QUEUE \
--content '{
  "Version": "2019-10-30",
  "StartAction": "action-1",
  "Metadata": {
    "entryPointPosition": {
      "x": 242.4,
      "y": 172
    },
    "ActionMetadata": {
      "action-1": {
        "position": {
          "x": 432.8,
          "y": 236
        },
        "parameters": {
          "Messages": []
        }
      },
      "action-2": {
        "position": {
          "x": 678.4,
          "y": 264.8
        }
      }
    }
  },
  "Actions": [
    {
      "Identifier": "action-1",
      "Type": "MessageParticipantIteratively",
      "Parameters": {
        "Messages": [
          {
            "Text": "お電話ありがとうございます。\nしばらくお待ちください。"
          }
        ],
        "ContinueMessagingDuringInterrupt": "false"
      },
      "Transitions": {
        "NextAction": "action-2",
        "Errors": [
          {
            "ErrorType": "NoMatchingError",
            "NextAction": "action-2"
          }
        ]
      }
    },
    {
      "Identifier": "action-2",
      "Type": "DisconnectParticipant",
      "Parameters": {},
      "Transitions": {}
    }
  ]
}'

$ CUSTOMER_QUEUE_ID="your-customer-queue-id"

# コンタクトフローの作成
$ aws connect create-contact-flow \
--instance-id "$INSTANCE_ID" \
--name "Handson inbound flow" \
--type CONTACT_FLOW \
--content '{
  "Version": "2019-10-30",
  "StartAction": "action-1",
  "Metadata": {
    "entryPointPosition": {
      "x": 40,
      "y": 40
    },
    "ActionMetadata": {
      "action-1": {
        "position": {
          "x": 148,
          "y": 36
        },
        "parameters": {
          "TextToSpeechVoice": {
            "languageCode": "ja-JP"
          }
        },
        "overrideConsoleVoice": true
      },
      "action-2": {
        "position": {
          "x": 372,
          "y": 46.4
        },
        "parameters": {
          "EventHooks": {
            "CustomerQueue": {
              "displayName": "Handson customer queue"
            }
          }
        },
        "contactFlow": {
          "text": "Handson customer queue",
          "id": "$CUSTOMER_QUEUE_ID"
        },
        "customerOrAgent": true
      },
      "action-3": {
        "position": {
          "x": 736.8,
          "y": 327.2
        }
      },
      "action-4": {
        "position": {
          "x": 153.6,
          "y": 271.2
        },
        "parameters": {
          "QueueId": {
            "displayName": "Handson Book Queue"
          }
        },
        "queue": {
          "text": "Handson Book Queue"
        }
      },
      "action-5": {
        "position": {
          "x": 403.2,
          "y": 276.8
        }
      }
    }
  },
  "Actions": [
    {
      "Parameters": {
        "TextToSpeechEngine": "Neural",
        "TextToSpeechStyle": "None",
        "TextToSpeechVoice": "Kazuha"
      },
      "Identifier": "action-1",
      "Type": "UpdateContactTextToSpeechVoice",
      "Transitions": {
        "NextAction": "action-2",
        "Errors": [
          {
            "NextAction": "action-3",
            "ErrorType": "NoMatchingError"
          }
        ]
      }
    },
    {
      "Parameters": {
        "EventHooks": {
          "CustomerQueue": "CUSTOMER_QUEUE_ID"
        }
      },
      "Identifier": "action-2",
      "Type": "UpdateContactEventHooks",
      "Transitions": {
        "NextAction": "action-4",
        "Errors": [
          {
            "NextAction": "action-3",
            "ErrorType": "NoMatchingError"
          }
        ]
      }
    },
    {
      "Parameters": {},
      "Identifier": "action-3",
      "Type": "DisconnectParticipant",
      "Transitions": {}
    },
    {
      "Parameters": {
        "QueueId": "$BASIC_QUEUE_ID"
      },
      "Identifier": "action-4",
      "Type": "UpdateContactTargetQueue",
      "Transitions": {
        "NextAction": "action-5",
        "Errors": [
          {
            "NextAction": "action-3",
            "ErrorType": "NoMatchingError"
          }
        ]
      }
    },
    {
      "Parameters": {},
      "Identifier": "action-5",
      "Type": "TransferContactToQueue",
      "Transitions": {
        "NextAction": "action-3",
        "Errors": [
          {
            "NextAction": "action-3",
            "ErrorType": "QueueAtCapacity"
          },
          {
            "NextAction": "action-3",
            "ErrorType": "NoMatchingError"
          }
        ]
      }
    }
  ]
}'

$ CONTACT_FLOW_ID="your-contact-flow-id"

06. 電話番号にフローを関連付ける

associate-phone-number-contact-flow — AWS CLI 2.31.22 Command Reference

$ aws connect associate-phone-number-contact-flow \
--instance-id "$INSTANCE_ID" \
--phone-number-id "$PHONE_NUMBER_ID" \
--contact-flow-id "$CONTACT_FLOW_ID"

07. 動作確認

CCP から架電して日本語の音声が聞こえれば OK です。

まとめ

今回は Amazon Connect のハンズオンを AWS CLI でやってみるシリーズの 3 回目として、問い合わせフローの作成を行いました。
次回は問い合わせフローの作成の続きからやっていきます。

参考資料

Discussion