# AWS S3

![Figure 1: The AWS S3 module.](/files/k1UhXUnf0r1hzbY21dUv)

{% hint style="warning" %}
**IMPORTANT:** This is an advanced module. Some setup is required before use.
{% endhint %}

## Function

This module uses the supported third-party service AWS S3. The module allows you to integrate an S3 bucket into your application to upload audio recorded during a call.

You can select and use any S3 integration that has been added to your Fuse account.

{% hint style="info" %}
**NOTE:** Integrations are shared with all users in a Fuse account. You can always check existing integrations by going to the **My Account** page and viewing the **Integrations** tab.
{% endhint %}

### For recording call audio only

The AWS S3 module is designed to work alongside the <img src="/files/-M4u9_1SusPxpN_HpR2o" alt="" data-size="line"> [Record](/fuse/input/record.md) and <img src="/files/-M4u9_02rWeUoRM8_tsE" alt="" data-size="line"> [Call Recording](/fuse/data/call-recording.md) modules. It can **only** handle the call recordings generated by those two modules. The AWS S3 module will not work for any other type of object storage.

### Audio file format

Call recordings are uploaded in different formats depending on the source module:

| Module                                                                                                             | Output format |
| ------------------------------------------------------------------------------------------------------------------ | ------------- |
| <img src="/files/-M4u9_1SusPxpN_HpR2o" alt="" data-size="line"> [**Record**](/fuse/input/record.md)                | .wav          |
| <img src="/files/-M4u9_02rWeUoRM8_tsE" alt="" data-size="line"> [**Call Recording**](/fuse/data/call-recording.md) | .ulaw         |

## Prerequisites

To use this module, you must have an account with AWS (Amazon Web Services). You must also have a working Amazon S3 bucket added as an integration to your Fuse account.

Complete the following in order:

#### In AWS:

1. Get an AWS account. ([Website](https://aws.amazon.com/))
2. Set up a working bucket with Amazon S3. ([AWS documentation](https://docs.aws.amazon.com/s3/))
3. Set up an IAM user with access keys and an IAM policy for S3. ([Guide](/fuse/integration/setting-up-authentication.md#aws-s3))

#### In Fuse:

1. **Admin-only task:** [Add your S3 bucket as an integration in the My Account page](/fuse/my-account/admin-options.md#add-an-integration-admin).

Once finished, the <img src="/files/C4ypHDsWqOatSDw6ZJq2" alt="" data-size="line"> AWS S3 module can be used successfully.

## Input Fields

![Figure 2: AWS S3 module fields.](/files/pdMKs1pDyUbz4DxhKUvJ)

As shown in Figure 2, the following fields are available. Completing an active field enables the next:

* **Select Bucket**: Select one of your AWS S3 integrations.
* **Select Path**: Select the path in your S3 bucket where your recording will be uploaded.
* **Select Recording**: Select the name of the recording module that will generate the recording to be uploaded.
* **File Name**: Enter a filename for the recording as a string or variable.
  * **Note:** A timestamp will also be automatically appended to each filename before uploading.
  * Uploaded recordings will have the following, final syntax: \
    `[filename]-[timestamp]`

## Module Settings

![Figure 3: Module settings for AWS S3.](/files/A0xiYpMUgJb3wrBFUoJa)

### [Hold Music](/fuse/module-settings.md#hold-music)

| ![](/files/UM9vo2t0aOY73wXE9i4d) | <p>Enable this setting to play audio while an end-user is on hold.<br>To upload a file for hold music, go to <em>Application Settings > Connection Settings ></em> <a href="/pages/-M4z72y3R7KiJyI7gkuv#webservices"><em>Webservices</em></a> <em>> Webservice fetch audio</em>.</p> |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

### [Timeout Length](/fuse/module-settings.md#timeout-length)

| ![](/files/gDmG1vOd3Ydbatqoqbhr) | <p>This allows users to set the maximum time, in seconds, that elapse before returning a timeout error. This applies to modules that fetch outside scripts, like the SOAP, REST, or subdialog modules.<br><br>The default value for Timeout Length is 30 seconds.<br>Acceptable number values range from 1 to 120.</p> |
| -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

### [Private](/fuse/module-settings.md#private)

| ![](/files/IpqglloKRVnAFsh90uC6) | <p>This setting controls the logging function of a module.<br>Enabling the 'Private' setting instructs the module to not record, report, or retain the information input to that module for reporting or any other purposes. When enabled any information entered into a module during a call will be lost immediately when the call terminates.<br>The 'Private' setting is critical for businesses that need to maintain PCI-DSS or HIPAA compliance.<br><br>The module icon, in the upper left-hand corner, becomes grayed-out when this setting is enabled. See more details <a href="/pages/-M4zJLOnor8aJqMZ7an7#visual-indicators">here</a>.</p> |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

### [Show Custom Errors](/fuse/module-settings.md#show-custom-errors)

| ![](/files/NjiEJkRn8DXm3kIBeQrU) | <p>Enabling this setting overrides the default, global error options set in the <em>Application Settings</em> > <a href="/pages/-M4z6BCTQuqNA3eCMpwL"><em>User Input Settings</em></a>.<br>This allows users to establish custom error handling in order to act on errors in a specific way in that module.<br>Instead of progressing to the next module in the call-flow, custom error handling allows users to re-prompt the same module, to provide a custom error message, to re-direct the call based on the error, or any other desired behavior.<br><br><img src="/files/YLIAmHhuXPvGYPaPJTHO" alt=""><br><br>Adding multiple errors (<img src="/files/U3Xpa9ktfckZKYB9AJXx" alt="" data-size="line">) to a module functions behave the same way as a counter.<br>The first error follows the path for the first error listed, if a second error occurs in the same module it follows the second listed error, and so on until all errors are exhausted or an error directs the end-user away from that module.<br><br><img src="/files/XyuYm8hww70XTD08qVLb" alt="" data-size="line"> No Input occurs when the caller does not provide an input based on the timeout settings.<br>This is based on the “<em>Initial input timeout</em>” in <a href="/pages/-M4z6BCTQuqNA3eCMpwL">User Input Settings</a>.<br><br><img src="/files/vPq55HyiOKjBX5RMh8Wr" alt="" data-size="line"> No Match occurs when the caller input does not match the module's criteria for the input module.</p> |
| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.plumvoice.com/fuse/integration/aws-s3.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
