Amazon Connect の CCP を自動取得する Chrome 拡張機能を作ってみた
Download and review Amazon Connect Contact Control Panel (CCP) logs - Amazon Connect
現時点では CCP ログを定期的に自動取得する機能は提供されていないため、Chrome 拡張を作ってみました。
概要
- CCP で 5 分ごとにログを取得
- ログ取得のために /settings に都度遷移
- /settings から元のタブに戻る操作は手動
1. 拡張機能のフォルダとファイル作成
ローカル PC 内に任意のフォルダを作成し、以下のファイルを作成します。
- manifest.json
- content.js
- background.js
今回は以下のようなフォルダ構成にしました。
CCP_AutoDownload/
├── manifest.json
├── content.js
├── background.js
2. ファイルの編集
各種ファイルの内容は以下の通りです。
content.js の your-connect-url は自身の Amazon Connect インスタンスの URL に置換します。
manifest.json
{
"manifest_version": 3,
"name": "CCP Auto Log Downloader",
"version": "1.0",
"description": "CCP ログを 5 分ごとに自動ダウンロード",
"permissions": ["scripting", "activeTab", "tabs"],
"host_permissions": ["https://*.my.connect.aws/*"],
"background": {
"service_worker": "background.js"
},
"content_scripts": [
{
"matches": ["https://*.my.connect.aws/*"],
"js": ["content.js"],
"run_at": "document_end",
"all_frames": false
}
],
"action": {
"default_title": "CCP Auto Log Downloader"
}
}
content.js
try {
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
if (request.action === "downloadLog") {
const downloadButton = document.querySelector(
'[data-testid="ccp-settings-download-logs-button"]'
);
if (downloadButton) {
downloadButton.click();
sendResponse({
status: "success",
message: "ボタンをクリックしました",
});
} else {
sendResponse({ status: "error", message: "ボタンが見つかりません" });
}
}
if (request.action === "navigateToSettings") {
window.history.pushState(
null,
"",
"your-connect-url/ccp-v2/settings" // 例: https://sample.my.connect.aws/ccp-v2/settings
);
window.dispatchEvent(new PopStateEvent("popstate"));
sendResponse({
status: "success",
message: "settings ページへ遷移しました",
});
}
});
} catch (error) {
console.error(error);
}
background.js
let isNavigating = false;
setInterval(() => {
if (isNavigating) return;
chrome.tabs.query(
{ url: "*://*.my.connect.aws/ccp-v2/settings*" },
(settingsTabs) => {
if (settingsTabs.length > 0) {
chrome.tabs.sendMessage(
settingsTabs[0].id,
{ action: "downloadLog" },
(response) => {
if (chrome.runtime.lastError) {
console.error(chrome.runtime.lastError.message);
}
}
);
} else {
const ccpUrls = [
"*://*.my.connect.aws/ccp-v2/softphone*",
"*://*.my.connect.aws/ccp-v2/chat*",
"*://*.my.connect.aws/ccp-v2/task*",
];
let foundTab = false;
ccpUrls.forEach((urlPattern) => {
if (foundTab) return;
chrome.tabs.query({ url: urlPattern }, (tabs) => {
if (tabs.length > 0 && !foundTab) {
foundTab = true;
isNavigating = true;
const currentTab = tabs[0];
chrome.tabs.sendMessage(
currentTab.id,
{ action: "navigateToSettings" },
(response) => {
if (chrome.runtime.lastError) {
console.error(chrome.runtime.lastError.message);
isNavigating = false;
return;
}
setTimeout(() => {
chrome.tabs.sendMessage(
currentTab.id,
{ action: "downloadLog" },
(response) => {
if (chrome.runtime.lastError) {
console.error(chrome.runtime.lastError.message);
}
isNavigating = false;
}
);
}, 2000);
}
);
}
});
});
}
}
);
}, 300000); // ミリ秒で取得間隔を指定 (デフォルトは 5 分)
3. Chrome で読み込む
Chrome の拡張機能のページから手順 1 で作成したフォルダを読み込みます。

4. 動作確認
Amazon Connect の CCP を開き、5 分程度経過後に CCP ログが自動ダウンロードされれば OK です。
注意点
複数の CCP タブを開いている場合にはエラーが発生する可能性があるため、本拡張機能では複数の CCP タブを開くことを想定していません。
Amazon Connect の CCP ユーザーインターフェイスにおけるエラーのトラブルシューティング | AWS re:Post
複数の CCP が開いている
エージェントが WebSocket 接続を 5 件よりも多く開いている場合、このエラーが発生します。
なお、CCP が WebSocket 接続を開けなかった場合は、"Initialization failed" エラーが引き起こされます。
また、AWS 公式ツールではないので拡張機能の使用は自己責任でお願いします。
まとめ
今回は Amazon Connect の CCP を自動取得する Chrome 拡張機能を作ってみました。
どなたかの参考になれば幸いです。
Discussion