【Amazon Connect】コンタクト属性の使用バイト数を確認する方法

記事タイトルとURLをコピーする

Amazon Connectはコンタクト(呼)ごとにコンタクト属性を保持することができます。
保存可能サイズは 最大32KBと記載されていますが、実際に使用しているバイト数を確認する方法を紹介します。

概要

ドキュメントには「コンタクトレコード属性セクションの最大サイズ: 32KB」と記載があります。
サイズ感はイメージできますが、「何文字記録できるの?」「超過したらどうなるの?」と気になる方もいらっしゃると思います。

Amazon Connect 機能の仕様 - Amazon Connect

超過した場合の挙動

コンタクトフロー

「コンタクト属性の設定」ブロック設定時に32KBを超過した場合、属性は設定されず、エラーへ分岐します。

API

UpdateContactAttributes で設定時に32KBを超過した場合も属性は設定されずエラーレスポンスされます。
32767バイト以内である必要がある、というメッセージが返されます。

$ aws connect update-contact-attributes \
--instance-id <instanceId> \
--initial-contact-id <contactId> \
--attributes X=123

An error occurred (InvalidParameterException) when calling the UpdateContactAttributes operation:
AttributeMap should not exceed 32767 in size

確認方法

実行結果より、32KB(32767バイト)までである、ということは分かりましたが、どの部分をカウントすればよいか確認してみます。

ケース1

キー= KEY1 、 値= VALUE1 をセットしてみます。

キー
KEY1 VALUE1
  • 「KEY1」と「VALUE1」、なので、10バイトになりそうです
  • 属性が未設定のコンタクトへ KEY1=VALUE1をセットします
$ aws connect update-contact-attributes \
--instance-id <instanceId> \
--initial-contact-id <contactId> \
--attributes KEY1=VALUE1
  • 確認します。(JSON形式で出力しています)
$ aws connect get-contact-attributes \
--instance-id <instanceId> \
--initial-contact-id <contactId> \
{
    "Attributes": {
        "KEY1": "VALUE1"
    }
}

上記結果JSONから、 KEY1 と VALUE1 をカウントしたいので、jqコマンドと組み合わせ、下記のように実行します。
(UTF-8と想定しています) 想定通り 10 と表示されました。

$ aws connect get-contact-attributes \
--instance-id <instanceId> \
--initial-contact-id <contactId> \
| jq '.Attributes | to_entries | map((.key | utf8bytelength) + (.value | utf8bytelength)) | add'
10

ケース2

同様に KEY1漢字です をセットします。

キー
KEY1 漢字です
  • 属性をセットします
$ aws connect update-contact-attributes \
--instance-id <instanceId> \
--initial-contact-id <contactId> \
--attributes KEY1=漢字です
  • 確認します
$ aws connect get-contact-attributes \
--instance-id <instanceId> \
--initial-contact-id <contactId> \
{
    "Attributes": {
        "KEY1": "漢字です"
    }
}
  • バイト数をカウントします
  • 16 と表示されました
  • KEY1 は4バイト、 日本語文字部分は 3バイト×4文字=12バイト、ということになるようです
$ aws connect get-contact-attributes \
--instance-id a87673c9-95e8-4dba-a6d9-cbc96a560ad9 \
--initial-contact-id 1658bacc-22ee-46c3-bdaa-911e712faaa0 \
| jq '.Attributes | to_entries | map((.key | utf8bytelength) + (.value | utf8bytelength)) | add'
16

最後に

上記の確認方法はUTF-8と仮定しており、最大サイズである32,767バイトまでセット、1文字超過させてエラーレスポンスされることを確認しています。
ただし、文字コードについて明記されたドキュメントは見つけられず、確定情報ではないこと、ご了承ください。

そもそも、ギリギリまで詰め込む性質の機能ではないと思いますし、想定した使用方法でどのぐらいのサイズになるのか、等、参考程度にしていただけますようお願いします。