# Transfer

![](https://820663326-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M40QJ5NXmtM4utV6bD_%2F-M5NaVIOpHaLl1apMHog%2F-M5NbiYWdqXfi7Drg-aA%2Fmodule-transfer.png?alt=media\&token=0dc97bd2-05c5-4655-a7b0-e7f3c5f52eed)

## **Function**

This module facilitates call transfers. Both the prompt field and the destination number field can consist of a static or a variable value.

Destination number field can accept either a phone number (ex: 800-000-1234) or a SIP address (ex: sip:1234\@10.0.1.2). Phone numbers must be formatted as follows:

| **Value type(s)**                   | **Example(s)**                                                                                          | **Notes**                                                                                                              |
| ----------------------------------- | ------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| 10-digit ANI.                       | <p><code>(777) 555-1111</code></p><p><code>777-555-1111</code></p><p><code>7775551111</code></p>        | **Recommended best practice for destination numbers.**                                                                 |
| <p>10-digit number <br>and ANI.</p> | `tel:+18887776666; ani=7775551111`                                                                      | <p>Includes <code>tel</code> URI, US code (+1), and <code>ani</code> variable. <br>Values are semicolon separated.</p> |
| 10-digit number and postd key.      | `tel:+18887776666; postd=2341`                                                                          | Includes `tel` URI, US code (+1), and `postd` key. Values are semicolon separated.                                     |
| 10-digit number.                    | `tel:+18887776666`                                                                                      | Includes `tel` URI and US code (+1).                                                                                   |
| 10-digit number.                    | <p></p><p><code>(888) 777-6666</code></p><p><code>888-777-6666</code></p><p><code>8887776666</code></p> | May be formatted or unformatted as shown in the examples.                                                              |
| Variable                            | `xfr_number`                                                                                            | Assigned numbers should follow one of the formats listed here.                                                         |

The following image gives an example of variables being used in the Transfer module.

![Variables set in one module can be used as phone numbers in the Transfer module.](https://820663326-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M40QJ5NXmtM4utV6bD_%2F-MlHv-WTGTQoeCCndKhX%2F-MlHvhgvIlTH6wZTpqqf%2Ftransfer%20module%20-%20variables.png?alt=media\&token=12b9ba82-9bd9-41ef-8018-8c9df1446590)

As shown in the above image, variables can then be entered into the destination number field in the Transfer module. The module will accept these variables in the same way as a phone number. Any phone numbers entered as variables must fit one of the number formats in the table above.

You can determine the result of the transfer using a combination of the *result\_variable*, and the duration [shadow variable](https://docs.plumvoice.com/fuse/variables/shadow-variables) (*result\_variable$.duration*).

| Transfer Result                                           | Result Variable and Duration                                                                |
| --------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| Caller hung up before transfer began                      | *result\_variable = NULL* and *result\_variable$.duration = NULL*                           |
| Caller hung up while transfer is ringing                  | *result\_variable = NULL* and *result\_variable$.duration = 0*                              |
| No one at the far end answered before the connect timeout | *result\_variable = noanswer* and *result\_variable$.duration = 0*                          |
| Far end was busy                                          | *result\_variable = busy* and *result\_variable$.duration = 0*                              |
| Caller hung up during transfer                            | *result\_variable = NULL* and *result\_variable$.duration > 0*                              |
| Far end hung up on the original caller                    | *result\_variable = far\_end\_disconnect* and *result\_variable$.duration > 0*              |
| Maximum timeout was reached                               | *result\_variable = maxtime\_disconnect* and *result\_variable$.duration = maximum timeout* |

If the IVR is not expect to do anything after the entire transfer is finished, an [*Exit*](https://docs.plumvoice.com/fuse/call-flow/exit) (<img src="https://820663326-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M40QJ5NXmtM4utV6bD_%2F-M4u8_YcRziLXQiLsKMa%2F-M4u9_0fkf2qL_nGYS0q%2Fexit.svg?alt=media&#x26;token=760e88b0-f144-4480-bcb1-569aa9054834" alt="" data-size="line">) module should be placed at the end of the transfer module to complete the call flow.

## Module Settings

### [**Hold Music**](https://docs.plumvoice.com/fuse/module-settings#hold-music)

|                                                                                                                                                                                                                                                                               |                                                                                                                                                                                                                                                                                                                            |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <img src="https://820663326-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M40QJ5NXmtM4utV6bD_%2F-M5NaVIOpHaLl1apMHog%2F-M5NbiYg-I4cANYYF0Y5%2Fsettings-holdmusic.png?alt=media&#x26;token=f649fab3-4470-46b1-a78a-ca39ffa65350" alt="" data-size="original"> | <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="../../application-editor/application-settings/connection-settings#webservices"><em>Webservices</em></a> <em>> Webservice fetch audio</em>.</p> |

### [Private](https://docs.plumvoice.com/fuse/module-settings#private)

|                                                                                                                                                                                                                                                                             |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <img src="https://820663326-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M40QJ5NXmtM4utV6bD_%2F-M5NaVIOpHaLl1apMHog%2F-M5NbiYoLH9-yNY0kT9f%2Fsettings-private.png?alt=media&#x26;token=776ae5b8-2ed0-4acd-9676-9b047eb88549" alt="" data-size="original"> | <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="../../application-editor/modules#visual-indicators">here</a>.</p> |

### [**Show Custom Errors (Transfer)**](https://docs.plumvoice.com/fuse/module-settings#show-custom-errors-transfer)

|                                                                                                                                                                                                                                                                                     |                                                                                                                                                                                                                                                                                                                                      |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| <img src="https://820663326-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M40QJ5NXmtM4utV6bD_%2F-M5NaVIOpHaLl1apMHog%2F-M5NbiYpIlBkq4cl4qvN%2Fsettings-showcustomerror.png?alt=media&#x26;token=7567cb47-ef9e-4b57-9c6c-0a3382fae512" alt="" data-size="original"> | <p>This setting can be used to catch any error that occur during the transfer.<br>This setting displays 'Error' and 'No Answer' options.<br>If a transfer experiences a connection timeout with 'Show Custom Errors' enabled, the call automatically flows to 'No Answer'. If this setting is not enabled, the call disconnects.</p> |

### [**Show Custom Timeouts**](https://docs.plumvoice.com/fuse/module-settings#show-custom-timeouts)

|                                                                                                                                                                                                                                                                                        |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <img src="https://820663326-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M40QJ5NXmtM4utV6bD_%2F-M5NaVIOpHaLl1apMHog%2F-M5NbiYqY_cGVPBQ-9qa%2Fsettings-showcustomtimeouts.png?alt=media&#x26;token=0a8581f5-a2ca-4d64-a1ae-4cb8a39e125a" alt="" data-size="original"> | <p>Enabling this setting allows users to establish custom timeout error handling for that specific module.<br>It will override the default global webservice timeouts in <em>Application Settings</em> > <a href="../application-editor/application-settings/connection-settings"><em>Connection Settings</em></a>.<br><br>Enabling this presents users with two new forms in the module: Connect Timeout and Maximum Timeout.<br><br>The default durations are:<br><strong>Connect Timeout</strong>: 30 seconds<br><strong>Maximum Timeout</strong>: 0 (unlimited)</p> |

### **Advanced Settings**

Advanced Fuse users may want to use shadow variables that are available for the Transfer module. For more information on this functionality, please visit the [Shadow Variables](https://docs.plumvoice.com/fuse/variables/shadow-variables) page.
