0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon Connect “オペレーション時間” 機能で実現する自動開閉局制御

Posted at

目次

  1. アーキテクチャ全体像
  2. 概要
  3. 詳細設計
  4. 比較分析
  5. テスト・検証計画
  6. 注意点&運用設計
  7. まとめ&拡張ポイント

アーキテクチャ全体像 🚀

顧客端末 ─▶ Route 53 ─▶ Amazon Connect インスタンス 
     │                     │
     │                     ├─ キュー設定(営業時間判定)
     │                     └─ コンタクトフロー(Check Hoursブロック)
     ▼                     │
  FAQ/IVR ←───────────────┘

こんな感じで、営業時間に応じてオペレーター対応かFAQガイダンスに振り分けるイメージです。


1. 概要 👍

“オペレーション時間”機能って、要は定義した営業日・営業時間だけコールを受け付けて、それ以外は自動ガイダンスに切り替える仕組みです。

  • 営業時間内 → オペレーター
  • 営業時間外 → 自動IVR or 留守番ガイダンス

ユースケースとしては…

  • EC注文前後の問い合わせ
  • 定期購入プランの変更や解約
  • キャンペーン案内

みたいな場面で「営業時間忘れて夜中にかかってきても大変だよね?」って問題をスマートに解決できると思います。


2. 詳細設計 🛠️

2.1 活用パターン

  • パターンA:キュー設定
    キューに直接営業時間カレンダーを紐付けて、一律制御。
  • パターンB:フロー内ブロック
    コンタクトフローの任意箇所に時間判定ブロックを入れて、細かく分岐処理が可能。

2.2 設定箇所①:キュー設定

  1. コンソール → 連絡先キュー → 対象キュー
  2. 「営業時間」タブでカレンダーを選ぶだけ。ラクチンですよね?
  3. 保存しておしまい!

CloudFormation例

Resources:
  SupportQueue:
    Type: AWS::Connect::Queue
    Properties:
      InstanceId: !Ref ConnectInstance
      Name: "CustomerSupportQueue"
      HoursOfOperationId: !Ref BusinessHoursJP

2.3 設定箇所②:コンタクトフロー内ブロック

  1. コンソール → Contact flows → フロー編集
  2. 「Check hours of operation」ブロックをポイッと配置
  3. カレンダー選んで、Within/Outsideの分岐先を設定するだけ!
<CheckHoursOfOperation
  HoursOfOperationARN="arn:aws:connect:…:hours-of-operation/BusinessHoursJP"
  IfWithinHoursBranch="InsideFlow"
  IfOutsideHoursBranch="OutsideFlow"/>

フロー設計は少し慣れが必要だけど、時間外の対応をめっちゃ柔軟に作れるのが魅力です。


2.4 祝日カレンダー自動更新 Lambdaサンプル 🎉

import boto3, requests, datetime, json

CONNECT_ID = "abcdefgh-1234-5678-..."
HOURS_ID   = "hours-01"
API_URL    = "https://holidays-jp.github.io/api/v1/date.json"

def lambda_handler(event, _):
    holidays = requests.get(API_URL).json()
    config = []
    for d in holidays:
        date = datetime.datetime.fromisoformat(d)
        config.append({
            "Day": date.strftime("%A").upper(),
            "StartTime": {"Hour":0, "Minute":0},
            "EndTime":   {"Hour":0, "Minute":0}
        })
    boto3.client("connect").update_hours_of_operation(
        InstanceId=CONNECT_ID,
        HoursOfOperationId=HOURS_ID,
        Config=config
    )

EventBridgeで月次トリガーすれば、祝日カレンダーはほぼメンテナンスフリーかなと思います。


3. 比較分析:キュー vs. フロー内ブロック 🔍

観点 キュー設定 フロー内ブロック
難易度 ★★☆☆☆(ポチポチ設定するだけ) ★★★★☆(フロー設計が必要)
運用性 ★★★★☆(即時反映で楽) ★★★☆☆(流れをデプロイする必要アリ)
拡張性 ★★☆☆☆(起動/停止のみ) ★★★★★(複雑な分岐OK)
保守性 ★★★☆☆(シンプルで見通し良し) ★★☆☆☆(ブロック増えると管理大変)
テスト容易性 ★★★★☆(時間判定だけテスト可) ★★★☆☆(フロー全体の結合テスト必須)

それぞれメリット・デメリットがありますが、「なるべくラクしたい!」ならキュー設定、「柔軟性重視!」ならフロー内ブロックかなと思います。


4. テスト・検証計画 ✅

  1. 単体テスト

    • 平日・祝日・時間外で分岐動作チェック
  2. 結合テスト

    • IVR → キュー → オペレーターまでシナリオ実行
  3. シナリオテスト

    • 祝日API更新後の動作確認
  4. 負荷テスト

    • ピーク時間の同時着信数チェック

「テスト大事!ミスるとお客さんに怒られますよね?」ってことで、しっかりやりましょう。


5. 注意点&運用設計 ⚙️

  • 二重判定に注意:キューとフロー両方設定すると意図しない分岐に…

  • 多言語対応:最初に言語判定してからカレンダー判定すると分かりやすいです

  • モニタリング

    • CloudWatch メトリクス QueueAbandonedCountContactFlowErrorCount を監視
    • 営業開始後10分で通話数が極端に少ないときはアラートを飛ばすと安心

6. まとめ&拡張ポイント 🌱

  • キュー設定

    • 簡単・即時反映だが拡張性は控えめ
  • フロー内ブロック

    • 柔軟性バツグンも保守とテストがちょっと大変

今後の拡張アイデア

  • AIチャットボット:Lex+Pollyで時間外にも会話対応!
  • セルフサービスポータル:API連携で折り返しリクエストやFAQ表示
  • BI連携:QuickSightで時間帯別通話トラフィックを可視化

ぜひ自社要件に合わせてカスタマイズしてみてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?