outbound

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
outbound [2020/01/09 16:04]
127.0.0.1 external edit
outbound [2020/05/27 11:34] (current)
admin
Line 1: Line 1:
 ====== Outbound ====== ====== Outbound ======
  
-The Outbound ​interface is tied to a specific deployment of an application. For details about deployments and how to navigate to this interface, see the [[deployments|Deployments]] page. This interface allows users to view completed and pending outbound call lists, to view call logs for completed outbound calls, and to queue outbound calls.+The Outbound interface allows users to view completed and pending outbound call lists, to view call logs for completed outbound calls, and to queue outbound calls manually through CSV upload. 
 + 
 +\\ Outbound calls can only be made when an application has been deployed. 
 +\\ For details about deployments and how to navigate to the interface, see the [[deployments|Deployments]] page
  
 ---- ----
-====Outbound Overview ​Guide====+====Outbound Overview====
  
-Fuse+ makes it possible to automate outgoing calls with your digital voice channel. Behind the scenes outbound calling is a little bit different from handling inbound calls. ​This guide serves as a high-level primer for how outbound calling functions in Fuse++Fuse+ makes it possible to automate outgoing calls with your digital voice channel. Behind the scenes outbound calling is a little bit different from handling inbound calls.
  
 There are several different components to understand when developing applications for outbound calling, including:​\\ There are several different components to understand when developing applications for outbound calling, including:​\\
  
-  * how the outbound call queuing platform works+  * [[outbound_process|how the outbound call queuing platform works]]
   * how to use the outbound APIs to queue calls   * how to use the outbound APIs to queue calls
   * how to use the API options to trigger different behaviors   * how to use the API options to trigger different behaviors
-  * how to get the results of your calls+  * how to get the results of your calls
- +
-For a complete list of API endpoints and parameters see the Fuse+ [[apis|APIs page]].+
  
 \\  \\ 
-===Basic Outbound Call Process=== 
-Every Fuse+ application has its own outbound calling queue. Outbound calls in Fuse+ are queued on a per application deployment basis. Fuse+ uses the URL that you queue your calls to identify the specific application deployment to execute when the call is answered. 
- 
-Here are the basic steps of the outbound call process:\\ 
- 
-  - A call is queued by sending a **phone_number** POST variable to the application deployment’s **queue** API. This also returns a unique **call_id**. 
-  - The call is inserted into the queue and put into the **queued** state while waiting for idle outbound capacity. 
-  - When idle outbound capacity is available the call is taken off the queue, dialed, and put into into the **dialing** state. 
-  - When the call is answered it is placed into the **connected** state and the associated application executes. 
-  - When the call disconnects it is placed in the **completed** state. 
- 
-{{:​fuse_docs-outbound_calling_results_url.png|?​nolink&​921x203}} 
- 
- 
 ===What You Will Need=== ===What You Will Need===
  
Line 37: Line 24:
   - A deployment created for the application. A phone number is **not** needed to for outbound deployment. See [[deployments#​creating-a-new-deployment|Creating a New Deployment]] for more information.   - A deployment created for the application. A phone number is **not** needed to for outbound deployment. See [[deployments#​creating-a-new-deployment|Creating a New Deployment]] for more information.
  
- 
-If you want to use Fuse+'​s APIs to queue outbound calls, go into the Outbound ( {{:​outbound_queue.svg?​nolink&​16x16|}} ) section of the deployment to see your deployment configuration. You will need both the application id and the deployment id to use the outbound APIs. 
- 
-{{::​outbound_deploymentinfo.png|}} 
  
 \\  \\ 
----- +===How to start an outbound call===
-====Advanced Outbound Call Features==== +
-The previous section described the most basic outbound call process. Fuse+ provides additional parameters that impact how a call behaves. You can take advantage of these features by sending the appropriate parameter when sending the request ​to queue an outbound call+
- +
-For more information on each field, please refer to the [[apis#​queuing-an-outbound-call|API]] section.+
  
 +There are 2 ways to start an outbound call \\ 
 \\  \\ 
-==Setting Caller ID== 
-Outbound calls placed from Fuse+ do not have a default caller ID value. You can use a parameter to control the specific caller ID that your customers see when their phone rings. To do this you make use of telephony URLs, which allow you to set an Automatic Number Identification (ANI) value. ​ 
  
-For example, if you wanted to place a call to the phone number 212-555-1234 and have the caller ID display 800-995-7586, then you would send **phone_number** POST parameter of:+  ​[[#queuing-outbound-calls-in-fuse|Manual queuing through ​CSV upload]] 
 +  - Queuing through APIs
  
-<​code>​ 
-tel:​+12125551234;​ani=8009957586 
-</​code>​ 
- 
-Note: Setting an invalid caller ID value can cause your calls to be rejected. ​ 
- 
-It is always best to use a phone number that you control so that if callers attempt to call you back you can route the callers to the correct resource. 
- 
-\\  
-==Call Scheduling== 
-If you have one or more calls queued for outbound calling and would like to schedule those calls to be placed within a fixed timeframe, Fuse+ provides two POST parameters to enable this. 
- 
-By default, the system does not have any limitations for when calls can be placed. Unless otherwise scheduled, queued calls will be placed as soon as possible and continue until all calls in the queue are complete. 
- 
-The **start_timestamp** and **end_timestamp** parameters set start and end times, respectively,​ for the window when your application places the calls in the outbound call queue. ​ 
- 
-Note: Simply because a call is scheduled for a specific timestamp does not guarantee that it will be dialed. The system honors First-In, First-Out (FIFO) rules and is limited by the amount of available idle outbound capacity at any given time.  
- 
-Queuing a large block of calls with a very small dialing window runs the risk of not having enough idle outbound capacity to work through the call queue. Any calls that are not dialed when they reach the **end_timestamp** will be updated to **canceled** status. The start and end parameters are not dependent; you can set either one or both. 
  
 \\ \\
-==Re-attempting Calls== +==Queuing through Fuse+ API==
-By default, Fuse+ outbound call queues make one attempt to dial a number in the call queue. If that call is unsuccessful after one attempt, the app marks the call as **failed**. However, you have the ability to increase the number of call attempted and to specify the interval for subsequent attempts.  +
- +
-Two POST parameters control re-attempt rules in Fuse+.\\ +
-  * The **max_attempts** parameter sets the total number of attempts the app makes for each call in the queue. ​  +
-  * The **reattempt_wait** parameter sets the amount of time to wait (in seconds) between each call attempt. ​+
  
-These parameters are mutually dependent: If you set **max_attemzpts** you must also set **reattempt_wait**. Failure to do so will result in an error when queuing.+Fuse+ API supports both [[apis#​queuing-an-outbound-call|single call queuing]] and [[apis#​queuing-multiple-outbound-calls|bulk call queuing]].
  
 \\  \\ 
-==Additional ​Outbound ​Call States== +If you want to use Fuse+'​s APIs to queue outbound calls, go into the Outbound ​( {{:​outbound_queue.svg?​nolink&​16x16|}} ) section of the deployment to see your deployment configurationYou will need both the application id and the deployment id to use the outbound ​APIs.
-Simply placing a call does not guarantee that the call will connectCalls that go unanswered can trigger additional states in Fuse+ outbound ​call queues\\+
  
-  * **busy** - the call was unable to connect because the far end was unavailable +{{::​outbound_deploymentinfo.png|}}
-  * **noanswer** - the call was not answered within 45 seconds +
-  * **informationtone** - the number dialed was invalid+
  
-When the application exhausts the maximum number of attempts without the call moving into the **connected** state, the system flags the call as **failed** and sends a request to the original **result_url** parameter if one was set. 
- 
-\\ 
-==Result Callbacks== 
-Fuse+ can notify you when your outbound call queue completes using a callback URL. This allows you to update your records for each individual call and take any other, necessary actions. 
- 
-The POST parameter **result_url** allows you to define an API endpoint on your web servers that will receive a POST request from Fuse+ after the call status updates to either **completed**,​ **failed** or **canceled**. 
- 
-The callback URL receives a JSON POST string that contains all the details about the call, including any events that occurred. 
- 
-Here is a sample JSON POST string: 
-<​code>​ 
-  { 
-    "​max_attempts":​ "​1",​ 
-    "​attempts":​ "​1",​ 
-    "​events":​ [ 
-      {"​event":​ "​queued","​timestamp":​ 1475095892},​ 
-      {"​event":​ "​dialing","​timestamp":​ 1475095893},​ 
-      {"​event":​ "​connected","​timestamp":​ 1475095925},​ 
-      {"​event":​ "​disconnected","​timestamp":​ 1475095928} 
-    ], 
-    "​phone_number":​ "'​6173720293'",​ 
-    "​status":​ "​completed",​ 
-    "​queued_timestamp":​ "​1475095892",​ 
-    "​start_timestamp":​ "​1475095925",​ 
-    "​end_timestamp":​ "​1475095928",​ 
-    "​reattempt_wait":​ "​300",​ 
-    "​duration":​ 3 
-  } 
-</​code>​ 
  
 \\  \\ 
-==Metadata== 
-When placing outbound calls you may want to provide specific, dynamic information to your recipient that can be referenced by your Fuse+ application. For example, you may want to state the call recipient’s name in the initial prompt. Rather than forcing your Fuse+ application to use a web service to lookup call specific details at the start of the call, you can push variables directly into your application using the POST parameter **metadata**. 
- 
-The **metadata** parameter should be sent as a JSON object that contains key / value pairs. ​ Your Fuse+ application automatically imports any keys you set in the metadata into your application. 
- 
-For example if you post the following JSON for your metadata: 
- 
-<​code>​ 
-{ 
-  "​name":"​John Doe", 
-  "​appointment":"​Monday September 24th at 10am" 
-} 
-</​code>​ 
- 
-Fuse+ automatically creates two variables, **name** and **appointment**,​ that you can reference inside a Fuse+ module to create a dynamic prompt.  ​ 
- 
----- 
-//​**Security and the Metadata parameter**//​ 
- 
-When it comes to the transmission and storage of sensitive data, Plum is a pass-through organization. This means Plum doesn’t store any information input during a call. Input data stays in temporary memory during the call and is purged when the call ends; no HIPAA or PCI level information is ever stored. 
- 
-When queuing calls, you send information to Plum’s servers that needs to be stored for a given amount of time. Call queue data is **not** stored in a PCI-/​HIPAA-secured database, and as a result, is **not** covered by Plum’s security certificates/​policies. This includes information set in the metadata parameter. 
- 
-Incorporating PCI/HIPAA information into a call-flow requires a two-step process. 
- 
-  - Queue a call using at least two pieces of information:​ a phone number and a unique, non-PCI/​non-HIPAA identifier. (It is up to the customer to determine the identifier and ensure that it corresponds to the correct record in their database.) 
-  - When the call connects, make a webservice request to your company’s database to fetch the information covered by PCI or HIPAA. 
- 
-This process ensures that no sensitive data gets stored on non-PCI/​HIPAA certified servers. 
- 
-In addition to a unique ID number, you can set non-PCI/​HIPAA data to a queued call. This enables you to present non-sensitive,​ personalized data, like customer name, before fetching sensitive data from your company database(s). 
- 
-It is the customer’s responsibility to secure their data and to ensure that applications running on the Plum Fuse+ platform do not pass unsecured data, including any data set in the metadata parameter. 
----- 
- 
-==Bulk Call Queuing== 
-You can queue calls individually or in bulk, depending on your outbound dialing needs. Each application deployment supports two different API endpoints. To this point, we have discussed the single call **queue** API endpoint. 
- 
-A **bulk_queue** endpoint that supports an HTTP upload parameter **csv** also exists. This parameter allows you to upload a CSV file with a list of phone numbers to dial as well as specifying any additional metadata parameters that need to be set. 
- 
-All other POST parameters for this service match those provided in the **queue** API 
- 
-\\  
-==Fair Queuing== 
-Each application deployment in Fuse+ automatically creates a first-in, first-out (FIFO) outbound queue. Fuse+ weights all your application deployments equally to ensure no single application starves out the rest. 
- 
-For example, if you were to queue 10,000 phone calls with one application and then, a few minutes later, queue 100 phone calls into a second application,​ then the calls from both applications would be fairly distributed until the smaller queue completes. At that time, the remaining calls from the larger queue continue to be dialed until they were complete. 
- 
 ---- ----
 ====Queuing Outbound Calls In Fuse+==== ====Queuing Outbound Calls In Fuse+====
Line 204: Line 78:
 The only format restriction is that the first column header must be '​destination'​. Other than that, users may supply optional columns of information. Fuse set these data as variables within your outbound call.\\ The only format restriction is that the first column header must be '​destination'​. Other than that, users may supply optional columns of information. Fuse set these data as variables within your outbound call.\\
  
-The following list provides samples of different phone number formats for 5 different contacts. ​Observe that none of these numbers have call variables set:+The following list provides samples of different phone number formats for 5 different contacts.
  
 <​file>​ <​file>​
-"destination+"tel:​+11234567890;​ani=8009957586
-"1234567890"​ +"tel:​+11112223456;​ani=8009957586
-"​1112223456+"tel:+12223456547;​ani=8009957586
-"​tel:​12223456547"​ +"​tel:​+16177123000;​ani=8009957586
-"​tel:​+16177123000;​ani=5553336666+"tel:+19998886666;​ani=8009957586"
-"​19998886666"​+
 </​file>​ </​file>​
  
-\\ Note the various supported phone number formats. Users can add optional parameters for phone number strings, e.g. '​tel',​ '​ani',​ etc. Phone number formatting in Fuse functions the same way it does in native VoiceXML.\\+\\ Note the various supported phone number formats. Users can add optional parameters for phone number strings, e.g. '​tel',​ '​ani',​ etc. Phone number formatting in Fuse functions the same way it does in native VoiceXML. \\
  
-The following file includes the same list of phone numbers, but with the additional variables '//​first_name//'​ and '//​last_name//'​ for use within the application:​+\\ **As of 2019, ANI should be set on all outbound phone calls** as federal regulation requirements means that a lot of inbound carriers will block the outbound calls that does not originate somewhere. ANI should be a number that you own. \\ For more information about this, please see {{ :​robocalling.pdf |here}} 
 + 
 + 
 +\\ The following file includes the same list of phone numbers, but with the additional variables '//​first_name//'​ and '//​last_name//'​ for use within the application:​
  
  
 <​file>​ <​file>​
 "​destination","​first_name","​last_name"​ "​destination","​first_name","​last_name"​
-"1234567890","​Steve","​Smith"​ +"tel:​+11234567890;​ani=8009957586","​Steve","​Smith"​ 
-"1112223456","​Klein","​Reynolds"​ +"tel:​+11112223456;​ani=8009957586","​Klein","​Reynolds"​ 
-"​tel:​12223456547","​Sloane","​Bergeron"​ +"tel:+12223456547;​ani=8009957586","​Sloane","​Bergeron"​ 
-"​tel:​+16177123000;​ani=5553336666","​Plum","​Voice"​ +"​tel:​+16177123000;​ani=8009957586","​Plum","​Voice"​ 
-"​19998886666","​Keith","​Johnston"​+"tel:+19998886666;​ani=8009957586","​Keith","​Johnston"​
 </​file>​ </​file>​
  
Line 355: Line 231:
  
  
 +
 +====Advanced Outbound Call Features====
 +
 +For more information on the different settings you can set for an outbound call, please visit the [[outbound_parameters|Outbound Parameters]] page.
outbound.1578603888.txt.gz · Last modified: 2020/01/09 16:04 by 127.0.0.1