https://github.com/amazon-connect/amazon-connect-taskjs
Amazon Connect Task JS - a browser-based contact center integration API for Tasks.
https://github.com/amazon-connect/amazon-connect-taskjs
Last synced: 7 months ago
JSON representation
Amazon Connect Task JS - a browser-based contact center integration API for Tasks.
- Host: GitHub
- URL: https://github.com/amazon-connect/amazon-connect-taskjs
- Owner: amazon-connect
- License: apache-2.0
- Created: 2020-11-27T17:36:29.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2023-07-19T00:34:49.000Z (about 3 years ago)
- Last Synced: 2025-08-22T23:53:53.266Z (12 months ago)
- Language: JavaScript
- Homepage:
- Size: 2.96 MB
- Stars: 22
- Watchers: 15
- Forks: 14
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
## AmazonConnectTaskJS
# About
The Amazon Connect Task javascript library (TaskJS) gives you the power to handle task contacts when used together with [Amazon Connect Streams](https://github.com/aws/amazon-connect-streams).
# Learn More
To learn more about Amazon Connect and its capabilities, please check out
the [Amazon Connect User Guide](https://docs.aws.amazon.com/connect/latest/userguide/).
# Getting Started
### Using TaskJS from Github
```
$ git clone https://github.com/amazon-connect/amazon-connect-taskjs
```
### Including TaskJS
[Amazon Connect Streams](https://github.com/aws/amazon-connect-streams) is required to use TaskJS. Ensure you import TaskJS after Streams.
TaskJs v2.0 requires Streams v2.2 or later.
# Building
1. Install latest LTS version of [NodeJS](https://nodejs.org)
2. Checkout this package into workspace and navigate to root folder
3. `npm install`
4. To build (non-minified):
1. `npm run devo` for a non-minified build.
2. Find build artifacts in **dist** directory.
5. To build (minified):
1. `npm run release` for a minified build.
2. Find build artifacts in **dist** directory.
6. To run unit tests:
1. `npm run test`
7. To clean node_modules:
1. `npm run clean`
8. To make webpack watch all files:
1. `npm run watch`
Find build artifacts in **dist** directory - This will generate a file called `amazon-connect-task.js` - this is the full Connect TaskJS API which you will want to include in your page.
# Usage:
TaskJS provides a `taskSession` instance for each task contact. You can access the `taskSession` by calling the `getMediaController` method on a `taskConnection`. `getMediaController` returns a promise that resolves with a `taskSession` instance.
For example:
```js
taskConnection.getMediaController().then((taskSession) => { /* ... */ });
```
## Event Handlers
Each of the following event handlers will pass a message object to the callback function containing the following fields:
* `AbsoluteTime`: UTC timestamp of when the event occurred.
* `ContentType`: One of the following strings depending on the event:
* `application/vnd.amazonaws.connect.event.transfer.initiated`
* `application/vnd.amazonaws.connect.event.transfer.succeeded`
* `application/vnd.amazonaws.connect.event.transfer.failed`
* ` application/vnd.amazonaws.connect.event.expire.warning`
* `application/vnd.amazonaws.connect.event.expire.complete`
* `Id`: The contact ID
* `InitialContactId`: The [initial contact id](https://github.com/amazon-connect/amazon-connect-streams/blob/master/Documentation.md#contactgetoriginalcontactid--contactgetinitialcontactid).
### `taskSession.onTransferInitiated`
Subscribe a method to be invoked when the server has initiated the task transfer.
```js
taskSession.onTransferInitiated((message) => console.log("Transfer has initiated"))
```
### `taskSession.onTransferSucceeded`
Subscribe a method to be invoked when the task transfer has succeeded.
```js
taskSession.onTransferSucceeded((message) => console.log("Transfer has succeeded"))
```
### `taskSession.onTransferFailed`
Subscribe a method to be invoked when the task transfer has failed.
```js
taskSession.onTransferFailed((message) => console.log("Transfer has failed"))
```
### `taskSession.onTaskExpiring`
Subscribe a method to be invoked two hours before the task expires.
```js
taskSession.onTaskExpiring((message) => console.log("Task will expire in two hours"))
```
### `taskSession.onTaskExpired`
Subscribe a method to be invoked when the task has expired.
```js
taskSession.onTaskExpired((message) => console.log("Task has expired"))
```
### `taskSession.onMessage`
Subscribe a method to be invoked when any one of the above events has occurred.
```js
taskSession.onMessage((message) => console.log("The following event has occurred:", message.ContentType))
```
## Methods
### `agent.createTask()`
Create a new task.
```js
const newTask = {
name: "string", //required, max len: 512
description: "string", //optional, max len: 4096
endpoint: endpointObject, //required for non templated tasks, can be retrieved via `agent.getEndpoints()`. Agent and queue endpoints supported.
taskTemplateId: "string", //required for templated tasks, ID of the template the task is created from. Template should belong to connect instance
previousContactId: "string", //optional, the previous contact ID for a linked task
references: { //optional. Only URL references are supported for non templated tasks
"reference name 1": { // string, max len: 4096
type: "URL" //required, string, one of connect.ReferenceType types,
value: "https://www.amazon.com" //required, string, max len: 4096
},
"reference name 2": { // string, max len: 4096
type: "EMAIL" //required, string, one of connect.ReferenceType types
value: "example@abc.com" //required, string, max len: 4096
},
"reference name 3": { // string, max len: 4096
type: "NUMBER" //required, one of connect.ReferenceType types
value: 1000 //required, number
},
"reference name 4": { // string, max len: 4096
type: "DATE", //required, string, one of connect.ReferenceType types
value: 1649961230 //required, number
},
"reference name 5": { // string, max len: 4096
type: "STRING" //required, string, one of connect.ReferenceType types
value: "example@abc.com" //required, string, max len: 4096
}
},
scheduledTime: "number" //optional, UTC timestamp in seconds when the task should be delivered.
};
agent.createTask(newTask, {
success: function(data) { console.log("Created a task with contact id: ", data.contactId) },
failure: function(err) { /* ... */ }
});
```
### `agent.updateContact()`
Update a task contact created from a template.
```js
const updatedTaskData = {
contactId: "string", // required, task contact identifier
name: "string", // optional, task name
description: "string", // optional, task description
references: { //optional, used to specify updated template fields
"reference name": { // string
type: "NUMBER" //required, one of connect.ReferenceType types
value: 1001 //required, number
}
//see more examples in agent.createTask() description
}
};
agent.updateContact(updatedTaskData, {
success: function() { console.log("The task updated successfully") },
failure: function(err) { /* ... */ }
});
```
### `agent.listTaskTemplates()`
Load a list of task templates that belong to a connect instance
```js
const queryParams = {// required
status: 'active', //optional, string, can be either 'active' or 'inactive'
maxResults: 50 //optional, number, max value of 100
};
agent.listTaskTemplates(queryParams, {
success: function(data) { console.log("List of task templates loaded successfully", data) },
failure: function(err) { /* ... */ }
});
```
### `agent.getTaskTemplate()`
Load a template data, including fields, default values and constraints
```js
const templateParams = {// required
id: 'string', //required, string, template ID, template should belong to connect instance
version: 'string' //optional, string, task template version
};
agent.getTaskTemplate(templateParams, {
success: function(data) { console.log("Template data loaded successfully", templateParams.id, data) },
failure: function(err) { /* ... */ }
});
```
## Enumerations
### `connect.ReferenceType`
This enumeration lists the different reference types for a task. Currently supported types: URL, EMAIL, NUMBER, STRING, DATE.
* `ReferenceType.URL`: A URL reference.
## Security
See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information.
## License
This project is licensed under the Apache-2.0 License.