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?

今回もAmazonConnectの記事になります。環境構築していく中で短縮発信の登録要望があり、AmazonConnectではクイック接続という機能で実現することになるのですがこの画面で、1件ずつポチポチするのがすごく面倒くさい...:angry:
image.png
10件ぐらいなら許容できるけど、20件超えると手動はつらい。:dizzy_face:

ユーザ登録はCSVファイルでアップロードできるけど、何故かクイック接続登録はCSV未対応です。

そこでAmazonConnectのAPIはあるそうなので、CSVから読み出して登録する自動化スクリプトを作ってみます。

【前提条件】

  • Lambdaを設定するのは面倒なので、AWSコンソールでさくっと実行できるCloud Shellで設定します。
  • AWSコンソールにログインしているユーザはAmazonConnectアクセスやCloudshellの実行権限が必要になります。
  • スクリプトはPythonで記述します。
  • 今回登録するクイック接続タイプは電話番号です。

1インスタンスあたりのクイック接続登録数はデフォルト100です。100件以上登録する場合はサービスクォーター上限の緩和申請をしましょう。

「Cloudshell」は コンソール右上の:arrow_forward:っぽいアイコンで起動できます。
image.png

まずPythonファイルを新規作成します。

vim upload.py

中身は以下内容で記述します。

import boto3
import csv

client = boto3.client('connect')

# ConnectインスタンスID 
instance_id = '実環境のインスタンスID'
file_name = 'name.csv'

try:
    with open(file_name, mode='r', encoding='utf-8') as f:
        # A列(0), B列(1) の形式なので delimiter=',' を指定
        reader = csv.reader(f)
        
        print(f"Starting process using {file_name}...")

        for row in reader:
            # 行が空の場合や、列が足りない場合はスキップ
            if not row or len(row) < 2:
                continue

            # A列(0)をNameに、B列(1)をPhoneNumberに割り当て
            name = row[0].strip()
            phone_raw = row[1].strip()

            # 電話番号の先頭が '0' の場合、国際番号形式 '+81' に変換
            if phone_raw.startswith('0'):
                phone_number = '+81' + phone_raw[1:]
            else:
                phone_number = phone_raw

            try:
                response = client.create_quick_connect(
                    InstanceId=instance_id,
                    Name=name,
                    Description='Created via Python bulk upload',
                    QuickConnectConfig={
                        'QuickConnectType': 'PHONE_NUMBER',
                        'PhoneConfig': {
                            'PhoneNumber': phone_number
                        }
                    },
                )
                print(f"Success! Registered: {name} ({phone_number})")

            except Exception as e:
                print(f"Failed to register {name}: {e}")

except Exception as e:
    print(f"File Error: {e}")

続いて登録したい情報を記載したCVSファイルを作成し、アップロードします。
CSVファイルはA列に名前(登録名)でB列に電話番号を記載します。

image.png

イメージはこんな感じ

アップロードは簡単にGUIでできるようになっています。
image.png

アップロード後は同じディレクトリにuploda.pyとname.csvがいます。

~ $ ls -l
total 12
-rw-r--r--. 1 cloudshell-user cloudshell-user 3753 Dec  9 00:45 name.csv
-rw-r--r--. 1 cloudshell-user cloudshell-user   93 Nov 17 05:44 qc_config.json
-rw-r--r--. 1 cloudshell-user cloudshell-user 1685 Dec  7 06:56 upload.py
~ $ 

あとはupload.pyを実効するだけです。

~ $ python upload.py | more
Starting process using name.csv...
Success! Registered: test-userA (+8190XXXXXXXX)
Success! Registered: test-userB (+8190XXXXXXXX)

~csvに記載した数分が登録される~

クイック接続登録.png

これでひたすらコピペする苦行はせずに済むと思います:v:

【参考にしたサイト】

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?