@netforbpo/aws-cdk-aws-connect-lib 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +13639 -0
- package/.yarn/install-state.gz +0 -0
- package/.yarn/patches/@nikovirtala-projen-vitest-npm-2.1.33-4935219e07.patch +292 -0
- package/.yarn/releases/yarn-4.4.1.cjs +925 -0
- package/.yarnrc.yml +4 -0
- package/CHANGELOG.md +25 -0
- package/LICENSE +202 -0
- package/README.md +132 -0
- package/lib/contact_flow.d.ts +48 -0
- package/lib/contact_flow.js +107 -0
- package/lib/contact_flow_module.d.ts +35 -0
- package/lib/contact_flow_module.js +96 -0
- package/lib/email_address.d.ts +36 -0
- package/lib/email_address.js +25 -0
- package/lib/hierarchy_group.d.ts +4 -0
- package/lib/hierarchy_group.js +3 -0
- package/lib/hours_of_operation.d.ts +62 -0
- package/lib/hours_of_operation.js +136 -0
- package/lib/index.d.ts +14 -0
- package/lib/index.js +31 -0
- package/lib/instance.d.ts +154 -0
- package/lib/instance.js +136 -0
- package/lib/phone_number.d.ts +50 -0
- package/lib/phone_number.js +46 -0
- package/lib/queue.d.ts +56 -0
- package/lib/queue.js +42 -0
- package/lib/quick_connect.d.ts +63 -0
- package/lib/quick_connect.js +70 -0
- package/lib/routing_profile.d.ts +4 -0
- package/lib/routing_profile.js +3 -0
- package/lib/security_profile.d.ts +4 -0
- package/lib/security_profile.js +3 -0
- package/lib/storage_config.d.ts +80 -0
- package/lib/storage_config.js +130 -0
- package/lib/traffic_distribution_group.d.ts +25 -0
- package/lib/traffic_distribution_group.js +23 -0
- package/lib/user.d.ts +63 -0
- package/lib/user.js +105 -0
- package/package.json +92 -0
- package/vitest.config.ts +46 -0
package/lib/instance.js
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Instance = exports.IdentityManagementType = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
+
const cxschema = require("aws-cdk-lib/cloud-assembly-schema");
|
|
8
|
+
var IdentityManagementType;
|
|
9
|
+
(function (IdentityManagementType) {
|
|
10
|
+
IdentityManagementType["SAML"] = "SAML";
|
|
11
|
+
IdentityManagementType["CONNECT_MANAGED"] = "CONNECT_MANAGED";
|
|
12
|
+
IdentityManagementType["EXISTING_DIRECTORY"] = "EXISTING_DIRECTORY";
|
|
13
|
+
})(IdentityManagementType || (exports.IdentityManagementType = IdentityManagementType = {}));
|
|
14
|
+
class InstanceBase extends aws_cdk_lib_1.Resource {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this.storageResourceTypes = new Set();
|
|
18
|
+
}
|
|
19
|
+
addStorageConfig(config, id = undefined) {
|
|
20
|
+
if (this.storageResourceTypes.has(config.resourceType)) {
|
|
21
|
+
aws_cdk_lib_1.Annotations.of(this).addError(`Duplicate resourceType ${config.resourceType} in storageConfig`);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (!config.checkConfig()) {
|
|
25
|
+
aws_cdk_lib_1.Annotations.of(this).addError(`Invalid storage configuration for resourceType ${config.resourceType} and storageType ${config.storageType}`);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
this.storageResourceTypes.add(config.resourceType);
|
|
29
|
+
new aws_cdk_lib_1.aws_connect.CfnInstanceStorageConfig(this, id || `StorageConfig-${config.resourceType}`, config.asStorageConfigProps(this.instanceArn));
|
|
30
|
+
}
|
|
31
|
+
associateLambdaFunction(id, func) {
|
|
32
|
+
new aws_cdk_lib_1.aws_connect.CfnIntegrationAssociation(this, id, {
|
|
33
|
+
instanceId: this.instanceArn,
|
|
34
|
+
integrationType: 'LAMBDA_FUNCTION',
|
|
35
|
+
integrationArn: func.functionArn,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
associateLexBot(id, bot) {
|
|
39
|
+
new aws_cdk_lib_1.aws_connect.CfnIntegrationAssociation(this, id, {
|
|
40
|
+
instanceId: this.instanceArn,
|
|
41
|
+
integrationType: 'LEX_BOT',
|
|
42
|
+
integrationArn: bot.botAliasRef.botAliasArn,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
class LookedUpInstance extends InstanceBase {
|
|
47
|
+
constructor(scope, id, props, isIncomplete) {
|
|
48
|
+
super(scope, id, {
|
|
49
|
+
region: props.region,
|
|
50
|
+
account: props.ownerAccountId,
|
|
51
|
+
});
|
|
52
|
+
this.instanceId = props.instanceId;
|
|
53
|
+
this.instanceArn = props.instanceArn;
|
|
54
|
+
this.instanceName = props.instanceName;
|
|
55
|
+
this.incompleteInstanceDefinition = isIncomplete;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const DUMMY_INSTANCE_PROPS = {
|
|
59
|
+
instanceArn: 'instance-arn',
|
|
60
|
+
instanceId: 'instance-12345',
|
|
61
|
+
};
|
|
62
|
+
class Instance extends InstanceBase {
|
|
63
|
+
static fromLookup(scope, id, options) {
|
|
64
|
+
if (aws_cdk_lib_1.Token.isUnresolved(options.instanceId)
|
|
65
|
+
|| aws_cdk_lib_1.Token.isUnresolved(options.instanceName)
|
|
66
|
+
|| aws_cdk_lib_1.Token.isUnresolved(options.instanceArn)) {
|
|
67
|
+
throw new aws_cdk_lib_1.ValidationError('All arguments to Instance.fromLookup() must be concrete (no Tokens)', scope);
|
|
68
|
+
}
|
|
69
|
+
const filter = {};
|
|
70
|
+
if (options.instanceArn) {
|
|
71
|
+
filter.exactIdentifier = options.instanceArn;
|
|
72
|
+
}
|
|
73
|
+
if (options.instanceId) {
|
|
74
|
+
filter.propertyMatch || (filter.propertyMatch = {});
|
|
75
|
+
filter.propertyMatch.Id = options.instanceId;
|
|
76
|
+
}
|
|
77
|
+
if (options.instanceName) {
|
|
78
|
+
filter.propertyMatch || (filter.propertyMatch = {});
|
|
79
|
+
filter.propertyMatch.InstanceAlias = options.instanceName;
|
|
80
|
+
}
|
|
81
|
+
const response = aws_cdk_lib_1.ContextProvider.getValue(scope, {
|
|
82
|
+
provider: cxschema.ContextProvider.CC_API_PROVIDER,
|
|
83
|
+
props: {
|
|
84
|
+
typeName: 'AWS::Connect::Instance',
|
|
85
|
+
...filter,
|
|
86
|
+
propertiesToReturn: ['Arn', 'InstanceAlias', 'Id', 'Tags'],
|
|
87
|
+
expectedMatchCount: 'exactly-one',
|
|
88
|
+
},
|
|
89
|
+
dummyValue: undefined,
|
|
90
|
+
}).value;
|
|
91
|
+
let instance = undefined;
|
|
92
|
+
if (response && response[0]) {
|
|
93
|
+
instance = {
|
|
94
|
+
instanceArn: response[0].Arn,
|
|
95
|
+
instanceId: response[0].Id,
|
|
96
|
+
instanceName: response[0].InstanceAlias,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
return new LookedUpInstance(scope, id, instance ?? DUMMY_INSTANCE_PROPS, instance === undefined);
|
|
100
|
+
}
|
|
101
|
+
constructor(scope, id, props) {
|
|
102
|
+
super(scope, id);
|
|
103
|
+
const attributes = {
|
|
104
|
+
...props.telephonyConfig,
|
|
105
|
+
...props.pollyConfig,
|
|
106
|
+
...props.otherConfig,
|
|
107
|
+
};
|
|
108
|
+
if (props.identityType === IdentityManagementType.EXISTING_DIRECTORY && !props.directoryId) {
|
|
109
|
+
aws_cdk_lib_1.Annotations.of(this).addError('directoryId is required when identityType is set to EXISTING_DIRECTORY');
|
|
110
|
+
}
|
|
111
|
+
if (props.identityType !== IdentityManagementType.EXISTING_DIRECTORY && !props.instanceAlias) {
|
|
112
|
+
aws_cdk_lib_1.Annotations.of(this).addError('instanceAlias is required when identityType is set to CONNECT_MANAGED or SAML');
|
|
113
|
+
}
|
|
114
|
+
this.instanceName = props.instanceAlias;
|
|
115
|
+
this.instance = new aws_cdk_lib_1.aws_connect.CfnInstance(this, 'Instance', {
|
|
116
|
+
attributes,
|
|
117
|
+
identityManagementType: props.identityType,
|
|
118
|
+
instanceAlias: props.instanceAlias,
|
|
119
|
+
});
|
|
120
|
+
if (props.storageConfigs) {
|
|
121
|
+
for (const config of props.storageConfigs) {
|
|
122
|
+
this.addStorageConfig(config);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
get instanceArn() {
|
|
127
|
+
return this.instance.attrArn;
|
|
128
|
+
}
|
|
129
|
+
get instanceId() {
|
|
130
|
+
return this.instance.ref;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
exports.Instance = Instance;
|
|
134
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
135
|
+
Instance[_a] = { fqn: "@netforbpo/aws-cdk-aws-connect-lib.Instance", version: "0.2.1" };
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FVcUI7QUFDckIsOERBQThEO0FBSTlELElBQVksc0JBSVg7QUFKRCxXQUFZLHNCQUFzQjtJQUNoQyx1Q0FBYSxDQUFBO0lBQ2IsNkRBQW1DLENBQUE7SUFDbkMsbUVBQXlDLENBQUE7QUFDM0MsQ0FBQyxFQUpXLHNCQUFzQixzQ0FBdEIsc0JBQXNCLFFBSWpDO0FBNElELE1BQWUsWUFBYSxTQUFRLHNCQUFRO0lBQTVDOztRQUtVLHlCQUFvQixHQUE2QixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBOEJyRSxDQUFDO0lBNUJDLGdCQUFnQixDQUFDLE1BQXFCLEVBQUUsS0FBeUIsU0FBUztRQUN4RSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDdkQseUJBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLDBCQUEwQixNQUFNLENBQUMsWUFBWSxtQkFBbUIsQ0FBQyxDQUFDO1lBQ2hHLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQzFCLHlCQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxrREFBa0QsTUFBTSxDQUFDLFlBQVksb0JBQW9CLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzdJLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQsSUFBSSx5QkFBTyxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxFQUFFLElBQUksaUJBQWlCLE1BQU0sQ0FBQyxZQUFZLEVBQUUsRUFBRSxN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QUFzQixDQUFDLGtCQUFrQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdGLHlCQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQywrRUFBK0UsQ0FBQyxDQUFDO1FBQ2pILENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHlCQUFPLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDeEQsVUFBVTtZQUNWLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQzFDLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYTtTQUNuQyxDQUFDLENBQUM7UUFFSCxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixLQUFLLE1BQU0sTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDM0IsQ0FBQzs7QUFwRkgsNEJBcUZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQW5ub3RhdGlvbnMsXG4gIGF3c19jb25uZWN0IGFzIGNvbm5lY3QsXG4gIGF3c19sYW1iZGEgYXMgbGFtYmRhLFxuICBhd3NfbGV4IGFzIGxleCxcbiAgQ29udGV4dFByb3ZpZGVyLFxuICBJUmVzb3VyY2UsXG4gIFJlc291cmNlLFxuICBUb2tlbixcbiAgVmFsaWRhdGlvbkVycm9yLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjeHNjaGVtYSBmcm9tICdhd3MtY2RrLWxpYi9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBTdG9yYWdlQ29uZmlnLCBTdG9yYWdlUmVzb3VyY2VUeXBlIH0gZnJvbSAnLi9zdG9yYWdlX2NvbmZpZyc7XG5cbmV4cG9ydCBlbnVtIElkZW50aXR5TWFuYWdlbWVudFR5cGUge1xuICBTQU1MID0gJ1NBTUwnLFxuICBDT05ORUNUX01BTkFHRUQgPSAnQ09OTkVDVF9NQU5BR0VEJyxcbiAgRVhJU1RJTkdfRElSRUNUT1JZID0gJ0VYSVNUSU5HX0RJUkVDVE9SWScsXG59XG5cbi8qKlxuICogVE9ETyBtaXNzaW5nIGF0dHJpYnV0ZXMgZnJvbSBDbG91ZEZvcm1hdGlvblxuICpcbiAqIEFVVE9NQVRFRF9JTlRFUkFDVElPTl9MT0dcbiAqIEJPVF9NQU5BR0VNRU5UXG4gKiBFTkFCTEVfQk9UX0FOQUxZVElDU19BTkRfVFJBTlNDUklQVFNcbiAqIEZPUkVDQVNUSU5HX1BMQU5OSU5HX1NDSEVEVUxJTkdcbiAqIE1BWF9QQUNLQUdFXG4gKiBNRVNTQUdFX1NUUkVBTUlOR1xuICovXG5cbi8qKlxuICogQWxsIG90aGVyIGNvbmZpZyBwcm9wc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE90aGVyQ29uZmlnUHJvcHMge1xuICAvKipcbiAgICogV2hldGhlciBjb250YWN0IGZsb3cgbG9ncyBhcmUgZW5hYmxlZC4gKENPTlRBQ1RGTE9XX0xPR1MpXG4gICAqL1xuICByZWFkb25seSBjb250YWN0Zmxvd0xvZ3M/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciBjb250YWN0IGxlbnMgaXMgZW5hYmxlZC4gKENPTlRBQ1RfTEVOUylcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhY3RMZW5zPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgZW5oYW5jZWQgY2hhdCBtb25pdG9yaW5nIGlzIGVuYWJsZWQuIChFTkhBTkNFRF9DSEFUX01PTklUT1JJTkcpXG4gICAqL1xuICByZWFkb25seSBlbmhhbmNlZENoYXRNb25pdG9yaW5nPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgaGlnaCB2b2x1bWUgb3V0Ym91bmQgaXMgZW5hYmxlZC4gKEhJR0hfVk9MVU1FX09VVEJPVU5EKVxuICAgKi9cbiAgcmVhZG9ubHkgaGlnaFZvbHVtZU91dEJvdW5kPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgZW5oYW5jZWQgY29udGFjdCBtb25pdG9yaW5nIGlzIGVuYWJsZWQuIChFTkhBTkNFRF9DT05UQUNUX01PTklUT1JJTkcpXG4gICAqL1xuICByZWFkb25seSBlbmhhbmNlZENvbnRhY3RNb25pdG9yaW5nPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZWxlcGhvbnlDb25maWdQcm9wcyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIGVhcmx5IG1lZGlhIGlzIGVuYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGVhcmx5TWVkaWFFbmFibGVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgaW5ib3VuZCBjYWxscyBhcmUgYWxsb3dlZC4gKElOQk9VTkRfQ0FMTFMpXG4gICAqL1xuICByZWFkb25seSBpbmJvdW5kQ2FsbHM6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG11bHRpIHBhcnR5IGNoYXQgaXMgZW5hYmxlZC4gKE1VTFRJX1BBUlRZX0NIQVRfQ09ORkVSRU5DRSlcbiAgICovXG4gIHJlYWRvbmx5IG11bHRpUGFydHlDaGF0Q29uZmVyZW5jZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG11bHRpIHBhcnR5IGNvbmZlcmVuY2UgaXMgZW5hYmxlZC4gKE1VTFRJX1BBUlRZX0NPTkZFUkVOQ0UpXG4gICAqL1xuICByZWFkb25seSBtdWx0aVBhcnR5Q29uZmVyZW5jZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG91dGJvdW5kIGNhbGxzIGFyZSBhbGxvd2VkLiAoT1VUQk9VTkRfQ0FMTFMpXG4gICAqL1xuICByZWFkb25seSBvdXRib3VuZENhbGxzOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvbGx5Q29uZmlnUHJvcHMge1xuICAvKipcbiAgICogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHJlc29sdmUgYmVzdCB2b2ljZXMuIChBVVRPX1JFU09MVkVfQkVTVF9WT0lDRVMpXG4gICAqL1xuICByZWFkb25seSBhdXRvUmVzb2x2ZUJlc3RWb2ljZXM/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciB1c2VDdXN0b21UdHNWb2ljZXMgaXMgZW5hYmxlZCAoVVNFX0NVU1RPTV9UVFNfVk9JQ0VTKVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlQ3VzdG9tVHRzVm9pY2VzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBpZGVudGl0eSB0eXBlIGZvciB0aGlzIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgaWRlbnRpdHlUeXBlOiBJZGVudGl0eU1hbmFnZW1lbnRUeXBlO1xuICAvKipcbiAgICogVGhlIGluc3RhbmNlIGFsaWFzLCByZXF1aXJlZCB3aGVuIGlkZW50aXR5VHlwZSBpcyBzZXQgdG8gQ09OTkVDVF9NQU5BR0VEIG9yIFNBTUwuXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZUFsaWFzPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGlkZW50aWZpZXIgb2YgYSBzaW1wbGVBRCBvciBNaWNyb3NvZnQgQUQgKF5kLVswLTlhLWZdezEwfSQpLCByZXF1aXJlZCB3aGVuIGlkZW50aXR5VHlwZSBpcyBzZXQgdG8gRVhJU1RJTkdfRElSRUNUT1JZLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlyZWN0b3J5SWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUZWxlcGhvbnkgcHJvcGVydGllcy4gIFJlcXVpcmVkIChkdWUgdG8gcmVxdWlyZWQgc2V0dGluZyBvZiBpbmJvdW5kICYgb3V0Ym91bmQgY2FsbCBjb25maWd1cmF0aW9uKVxuICAgKi9cbiAgcmVhZG9ubHkgdGVsZXBob255Q29uZmlnOiBUZWxlcGhvbnlDb25maWdQcm9wcztcbiAgLyoqXG4gICAqIFBvbGx5IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3NcbiAgICovXG4gIHJlYWRvbmx5IHBvbGx5Q29uZmlnPzogUG9sbHlDb25maWdQcm9wcztcbiAgLyoqXG4gICAqIE90aGVyIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3NcbiAgICovXG4gIHJlYWRvbmx5IG90aGVyQ29uZmlnPzogT3RoZXJDb25maWdQcm9wcztcbiAgLyoqXG4gICAqXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlQ29uZmlncz86IFN0b3JhZ2VDb25maWdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSW5zdGFuY2UgZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZUFybjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGluc3RhbmNlIGlkZW50aWZpZXIuXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZUlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgaW5zdGFuY2UgbmFtZS4gIE1heSBub3QgYWx3YXlzIGJlIGF2YWlsYWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VOYW1lPzogc3RyaW5nO1xuXG4gIGFkZFN0b3JhZ2VDb25maWcoY29uZmlnOiBTdG9yYWdlQ29uZmlnLCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZDtcblxuICBhc3NvY2lhdGVMYW1iZGFGdW5jdGlvbihpZDogc3RyaW5nLCBmdW5jOiBsYW1iZGEuSUZ1bmN0aW9uKTogdm9pZDtcblxuICBhc3NvY2lhdGVMZXhCb3QoaWQ6IHN0cmluZywgYm90OiBsZXguSUJvdEFsaWFzUmVmKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZUxvb2t1cE9wdGlvbnMge1xuICAvKipcbiAgICogdGhlIElEIG9mIHRoZSBjb25uZWN0IGluc3RhbmNlXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZUlkPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGNvbm5lY3QgaW5zdGFuY2UgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGluc3RhbmNlIEFyblxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VBcm4/OiBzdHJpbmc7XG59XG5cbmFic3RyYWN0IGNsYXNzIEluc3RhbmNlQmFzZSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSUluc3RhbmNlIHtcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGluc3RhbmNlQXJuOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpbnN0YW5jZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpbnN0YW5jZU5hbWU/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBzdG9yYWdlUmVzb3VyY2VUeXBlczogU2V0PFN0b3JhZ2VSZXNvdXJjZVR5cGU+ID0gbmV3IFNldCgpO1xuXG4gIGFkZFN0b3JhZ2VDb25maWcoY29uZmlnOiBTdG9yYWdlQ29uZmlnLCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHRoaXMuc3RvcmFnZVJlc291cmNlVHlwZXMuaGFzKGNvbmZpZy5yZXNvdXJjZVR5cGUpKSB7XG4gICAgICBBbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRFcnJvcihgRHVwbGljYXRlIHJlc291cmNlVHlwZSAke2NvbmZpZy5yZXNvdXJjZVR5cGV9IGluIHN0b3JhZ2VDb25maWdgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFjb25maWcuY2hlY2tDb25maWcoKSkge1xuICAgICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkRXJyb3IoYEludmFsaWQgc3RvcmFnZSBjb25maWd1cmF0aW9uIGZvciByZXNvdXJjZVR5cGUgJHtjb25maWcucmVzb3VyY2VUeXBlfSBhbmQgc3RvcmFnZVR5cGUgJHtjb25maWcuc3RvcmFnZVR5cGV9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RvcmFnZVJlc291cmNlVHlwZXMuYWRkKGNvbmZpZy5yZXNvdXJjZVR5cGUpO1xuICAgIG5ldyBjb25uZWN0LkNmbkluc3RhbmNlU3RvcmFnZUNvbmZpZyh0aGlzLCBpZCB8fCBgU3RvcmFnZUNvbmZpZy0ke2NvbmZpZy5yZXNvdXJjZVR5cGV9YCwgY29uZmlnLmFzU3RvcmFnZUNvbmZpZ1Byb3BzKHRoaXMuaW5zdGFuY2VBcm4pKTtcbiAgfVxuXG4gIGFzc29jaWF0ZUxhbWJkYUZ1bmN0aW9uKGlkOiBzdHJpbmcsIGZ1bmM6IGxhbWJkYS5JRnVuY3Rpb24pIHtcbiAgICBuZXcgY29ubmVjdC5DZm5JbnRlZ3JhdGlvbkFzc29jaWF0aW9uKHRoaXMsIGlkLCB7XG4gICAgICBpbnN0YW5jZUlkOiB0aGlzLmluc3RhbmNlQXJuLFxuICAgICAgaW50ZWdyYXRpb25UeXBlOiAnTEFNQkRBX0ZVTkNUSU9OJyxcbiAgICAgIGludGVncmF0aW9uQXJuOiBmdW5jLmZ1bmN0aW9uQXJuLFxuICAgIH0pO1xuICB9XG5cbiAgYXNzb2NpYXRlTGV4Qm90KGlkOiBzdHJpbmcsIGJvdDogbGV4LklCb3RBbGlhc1JlZikge1xuICAgIG5ldyBjb25uZWN0LkNmbkludGVncmF0aW9uQXNzb2NpYXRpb24odGhpcywgaWQsIHtcbiAgICAgIGluc3RhbmNlSWQ6IHRoaXMuaW5zdGFuY2VBcm4sXG4gICAgICBpbnRlZ3JhdGlvblR5cGU6ICdMRVhfQk9UJyxcbiAgICAgIGludGVncmF0aW9uQXJuOiBib3QuYm90QWxpYXNSZWYuYm90QWxpYXNBcm4sXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgTG9va2VkVXBJbnN0YW5jZSBleHRlbmRzIEluc3RhbmNlQmFzZSB7XG4gIHB1YmxpYyByZWFkb25seSBpbnN0YW5jZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBpbnN0YW5jZUFybjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgaW5zdGFuY2VOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBpbmNvbXBsZXRlSW5zdGFuY2VEZWZpbml0aW9uOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBhbnksIGlzSW5jb21wbGV0ZTogYm9vbGVhbikge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcmVnaW9uOiBwcm9wcy5yZWdpb24sXG4gICAgICBhY2NvdW50OiBwcm9wcy5vd25lckFjY291bnRJZCxcbiAgICB9KTtcblxuICAgIHRoaXMuaW5zdGFuY2VJZCA9IHByb3BzLmluc3RhbmNlSWQ7XG4gICAgdGhpcy5pbnN0YW5jZUFybiA9IHByb3BzLmluc3RhbmNlQXJuO1xuICAgIHRoaXMuaW5zdGFuY2VOYW1lID0gcHJvcHMuaW5zdGFuY2VOYW1lO1xuICAgIHRoaXMuaW5jb21wbGV0ZUluc3RhbmNlRGVmaW5pdGlvbiA9IGlzSW5jb21wbGV0ZTtcbiAgfVxufVxuXG5jb25zdCBEVU1NWV9JTlNUQU5DRV9QUk9QUyA9IHtcbiAgaW5zdGFuY2VBcm46ICdpbnN0YW5jZS1hcm4nLFxuICBpbnN0YW5jZUlkOiAnaW5zdGFuY2UtMTIzNDUnLFxufTtcblxuZXhwb3J0IGNsYXNzIEluc3RhbmNlIGV4dGVuZHMgSW5zdGFuY2VCYXNlIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tTG9va3VwKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEluc3RhbmNlTG9va3VwT3B0aW9ucyk6IElJbnN0YW5jZSB7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChvcHRpb25zLmluc3RhbmNlSWQpXG4gICAgICAgIHx8IFRva2VuLmlzVW5yZXNvbHZlZChvcHRpb25zLmluc3RhbmNlTmFtZSlcbiAgICAgICAgfHwgVG9rZW4uaXNVbnJlc29sdmVkKG9wdGlvbnMuaW5zdGFuY2VBcm4pKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdBbGwgYXJndW1lbnRzIHRvIEluc3RhbmNlLmZyb21Mb29rdXAoKSBtdXN0IGJlIGNvbmNyZXRlIChubyBUb2tlbnMpJywgc2NvcGUpO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbHRlcjogYW55ID0ge307XG5cbiAgICBpZiAob3B0aW9ucy5pbnN0YW5jZUFybikge1xuICAgICAgZmlsdGVyLmV4YWN0SWRlbnRpZmllciA9IG9wdGlvbnMuaW5zdGFuY2VBcm47XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuaW5zdGFuY2VJZCkge1xuICAgICAgZmlsdGVyLnByb3BlcnR5TWF0Y2ggfHw9IHt9O1xuICAgICAgZmlsdGVyLnByb3BlcnR5TWF0Y2guSWQgPSBvcHRpb25zLmluc3RhbmNlSWQ7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmluc3RhbmNlTmFtZSkge1xuICAgICAgZmlsdGVyLnByb3BlcnR5TWF0Y2ggfHw9IHt9O1xuICAgICAgZmlsdGVyLnByb3BlcnR5TWF0Y2guSW5zdGFuY2VBbGlhcyA9IG9wdGlvbnMuaW5zdGFuY2VOYW1lO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlIDogeyBba2V5OiBzdHJpbmddOiBhbnkgfVtdID0gQ29udGV4dFByb3ZpZGVyLmdldFZhbHVlKHNjb3BlLCB7XG4gICAgICBwcm92aWRlcjogY3hzY2hlbWEuQ29udGV4dFByb3ZpZGVyLkNDX0FQSV9QUk9WSURFUixcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIHR5cGVOYW1lOiAnQVdTOjpDb25uZWN0OjpJbnN0YW5jZScsXG4gICAgICAgIC4uLmZpbHRlcixcbiAgICAgICAgcHJvcGVydGllc1RvUmV0dXJuOiBbJ0FybicsICdJbnN0YW5jZUFsaWFzJywgJ0lkJywgJ1RhZ3MnXSxcbiAgICAgICAgZXhwZWN0ZWRNYXRjaENvdW50OiAnZXhhY3RseS1vbmUnLFxuICAgICAgfSBhcyBjeHNjaGVtYS5DY0FwaUNvbnRleHRRdWVyeSxcbiAgICAgIGR1bW15VmFsdWU6IHVuZGVmaW5lZCxcbiAgICB9KS52YWx1ZTtcblxuICAgIGxldCBpbnN0YW5jZSA9IHVuZGVmaW5lZDtcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2VbMF0pIHtcbiAgICAgIGluc3RhbmNlID0ge1xuICAgICAgICBpbnN0YW5jZUFybjogcmVzcG9uc2VbMF0uQXJuLFxuICAgICAgICBpbnN0YW5jZUlkOiByZXNwb25zZVswXS5JZCxcbiAgICAgICAgaW5zdGFuY2VOYW1lOiByZXNwb25zZVswXS5JbnN0YW5jZUFsaWFzLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBMb29rZWRVcEluc3RhbmNlKHNjb3BlLCBpZCwgaW5zdGFuY2UgPz8gRFVNTVlfSU5TVEFOQ0VfUFJPUFMsIGluc3RhbmNlID09PSB1bmRlZmluZWQpO1xuICB9XG5cbiAgcmVhZG9ubHkgaW5zdGFuY2U6IGNvbm5lY3QuQ2ZuSW5zdGFuY2U7XG4gIHJlYWRvbmx5IGluc3RhbmNlTmFtZT86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSW5zdGFuY2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzID0ge1xuICAgICAgLi4ucHJvcHMudGVsZXBob255Q29uZmlnLFxuICAgICAgLi4ucHJvcHMucG9sbHlDb25maWcsXG4gICAgICAuLi5wcm9wcy5vdGhlckNvbmZpZyxcbiAgICB9O1xuXG4gICAgaWYgKHByb3BzLmlkZW50aXR5VHlwZSA9PT0gSWRlbnRpdHlNYW5hZ2VtZW50VHlwZS5FWElTVElOR19ESVJFQ1RPUlkgJiYgIXByb3BzLmRpcmVjdG9yeUlkKSB7XG4gICAgICBBbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRFcnJvcignZGlyZWN0b3J5SWQgaXMgcmVxdWlyZWQgd2hlbiBpZGVudGl0eVR5cGUgaXMgc2V0IHRvIEVYSVNUSU5HX0RJUkVDVE9SWScpO1xuICAgIH1cbiAgICBpZiAocHJvcHMuaWRlbnRpdHlUeXBlICE9PSBJZGVudGl0eU1hbmFnZW1lbnRUeXBlLkVYSVNUSU5HX0RJUkVDVE9SWSAmJiAhcHJvcHMuaW5zdGFuY2VBbGlhcykge1xuICAgICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkRXJyb3IoJ2luc3RhbmNlQWxpYXMgaXMgcmVxdWlyZWQgd2hlbiBpZGVudGl0eVR5cGUgaXMgc2V0IHRvIENPTk5FQ1RfTUFOQUdFRCBvciBTQU1MJyk7XG4gICAgfVxuXG4gICAgdGhpcy5pbnN0YW5jZU5hbWUgPSBwcm9wcy5pbnN0YW5jZUFsaWFzO1xuICAgIHRoaXMuaW5zdGFuY2UgPSBuZXcgY29ubmVjdC5DZm5JbnN0YW5jZSh0aGlzLCAnSW5zdGFuY2UnLCB7XG4gICAgICBhdHRyaWJ1dGVzLFxuICAgICAgaWRlbnRpdHlNYW5hZ2VtZW50VHlwZTogcHJvcHMuaWRlbnRpdHlUeXBlLFxuICAgICAgaW5zdGFuY2VBbGlhczogcHJvcHMuaW5zdGFuY2VBbGlhcyxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5zdG9yYWdlQ29uZmlncykge1xuICAgICAgZm9yIChjb25zdCBjb25maWcgb2YgcHJvcHMuc3RvcmFnZUNvbmZpZ3MpIHtcbiAgICAgICAgdGhpcy5hZGRTdG9yYWdlQ29uZmlnKGNvbmZpZyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGluc3RhbmNlQXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2UuYXR0ckFybjtcbiAgfVxuXG4gIGdldCBpbnN0YW5jZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2UucmVmO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { aws_connect as connect, IResource, Resource } from 'aws-cdk-lib';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
import { IInstance } from './instance';
|
|
4
|
+
import { ITrafficDistributionGroup } from './traffic_distribution_group';
|
|
5
|
+
export interface IPhoneNumber extends IResource {
|
|
6
|
+
/**
|
|
7
|
+
* The ARN of the phone number.
|
|
8
|
+
*/
|
|
9
|
+
readonly phoneNumberArn: string;
|
|
10
|
+
}
|
|
11
|
+
export declare enum PhoneNumberType {
|
|
12
|
+
TOLL_FREE = "TOLL_FREE",
|
|
13
|
+
DID = "DID",
|
|
14
|
+
UIFN = "UIFN",
|
|
15
|
+
SHARED = "SHARED",
|
|
16
|
+
THIRD_PARTY_DID = "THIRD_PARTY_DID",
|
|
17
|
+
THIRD_PARTY_TF = "THIRD_PARTY_TF",
|
|
18
|
+
SHORT_CODE = "SHORT_CODE"
|
|
19
|
+
}
|
|
20
|
+
export interface PhoneNumberProps {
|
|
21
|
+
/**
|
|
22
|
+
* The AWS connect instance or traffic distribution node to attach the phone number to.
|
|
23
|
+
*/
|
|
24
|
+
readonly target: IInstance | ITrafficDistributionGroup;
|
|
25
|
+
/**
|
|
26
|
+
* The phone number type.
|
|
27
|
+
*/
|
|
28
|
+
readonly type?: PhoneNumberType;
|
|
29
|
+
/**
|
|
30
|
+
* The ISO 2-letter country code of the phone number.
|
|
31
|
+
*/
|
|
32
|
+
readonly countryCode?: string;
|
|
33
|
+
/**
|
|
34
|
+
* The phone number prefix with the + country code
|
|
35
|
+
*/
|
|
36
|
+
readonly prefix?: string;
|
|
37
|
+
/**
|
|
38
|
+
* A description of the phone number.
|
|
39
|
+
*/
|
|
40
|
+
readonly description?: string;
|
|
41
|
+
/**
|
|
42
|
+
* the ARN of an externally imported phone number (e.g. from AWS End User Messaging)
|
|
43
|
+
*/
|
|
44
|
+
readonly sourcePhoneNumberArn?: string;
|
|
45
|
+
}
|
|
46
|
+
export declare class PhoneNumber extends Resource implements IPhoneNumber {
|
|
47
|
+
readonly phoneNumber: connect.CfnPhoneNumber;
|
|
48
|
+
constructor(scope: Construct, id: string, props: PhoneNumberProps);
|
|
49
|
+
get phoneNumberArn(): string;
|
|
50
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.PhoneNumber = exports.PhoneNumberType = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
+
var PhoneNumberType;
|
|
8
|
+
(function (PhoneNumberType) {
|
|
9
|
+
PhoneNumberType["TOLL_FREE"] = "TOLL_FREE";
|
|
10
|
+
PhoneNumberType["DID"] = "DID";
|
|
11
|
+
PhoneNumberType["UIFN"] = "UIFN";
|
|
12
|
+
PhoneNumberType["SHARED"] = "SHARED";
|
|
13
|
+
PhoneNumberType["THIRD_PARTY_DID"] = "THIRD_PARTY_DID";
|
|
14
|
+
PhoneNumberType["THIRD_PARTY_TF"] = "THIRD_PARTY_TF";
|
|
15
|
+
PhoneNumberType["SHORT_CODE"] = "SHORT_CODE";
|
|
16
|
+
})(PhoneNumberType || (exports.PhoneNumberType = PhoneNumberType = {}));
|
|
17
|
+
class PhoneNumber extends aws_cdk_lib_1.Resource {
|
|
18
|
+
constructor(scope, id, props) {
|
|
19
|
+
super(scope, id);
|
|
20
|
+
let targetArn;
|
|
21
|
+
if ('instanceArn' in props.target) {
|
|
22
|
+
targetArn = props.target.instanceArn;
|
|
23
|
+
}
|
|
24
|
+
else if ('trafficDistributionGroupArn' in props.target) {
|
|
25
|
+
targetArn = props.target.trafficDistributionGroupArn;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
throw new Error('Invalid target');
|
|
29
|
+
}
|
|
30
|
+
this.phoneNumber = new aws_cdk_lib_1.aws_connect.CfnPhoneNumber(this, 'PhoneNumber', {
|
|
31
|
+
targetArn,
|
|
32
|
+
description: props.description,
|
|
33
|
+
countryCode: props.countryCode,
|
|
34
|
+
prefix: props.prefix,
|
|
35
|
+
type: props.type,
|
|
36
|
+
sourcePhoneNumberArn: props.sourcePhoneNumberArn,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
get phoneNumberArn() {
|
|
40
|
+
return this.phoneNumber.attrPhoneNumberArn;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.PhoneNumber = PhoneNumber;
|
|
44
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
45
|
+
PhoneNumber[_a] = { fqn: "@netforbpo/aws-cdk-aws-connect-lib.PhoneNumber", version: "0.2.1" };
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmVfbnVtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Bob25lX251bWJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUlxQjtBQVlyQixJQUFZLGVBUVg7QUFSRCxXQUFZLGVBQWU7SUFDekIsMENBQXVCLENBQUE7SUFDdkIsOEJBQVcsQ0FBQTtJQUNYLGdDQUFhLENBQUE7SUFDYixvQ0FBaUIsQ0FBQTtJQUNqQixzREFBbUMsQ0FBQTtJQUNuQyxvREFBaUMsQ0FBQTtJQUNqQyw0Q0FBeUIsQ0FBQTtBQUMzQixDQUFDLEVBUlcsZUFBZSwrQkFBZixlQUFlLFFBUTFCO0FBNkJELE1BQWEsV0FBWSxTQUFRLHNCQUFRO0lBR3ZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLFNBQVMsQ0FBQztRQUNkLElBQUksYUFBYSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQyxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDdkMsQ0FBQzthQUFNLElBQUksNkJBQTZCLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pELFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLDJCQUEyQixDQUFDO1FBQ3ZELENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUkseUJBQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUNqRSxTQUFTO1lBQ1QsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxvQkFBb0I7U0FDakQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUM7SUFDN0MsQ0FBQzs7QUEzQkgsa0NBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXdzX2Nvbm5lY3QgYXMgY29ubmVjdCxcbiAgSVJlc291cmNlLFxuICBSZXNvdXJjZSxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJSW5zdGFuY2UgfSBmcm9tICcuL2luc3RhbmNlJztcbmltcG9ydCB7IElUcmFmZmljRGlzdHJpYnV0aW9uR3JvdXAgfSBmcm9tICcuL3RyYWZmaWNfZGlzdHJpYnV0aW9uX2dyb3VwJztcblxuZXhwb3J0IGludGVyZmFjZSBJUGhvbmVOdW1iZXIgZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgcGhvbmUgbnVtYmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgcGhvbmVOdW1iZXJBcm46IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gUGhvbmVOdW1iZXJUeXBlIHtcbiAgVE9MTF9GUkVFID0gJ1RPTExfRlJFRScsXG4gIERJRCA9ICdESUQnLFxuICBVSUZOID0gJ1VJRk4nLFxuICBTSEFSRUQgPSAnU0hBUkVEJyxcbiAgVEhJUkRfUEFSVFlfRElEID0gJ1RISVJEX1BBUlRZX0RJRCcsXG4gIFRISVJEX1BBUlRZX1RGID0gJ1RISVJEX1BBUlRZX1RGJyxcbiAgU0hPUlRfQ09ERSA9ICdTSE9SVF9DT0RFJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaG9uZU51bWJlclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBBV1MgY29ubmVjdCBpbnN0YW5jZSBvciB0cmFmZmljIGRpc3RyaWJ1dGlvbiBub2RlIHRvIGF0dGFjaCB0aGUgcGhvbmUgbnVtYmVyIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0OiBJSW5zdGFuY2UgfCBJVHJhZmZpY0Rpc3RyaWJ1dGlvbkdyb3VwO1xuICAvKipcbiAgICogVGhlIHBob25lIG51bWJlciB0eXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IFBob25lTnVtYmVyVHlwZTtcbiAgLyoqXG4gICAqIFRoZSBJU08gMi1sZXR0ZXIgY291bnRyeSBjb2RlIG9mIHRoZSBwaG9uZSBudW1iZXIuXG4gICAqL1xuICByZWFkb25seSBjb3VudHJ5Q29kZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBwaG9uZSBudW1iZXIgcHJlZml4IHdpdGggdGhlICsgY291bnRyeSBjb2RlXG4gICAqL1xuICByZWFkb25seSBwcmVmaXg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIGRlc2NyaXB0aW9uIG9mIHRoZSBwaG9uZSBudW1iZXIuXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIHRoZSBBUk4gb2YgYW4gZXh0ZXJuYWxseSBpbXBvcnRlZCBwaG9uZSBudW1iZXIgKGUuZy4gZnJvbSBBV1MgRW5kIFVzZXIgTWVzc2FnaW5nKVxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlUGhvbmVOdW1iZXJBcm4/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBQaG9uZU51bWJlciBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVBob25lTnVtYmVyIHtcbiAgcmVhZG9ubHkgcGhvbmVOdW1iZXI6IGNvbm5lY3QuQ2ZuUGhvbmVOdW1iZXI7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBob25lTnVtYmVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbGV0IHRhcmdldEFybjtcbiAgICBpZiAoJ2luc3RhbmNlQXJuJyBpbiBwcm9wcy50YXJnZXQpIHtcbiAgICAgIHRhcmdldEFybiA9IHByb3BzLnRhcmdldC5pbnN0YW5jZUFybjtcbiAgICB9IGVsc2UgaWYgKCd0cmFmZmljRGlzdHJpYnV0aW9uR3JvdXBBcm4nIGluIHByb3BzLnRhcmdldCkge1xuICAgICAgdGFyZ2V0QXJuID0gcHJvcHMudGFyZ2V0LnRyYWZmaWNEaXN0cmlidXRpb25Hcm91cEFybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRhcmdldCcpO1xuICAgIH1cblxuICAgIHRoaXMucGhvbmVOdW1iZXIgPSBuZXcgY29ubmVjdC5DZm5QaG9uZU51bWJlcih0aGlzLCAnUGhvbmVOdW1iZXInLCB7XG4gICAgICB0YXJnZXRBcm4sXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjb3VudHJ5Q29kZTogcHJvcHMuY291bnRyeUNvZGUsXG4gICAgICBwcmVmaXg6IHByb3BzLnByZWZpeCxcbiAgICAgIHR5cGU6IHByb3BzLnR5cGUsXG4gICAgICBzb3VyY2VQaG9uZU51bWJlckFybjogcHJvcHMuc291cmNlUGhvbmVOdW1iZXJBcm4sXG4gICAgfSk7XG4gIH1cblxuICBnZXQgcGhvbmVOdW1iZXJBcm4oKSB7XG4gICAgcmV0dXJuIHRoaXMucGhvbmVOdW1iZXIuYXR0clBob25lTnVtYmVyQXJuO1xuICB9XG59XG4iXX0=
|
package/lib/queue.d.ts
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { aws_connect as connect, IResource, Resource } from 'aws-cdk-lib';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
import { IContactFlow } from './contact_flow';
|
|
4
|
+
import { IEmailAddress } from './email_address';
|
|
5
|
+
import { IHoursOfOperation } from './hours_of_operation';
|
|
6
|
+
import { IInstance } from './instance';
|
|
7
|
+
import { IPhoneNumber } from './phone_number';
|
|
8
|
+
import { IQuickConnect } from './quick_connect';
|
|
9
|
+
export interface IQueue extends IResource {
|
|
10
|
+
readonly queueArn: string;
|
|
11
|
+
}
|
|
12
|
+
export declare enum QueueStatus {
|
|
13
|
+
ENABLED = "ENABLED",
|
|
14
|
+
DISABLED = "DISABLED"
|
|
15
|
+
}
|
|
16
|
+
export interface QueueOutboundCallerConfig {
|
|
17
|
+
readonly callerIdName: string;
|
|
18
|
+
readonly callerIdNumber: IPhoneNumber;
|
|
19
|
+
readonly flow: IContactFlow;
|
|
20
|
+
}
|
|
21
|
+
export interface QueueProps {
|
|
22
|
+
/**
|
|
23
|
+
* The AWS connect instance to attach the queue to.
|
|
24
|
+
*/
|
|
25
|
+
readonly instance: IInstance;
|
|
26
|
+
/**
|
|
27
|
+
* The hours of operation to associate with the queue.
|
|
28
|
+
*/
|
|
29
|
+
readonly hoursOfOperation: IHoursOfOperation;
|
|
30
|
+
/**
|
|
31
|
+
* The name of the hours of operation.
|
|
32
|
+
*/
|
|
33
|
+
readonly name: string;
|
|
34
|
+
/**
|
|
35
|
+
* A description of the queue.
|
|
36
|
+
*/
|
|
37
|
+
readonly description?: string;
|
|
38
|
+
/**
|
|
39
|
+
* The status of the queue. Default QueueStats.ENABLED
|
|
40
|
+
*/
|
|
41
|
+
readonly status?: QueueStatus;
|
|
42
|
+
/**
|
|
43
|
+
* The maximum number of contacts that can be in the queue before it is considered full (default 0/unlimited).
|
|
44
|
+
*/
|
|
45
|
+
readonly maxQueueSize?: number;
|
|
46
|
+
readonly outboundCallerConfig?: QueueOutboundCallerConfig;
|
|
47
|
+
readonly outboundEmail?: IEmailAddress;
|
|
48
|
+
readonly quickConnects: IQuickConnect[];
|
|
49
|
+
}
|
|
50
|
+
export declare class Queue extends Resource implements IQueue {
|
|
51
|
+
readonly queue: connect.CfnQueue;
|
|
52
|
+
readonly instance: IInstance;
|
|
53
|
+
readonly hoursOfOperation: IHoursOfOperation;
|
|
54
|
+
constructor(scope: Construct, id: string, props: QueueProps);
|
|
55
|
+
get queueArn(): string;
|
|
56
|
+
}
|
package/lib/queue.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.Queue = exports.QueueStatus = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
+
var QueueStatus;
|
|
8
|
+
(function (QueueStatus) {
|
|
9
|
+
QueueStatus["ENABLED"] = "ENABLED";
|
|
10
|
+
QueueStatus["DISABLED"] = "DISABLED";
|
|
11
|
+
})(QueueStatus || (exports.QueueStatus = QueueStatus = {}));
|
|
12
|
+
class Queue extends aws_cdk_lib_1.Resource {
|
|
13
|
+
constructor(scope, id, props) {
|
|
14
|
+
super(scope, id);
|
|
15
|
+
this.instance = props.instance;
|
|
16
|
+
this.hoursOfOperation = props.hoursOfOperation;
|
|
17
|
+
this.queue = new aws_cdk_lib_1.aws_connect.CfnQueue(this, 'Queue', {
|
|
18
|
+
instanceArn: this.instance.instanceArn,
|
|
19
|
+
hoursOfOperationArn: this.hoursOfOperation.hoursOfOperationArn,
|
|
20
|
+
name: props.name,
|
|
21
|
+
description: props.description,
|
|
22
|
+
maxContacts: props.maxQueueSize,
|
|
23
|
+
outboundCallerConfig: props.outboundCallerConfig && {
|
|
24
|
+
outboundCallerIdName: props.outboundCallerConfig.callerIdName,
|
|
25
|
+
outboundCallerIdNumberArn: props.outboundCallerConfig.callerIdNumber.phoneNumberArn,
|
|
26
|
+
outboundFlowArn: props.outboundCallerConfig.flow.contactFlowArn,
|
|
27
|
+
},
|
|
28
|
+
outboundEmailConfig: props.outboundEmail && {
|
|
29
|
+
outboundEmailAddressId: props.outboundEmail.emailAddressArn,
|
|
30
|
+
},
|
|
31
|
+
quickConnectArns: props.quickConnects.map(qc => qc.quickConnectArn),
|
|
32
|
+
status: props.status ?? QueueStatus.ENABLED,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
get queueArn() {
|
|
36
|
+
return this.queue.attrQueueArn;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.Queue = Queue;
|
|
40
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
41
|
+
Queue[_a] = { fqn: "@netforbpo/aws-cdk-aws-connect-lib.Queue", version: "0.2.1" };
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FJcUI7QUFhckIsSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLGtDQUFtQixDQUFBO0lBQ25CLG9DQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxXQUFXLDJCQUFYLFdBQVcsUUFHdEI7QUFzQ0QsTUFBYSxLQUFNLFNBQVEsc0JBQVE7SUFLakMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQjtRQUN6RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBRS9DLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSx5QkFBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQy9DLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVc7WUFDdEMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQjtZQUM5RCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFdBQVcsRUFBRSxLQUFLLENBQUMsWUFBWTtZQUMvQixvQkFBb0IsRUFBRSxLQUFLLENBQUMsb0JBQW9CLElBQUk7Z0JBQ2xELG9CQUFvQixFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZO2dCQUM3RCx5QkFBeUIsRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLGNBQWM7Z0JBQ25GLGVBQWUsRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGNBQWM7YUFDaEU7WUFDRCxtQkFBbUIsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJO2dCQUMxQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLGVBQWU7YUFDNUQ7WUFDRCxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUM7WUFDbkUsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksV0FBVyxDQUFDLE9BQU87U0FDNUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7SUFDakMsQ0FBQzs7QUFoQ0gsc0JBaUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXdzX2Nvbm5lY3QgYXMgY29ubmVjdCxcbiAgSVJlc291cmNlLFxuICBSZXNvdXJjZSxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJQ29udGFjdEZsb3cgfSBmcm9tICcuL2NvbnRhY3RfZmxvdyc7XG5pbXBvcnQgeyBJRW1haWxBZGRyZXNzIH0gZnJvbSAnLi9lbWFpbF9hZGRyZXNzJztcbmltcG9ydCB7IElIb3Vyc09mT3BlcmF0aW9uIH0gZnJvbSAnLi9ob3Vyc19vZl9vcGVyYXRpb24nO1xuaW1wb3J0IHsgSUluc3RhbmNlIH0gZnJvbSAnLi9pbnN0YW5jZSc7XG5pbXBvcnQgeyBJUGhvbmVOdW1iZXIgfSBmcm9tICcuL3Bob25lX251bWJlcic7XG5pbXBvcnQgeyBJUXVpY2tDb25uZWN0IH0gZnJvbSAnLi9xdWlja19jb25uZWN0JztcblxuZXhwb3J0IGludGVyZmFjZSBJUXVldWUgZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICByZWFkb25seSBxdWV1ZUFybjogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBRdWV1ZVN0YXR1cyB7XG4gIEVOQUJMRUQgPSAnRU5BQkxFRCcsXG4gIERJU0FCTEVEID0gJ0RJU0FCTEVEJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWV1ZU91dGJvdW5kQ2FsbGVyQ29uZmlnIHtcbiAgcmVhZG9ubHkgY2FsbGVySWROYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNhbGxlcklkTnVtYmVyOiBJUGhvbmVOdW1iZXI7XG4gIHJlYWRvbmx5IGZsb3c6IElDb250YWN0Rmxvdztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWV1ZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBBV1MgY29ubmVjdCBpbnN0YW5jZSB0byBhdHRhY2ggdGhlIHF1ZXVlIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2U6IElJbnN0YW5jZTtcbiAgLyoqXG4gICAqIFRoZSBob3VycyBvZiBvcGVyYXRpb24gdG8gYXNzb2NpYXRlIHdpdGggdGhlIHF1ZXVlLlxuICAgKi9cbiAgcmVhZG9ubHkgaG91cnNPZk9wZXJhdGlvbjogSUhvdXJzT2ZPcGVyYXRpb247XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaG91cnMgb2Ygb3BlcmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQSBkZXNjcmlwdGlvbiBvZiB0aGUgcXVldWUuXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgb2YgdGhlIHF1ZXVlLiBEZWZhdWx0IFF1ZXVlU3RhdHMuRU5BQkxFRFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogUXVldWVTdGF0dXM7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY29udGFjdHMgdGhhdCBjYW4gYmUgaW4gdGhlIHF1ZXVlIGJlZm9yZSBpdCBpcyBjb25zaWRlcmVkIGZ1bGwgKGRlZmF1bHQgMC91bmxpbWl0ZWQpLlxuICAgKi9cbiAgcmVhZG9ubHkgbWF4UXVldWVTaXplPzogbnVtYmVyO1xuICByZWFkb25seSBvdXRib3VuZENhbGxlckNvbmZpZz86IFF1ZXVlT3V0Ym91bmRDYWxsZXJDb25maWc7XG4gIHJlYWRvbmx5IG91dGJvdW5kRW1haWw/OiBJRW1haWxBZGRyZXNzO1xuICByZWFkb25seSBxdWlja0Nvbm5lY3RzOiBJUXVpY2tDb25uZWN0W107XG59XG5cbmV4cG9ydCBjbGFzcyBRdWV1ZSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVF1ZXVlIHtcbiAgcmVhZG9ubHkgcXVldWU6IGNvbm5lY3QuQ2ZuUXVldWU7XG4gIHJlYWRvbmx5IGluc3RhbmNlOiBJSW5zdGFuY2U7XG4gIHJlYWRvbmx5IGhvdXJzT2ZPcGVyYXRpb246IElIb3Vyc09mT3BlcmF0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBRdWV1ZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuaW5zdGFuY2UgPSBwcm9wcy5pbnN0YW5jZTtcbiAgICB0aGlzLmhvdXJzT2ZPcGVyYXRpb24gPSBwcm9wcy5ob3Vyc09mT3BlcmF0aW9uO1xuXG4gICAgdGhpcy5xdWV1ZSA9IG5ldyBjb25uZWN0LkNmblF1ZXVlKHRoaXMsICdRdWV1ZScsIHtcbiAgICAgIGluc3RhbmNlQXJuOiB0aGlzLmluc3RhbmNlLmluc3RhbmNlQXJuLFxuICAgICAgaG91cnNPZk9wZXJhdGlvbkFybjogdGhpcy5ob3Vyc09mT3BlcmF0aW9uLmhvdXJzT2ZPcGVyYXRpb25Bcm4sXG4gICAgICBuYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgbWF4Q29udGFjdHM6IHByb3BzLm1heFF1ZXVlU2l6ZSxcbiAgICAgIG91dGJvdW5kQ2FsbGVyQ29uZmlnOiBwcm9wcy5vdXRib3VuZENhbGxlckNvbmZpZyAmJiB7XG4gICAgICAgIG91dGJvdW5kQ2FsbGVySWROYW1lOiBwcm9wcy5vdXRib3VuZENhbGxlckNvbmZpZy5jYWxsZXJJZE5hbWUsXG4gICAgICAgIG91dGJvdW5kQ2FsbGVySWROdW1iZXJBcm46IHByb3BzLm91dGJvdW5kQ2FsbGVyQ29uZmlnLmNhbGxlcklkTnVtYmVyLnBob25lTnVtYmVyQXJuLFxuICAgICAgICBvdXRib3VuZEZsb3dBcm46IHByb3BzLm91dGJvdW5kQ2FsbGVyQ29uZmlnLmZsb3cuY29udGFjdEZsb3dBcm4sXG4gICAgICB9LFxuICAgICAgb3V0Ym91bmRFbWFpbENvbmZpZzogcHJvcHMub3V0Ym91bmRFbWFpbCAmJiB7XG4gICAgICAgIG91dGJvdW5kRW1haWxBZGRyZXNzSWQ6IHByb3BzLm91dGJvdW5kRW1haWwuZW1haWxBZGRyZXNzQXJuLFxuICAgICAgfSxcbiAgICAgIHF1aWNrQ29ubmVjdEFybnM6IHByb3BzLnF1aWNrQ29ubmVjdHMubWFwKHFjID0+IHFjLnF1aWNrQ29ubmVjdEFybiksXG4gICAgICBzdGF0dXM6IHByb3BzLnN0YXR1cyA/PyBRdWV1ZVN0YXR1cy5FTkFCTEVELFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHF1ZXVlQXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucXVldWUuYXR0clF1ZXVlQXJuO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { aws_connect as connect, IResource, Resource } from 'aws-cdk-lib';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
import { IContactFlow } from './contact_flow';
|
|
4
|
+
import { IInstance } from './instance';
|
|
5
|
+
import { IQueue } from './queue';
|
|
6
|
+
import { IUser } from './user';
|
|
7
|
+
export interface IQuickConnect extends IResource {
|
|
8
|
+
/**
|
|
9
|
+
* The ARN of the quick connect.
|
|
10
|
+
*/
|
|
11
|
+
readonly quickConnectArn: string;
|
|
12
|
+
}
|
|
13
|
+
export declare enum QuickConnectType {
|
|
14
|
+
PHONE_NUMBER = "PHONE_NUMBER",
|
|
15
|
+
QUEUE = "QUEUE",
|
|
16
|
+
USER = "USER"
|
|
17
|
+
}
|
|
18
|
+
export interface QuickConnectQueueConfig {
|
|
19
|
+
readonly flow: IContactFlow;
|
|
20
|
+
readonly queue: IQueue;
|
|
21
|
+
}
|
|
22
|
+
export interface QuickConnectUserConfig {
|
|
23
|
+
readonly user: IUser;
|
|
24
|
+
readonly flow: IContactFlow;
|
|
25
|
+
}
|
|
26
|
+
export interface QuickConnectProps {
|
|
27
|
+
/**
|
|
28
|
+
* The AWS connect instance to attach the quick connect to.
|
|
29
|
+
*/
|
|
30
|
+
readonly instance: IInstance;
|
|
31
|
+
/**
|
|
32
|
+
* The name of the quick connect.
|
|
33
|
+
*/
|
|
34
|
+
readonly name: string;
|
|
35
|
+
/**
|
|
36
|
+
* The description of the quick connect.
|
|
37
|
+
*/
|
|
38
|
+
readonly description?: string;
|
|
39
|
+
/**
|
|
40
|
+
* the phone number to use for this quick connect.
|
|
41
|
+
*
|
|
42
|
+
* Cannot be set with queueConfig or userConfig
|
|
43
|
+
*/
|
|
44
|
+
readonly phoneNumber?: string;
|
|
45
|
+
/**
|
|
46
|
+
* the queue and flow to use for this quick connect.
|
|
47
|
+
*
|
|
48
|
+
* Cannot be set with phoneNumber or userConfig
|
|
49
|
+
*/
|
|
50
|
+
readonly queueConfig?: QuickConnectQueueConfig;
|
|
51
|
+
/**
|
|
52
|
+
* the user to use for this quick connect.
|
|
53
|
+
*
|
|
54
|
+
* Cannot be set with phoneNumber or queueConfig
|
|
55
|
+
*/
|
|
56
|
+
readonly userConfig?: QuickConnectUserConfig;
|
|
57
|
+
}
|
|
58
|
+
export declare class QuickConnect extends Resource implements IQuickConnect {
|
|
59
|
+
readonly quickConnect: connect.CfnQuickConnect;
|
|
60
|
+
constructor(scope: Construct, id: string, props: QuickConnectProps);
|
|
61
|
+
private buildQuickConnect;
|
|
62
|
+
get quickConnectArn(): string;
|
|
63
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.QuickConnect = exports.QuickConnectType = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
+
var QuickConnectType;
|
|
8
|
+
(function (QuickConnectType) {
|
|
9
|
+
QuickConnectType["PHONE_NUMBER"] = "PHONE_NUMBER";
|
|
10
|
+
QuickConnectType["QUEUE"] = "QUEUE";
|
|
11
|
+
QuickConnectType["USER"] = "USER";
|
|
12
|
+
})(QuickConnectType || (exports.QuickConnectType = QuickConnectType = {}));
|
|
13
|
+
class QuickConnect extends aws_cdk_lib_1.Resource {
|
|
14
|
+
constructor(scope, id, props) {
|
|
15
|
+
super(scope, id);
|
|
16
|
+
this.quickConnect = new aws_cdk_lib_1.aws_connect.CfnQuickConnect(this, 'QuickConnect', {
|
|
17
|
+
instanceArn: props.instance.instanceArn,
|
|
18
|
+
name: props.name,
|
|
19
|
+
description: props.description,
|
|
20
|
+
quickConnectConfig: this.buildQuickConnect(props),
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
buildQuickConnect(props) {
|
|
24
|
+
if (props.phoneNumber) {
|
|
25
|
+
if (props.queueConfig || props.userConfig) {
|
|
26
|
+
throw new Error('phoneNumber cannot be set with queueConfig or userConfig');
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
quickConnectType: QuickConnectType.PHONE_NUMBER,
|
|
30
|
+
phoneConfig: {
|
|
31
|
+
phoneNumber: props.phoneNumber,
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
else if (props.queueConfig) {
|
|
36
|
+
if (props.phoneNumber || props.userConfig) {
|
|
37
|
+
throw new Error('queueConfig cannot be set with phoneNumber or userConfig');
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
quickConnectType: QuickConnectType.QUEUE,
|
|
41
|
+
queueConfig: {
|
|
42
|
+
contactFlowArn: props.queueConfig.flow.contactFlowArn,
|
|
43
|
+
queueArn: props.queueConfig.queue.queueArn,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
else if (props.userConfig) {
|
|
48
|
+
if (props.phoneNumber || props.queueConfig) {
|
|
49
|
+
throw new Error('userConfig cannot be set with phoneNumber or queueConfig');
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
quickConnectType: QuickConnectType.USER,
|
|
53
|
+
userConfig: {
|
|
54
|
+
contactFlowArn: props.userConfig.flow.contactFlowArn,
|
|
55
|
+
userArn: props.userConfig.user.userArn,
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
throw new Error('One of phoneNumber, userConfig, or queueConfig must be specified');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
get quickConnectArn() {
|
|
64
|
+
return this.quickConnect.attrQuickConnectArn;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.QuickConnect = QuickConnect;
|
|
68
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
69
|
+
QuickConnect[_a] = { fqn: "@netforbpo/aws-cdk-aws-connect-lib.QuickConnect", version: "0.2.1" };
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2tfY29ubmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9xdWlja19jb25uZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBSXFCO0FBY3JCLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUMxQixpREFBNkIsQ0FBQTtJQUM3QixtQ0FBZSxDQUFBO0lBQ2YsaUNBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQUkzQjtBQTZDRCxNQUFhLFlBQWEsU0FBUSxzQkFBUTtJQUd4QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXdCO1FBQ2hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlCQUFPLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDcEUsV0FBVyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVztZQUN2QyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7U0FDbEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQXdCO1FBQ2hELElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQztZQUM5RSxDQUFDO1lBQ0QsT0FBTztnQkFDTCxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxZQUFZO2dCQUMvQyxXQUFXLEVBQUU7b0JBQ1gsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2lCQUMvQjthQUNGLENBQUM7UUFDSixDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0IsSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1lBQzlFLENBQUM7WUFDRCxPQUFPO2dCQUNMLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLEtBQUs7Z0JBQ3hDLFdBQVcsRUFBRTtvQkFDWCxjQUFjLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYztvQkFDckQsUUFBUSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVE7aUJBQzNDO2FBQ0YsQ0FBQztRQUNKLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM1QixJQUFJLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7WUFDOUUsQ0FBQztZQUNELE9BQU87Z0JBQ0wsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsSUFBSTtnQkFDdkMsVUFBVSxFQUFFO29CQUNWLGNBQWMsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjO29CQUNwRCxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTztpQkFDdkM7YUFDRixDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLGtFQUFrRSxDQUFDLENBQUM7UUFDdEYsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDO0lBQy9DLENBQUM7O0FBdERILG9DQXVEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGF3c19jb25uZWN0IGFzIGNvbm5lY3QsXG4gIElSZXNvdXJjZSxcbiAgUmVzb3VyY2UsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSUNvbnRhY3RGbG93IH0gZnJvbSAnLi9jb250YWN0X2Zsb3cnO1xuaW1wb3J0IHsgSUluc3RhbmNlIH0gZnJvbSAnLi9pbnN0YW5jZSc7XG5pbXBvcnQgeyBJUXVldWUgfSBmcm9tICcuL3F1ZXVlJztcbmltcG9ydCB7IElVc2VyIH0gZnJvbSAnLi91c2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBJUXVpY2tDb25uZWN0IGV4dGVuZHMgSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHF1aWNrIGNvbm5lY3QuXG4gICAqL1xuICByZWFkb25seSBxdWlja0Nvbm5lY3RBcm46IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gUXVpY2tDb25uZWN0VHlwZSB7XG4gIFBIT05FX05VTUJFUiA9ICdQSE9ORV9OVU1CRVInLFxuICBRVUVVRSA9ICdRVUVVRScsXG4gIFVTRVIgPSAnVVNFUicsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVpY2tDb25uZWN0UXVldWVDb25maWcge1xuICByZWFkb25seSBmbG93OiBJQ29udGFjdEZsb3c7XG4gIHJlYWRvbmx5IHF1ZXVlOiBJUXVldWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVpY2tDb25uZWN0VXNlckNvbmZpZyB7XG4gIHJlYWRvbmx5IHVzZXI6IElVc2VyO1xuICByZWFkb25seSBmbG93OiBJQ29udGFjdEZsb3c7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVpY2tDb25uZWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIEFXUyBjb25uZWN0IGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgcXVpY2sgY29ubmVjdCB0by5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlOiBJSW5zdGFuY2U7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcXVpY2sgY29ubmVjdC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgcXVpY2sgY29ubmVjdC5cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogdGhlIHBob25lIG51bWJlciB0byB1c2UgZm9yIHRoaXMgcXVpY2sgY29ubmVjdC5cbiAgICpcbiAgICogQ2Fubm90IGJlIHNldCB3aXRoIHF1ZXVlQ29uZmlnIG9yIHVzZXJDb25maWdcbiAgICovXG4gIHJlYWRvbmx5IHBob25lTnVtYmVyPzogc3RyaW5nO1xuICAvKipcbiAgICogdGhlIHF1ZXVlIGFuZCBmbG93IHRvIHVzZSBmb3IgdGhpcyBxdWljayBjb25uZWN0LlxuICAgKlxuICAgKiBDYW5ub3QgYmUgc2V0IHdpdGggcGhvbmVOdW1iZXIgb3IgdXNlckNvbmZpZ1xuICAgKi9cbiAgcmVhZG9ubHkgcXVldWVDb25maWc/OiBRdWlja0Nvbm5lY3RRdWV1ZUNvbmZpZztcbiAgLyoqXG4gICAqIHRoZSB1c2VyIHRvIHVzZSBmb3IgdGhpcyBxdWljayBjb25uZWN0LlxuICAgKlxuICAgKiBDYW5ub3QgYmUgc2V0IHdpdGggcGhvbmVOdW1iZXIgb3IgcXVldWVDb25maWdcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJDb25maWc/OiBRdWlja0Nvbm5lY3RVc2VyQ29uZmlnO1xufVxuXG5leHBvcnQgY2xhc3MgUXVpY2tDb25uZWN0IGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUXVpY2tDb25uZWN0IHtcbiAgcmVhZG9ubHkgcXVpY2tDb25uZWN0OiBjb25uZWN0LkNmblF1aWNrQ29ubmVjdDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUXVpY2tDb25uZWN0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5xdWlja0Nvbm5lY3QgPSBuZXcgY29ubmVjdC5DZm5RdWlja0Nvbm5lY3QodGhpcywgJ1F1aWNrQ29ubmVjdCcsIHtcbiAgICAgIGluc3RhbmNlQXJuOiBwcm9wcy5pbnN0YW5jZS5pbnN0YW5jZUFybixcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBxdWlja0Nvbm5lY3RDb25maWc6IHRoaXMuYnVpbGRRdWlja0Nvbm5lY3QocHJvcHMpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFF1aWNrQ29ubmVjdChwcm9wczogUXVpY2tDb25uZWN0UHJvcHMpOiBjb25uZWN0LkNmblF1aWNrQ29ubmVjdC5RdWlja0Nvbm5lY3RDb25maWdQcm9wZXJ0eSB7XG4gICAgaWYgKHByb3BzLnBob25lTnVtYmVyKSB7XG4gICAgICBpZiAocHJvcHMucXVldWVDb25maWcgfHwgcHJvcHMudXNlckNvbmZpZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Bob25lTnVtYmVyIGNhbm5vdCBiZSBzZXQgd2l0aCBxdWV1ZUNvbmZpZyBvciB1c2VyQ29uZmlnJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBxdWlja0Nvbm5lY3RUeXBlOiBRdWlja0Nvbm5lY3RUeXBlLlBIT05FX05VTUJFUixcbiAgICAgICAgcGhvbmVDb25maWc6IHtcbiAgICAgICAgICBwaG9uZU51bWJlcjogcHJvcHMucGhvbmVOdW1iZXIsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAocHJvcHMucXVldWVDb25maWcpIHtcbiAgICAgIGlmIChwcm9wcy5waG9uZU51bWJlciB8fCBwcm9wcy51c2VyQ29uZmlnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigncXVldWVDb25maWcgY2Fubm90IGJlIHNldCB3aXRoIHBob25lTnVtYmVyIG9yIHVzZXJDb25maWcnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHF1aWNrQ29ubmVjdFR5cGU6IFF1aWNrQ29ubmVjdFR5cGUuUVVFVUUsXG4gICAgICAgIHF1ZXVlQ29uZmlnOiB7XG4gICAgICAgICAgY29udGFjdEZsb3dBcm46IHByb3BzLnF1ZXVlQ29uZmlnLmZsb3cuY29udGFjdEZsb3dBcm4sXG4gICAgICAgICAgcXVldWVBcm46IHByb3BzLnF1ZXVlQ29uZmlnLnF1ZXVlLnF1ZXVlQXJuLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLnVzZXJDb25maWcpIHtcbiAgICAgIGlmIChwcm9wcy5waG9uZU51bWJlciB8fCBwcm9wcy5xdWV1ZUNvbmZpZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZXJDb25maWcgY2Fubm90IGJlIHNldCB3aXRoIHBob25lTnVtYmVyIG9yIHF1ZXVlQ29uZmlnJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBxdWlja0Nvbm5lY3RUeXBlOiBRdWlja0Nvbm5lY3RUeXBlLlVTRVIsXG4gICAgICAgIHVzZXJDb25maWc6IHtcbiAgICAgICAgICBjb250YWN0Rmxvd0FybjogcHJvcHMudXNlckNvbmZpZy5mbG93LmNvbnRhY3RGbG93QXJuLFxuICAgICAgICAgIHVzZXJBcm46IHByb3BzLnVzZXJDb25maWcudXNlci51c2VyQXJuLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdPbmUgb2YgcGhvbmVOdW1iZXIsIHVzZXJDb25maWcsIG9yIHF1ZXVlQ29uZmlnIG11c3QgYmUgc3BlY2lmaWVkJyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHF1aWNrQ29ubmVjdEFybigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnF1aWNrQ29ubmVjdC5hdHRyUXVpY2tDb25uZWN0QXJuO1xuICB9XG59XG5cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZ19wcm9maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JvdXRpbmdfcHJvZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVJlc291cmNlIH0gZnJvbSAnYXdzLWNkay1saWInO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0aW5nUHJvZmlsZSBleHRlbmRzIElSZXNvdXJjZSB7XG4gIHJlYWRvbmx5IHJvdXRpbmdQcm9maWxlQXJuOiBzdHJpbmc7XG59Il19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHlfcHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZWN1cml0eV9wcm9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUmVzb3VyY2UgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlY3VyaXR5UHJvZmlsZSBleHRlbmRzIElSZXNvdXJjZSB7XG4gIHJlYWRvbmx5IHNlY3VyaXR5UHJvZmlsZUFybjogc3RyaW5nO1xufSJdfQ==
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { aws_kinesis as kinesis, aws_kinesisfirehose as kinesisfirehose, aws_kms as kms, aws_connect as connect, aws_s3 as s3 } from 'aws-cdk-lib';
|
|
2
|
+
export declare enum StorageResourceType {
|
|
3
|
+
CHAT_TRANSCRIPTS = "CHAT_TRANSCRIPTS",
|
|
4
|
+
CALL_RECORDINGS = "CALL_RECORDINGS",
|
|
5
|
+
SCHEDULED_REPORTS = "SCHEDULED_REPORTS",
|
|
6
|
+
MEDIA_STREAMS = "MEDIA_STREAMS",
|
|
7
|
+
CONTACT_TRACE_RECORDS = "CONTACT_TRACE_RECORDS",
|
|
8
|
+
AGENT_EVENTS = "AGENT_EVENTS"
|
|
9
|
+
}
|
|
10
|
+
export declare enum StorageEncryptionType {
|
|
11
|
+
KMS = "KMS"
|
|
12
|
+
}
|
|
13
|
+
export declare enum StorageConfigType {
|
|
14
|
+
S3_BUCKET = "S3_BUCKET",
|
|
15
|
+
KINESIS_VIDEO_STREAM = "KINESIS_VIDEO_STREAM",
|
|
16
|
+
KINESIS_STREAM = "KINESIS_STREAM",
|
|
17
|
+
KINESIS_FIREHOSE = "KINESIS_FIREHOSE"
|
|
18
|
+
}
|
|
19
|
+
export interface StorageEncryptionConfig {
|
|
20
|
+
/**
|
|
21
|
+
* The type of encryption used on the stream.
|
|
22
|
+
*/
|
|
23
|
+
readonly encryptionType: StorageEncryptionType;
|
|
24
|
+
/**
|
|
25
|
+
* The KMS key used for encryption.
|
|
26
|
+
*/
|
|
27
|
+
readonly encryptionKey: kms.IKey;
|
|
28
|
+
}
|
|
29
|
+
export interface StorageConfigKinesisVideoStream {
|
|
30
|
+
/**
|
|
31
|
+
* The encryption configuration for the Kinesis Video Stream.
|
|
32
|
+
*/
|
|
33
|
+
readonly encryptionConfig: StorageEncryptionConfig;
|
|
34
|
+
/**
|
|
35
|
+
* The prefix of the video stream
|
|
36
|
+
*/
|
|
37
|
+
readonly prefix: string;
|
|
38
|
+
/**
|
|
39
|
+
* Kinesis Video Streams retains the data in a data store that is associated with the stream.
|
|
40
|
+
*
|
|
41
|
+
* The default value is 0, indicating that the stream does not persist data.
|
|
42
|
+
*/
|
|
43
|
+
readonly retentionPeriodHours?: number;
|
|
44
|
+
}
|
|
45
|
+
export interface StorageConfigS3 {
|
|
46
|
+
/**
|
|
47
|
+
* The bucket where the data will be stored
|
|
48
|
+
*/
|
|
49
|
+
readonly bucket: s3.IBucket;
|
|
50
|
+
/**
|
|
51
|
+
* The prefix within the bucket
|
|
52
|
+
*/
|
|
53
|
+
readonly prefix: string;
|
|
54
|
+
/**
|
|
55
|
+
* The optional encryption configuration.
|
|
56
|
+
*/
|
|
57
|
+
readonly encryptionConfig?: StorageEncryptionConfig;
|
|
58
|
+
}
|
|
59
|
+
export interface StorageConfigKinesisStream {
|
|
60
|
+
readonly stream: kinesis.IStream;
|
|
61
|
+
}
|
|
62
|
+
export interface StorageConfigKinesisFirehose {
|
|
63
|
+
readonly firehose: kinesisfirehose.IDeliveryStream;
|
|
64
|
+
}
|
|
65
|
+
export declare class StorageConfig {
|
|
66
|
+
static buildS3(resourceType: StorageResourceType, props: StorageConfigS3): StorageConfig;
|
|
67
|
+
static buildKinesisVideoStream(resourceType: StorageResourceType, props: StorageConfigKinesisVideoStream): StorageConfig;
|
|
68
|
+
static buildKinesisStream(resourceType: StorageResourceType, props: StorageConfigKinesisStream): StorageConfig;
|
|
69
|
+
static buildKinesisFirehose(resourceType: StorageResourceType, props: StorageConfigKinesisFirehose): StorageConfig;
|
|
70
|
+
private static readonly VALID_RESOURCES;
|
|
71
|
+
readonly resourceType: StorageResourceType;
|
|
72
|
+
readonly storageType: StorageConfigType;
|
|
73
|
+
readonly kinesisFirehose?: kinesisfirehose.IDeliveryStream;
|
|
74
|
+
readonly kinesisStream?: kinesis.IStream;
|
|
75
|
+
readonly kinesisVideoStreamConfig?: StorageConfigKinesisVideoStream;
|
|
76
|
+
readonly s3Config?: StorageConfigS3;
|
|
77
|
+
private constructor();
|
|
78
|
+
checkConfig(): boolean;
|
|
79
|
+
asStorageConfigProps(instanceArn: string): connect.CfnInstanceStorageConfigProps;
|
|
80
|
+
}
|