Prerequisites
Before configuring the Five9 phone switch for a brand, gather:- ElasticFunnels access: Call Center admin, brand linked to the center, and permission to edit Brand Settings → Phone Switch
- REST surface: Either a supported direct REST base URL or a middleware service you control, reachable from ElasticFunnels servers
- Authentication: Either a Bearer token (
api_key) or HTTP Basic credentials (username/password) - Agent extensions: Values in ElasticFunnels Agents must match what your Five9 or middleware expects for the placing agent
- Optional routing defaults: Campaign name and skill ID if your dial or queue logic requires them
- Screen pop: Webhook URL and shared secret (if used) configured on the telephony side to POST inbound events to ElasticFunnels
Configuration fields
Use either Bearer (
api_key) or Basic (username + password), according to what your REST layer accepts. Do not assume both are required unless your middleware explicitly needs them.Setup
Choose the pattern that matches your infrastructure.Direct REST API
Use this when Five9 or your tenant exposes (or you host) REST endpoints atapi_base_url that match the default paths or your customized paths.
1
Confirm the base URL and auth
Obtain the HTTPS base URL and whether the service expects a Bearer token or HTTP Basic. Test with
curl or your API client using the same auth ElasticFunnels will use.2
Map paths
If your API uses different routes, set
rest_connect_path, rest_make_call_path, rest_hangup_path, rest_transfer_path, and rest_recording_path to match. Defaults assume a small REST surface under the base URL.3
Enter credentials in ElasticFunnels
In Brand Settings → Phone Switch, select Five9 and fill
api_base_url plus either api_key or username and password. Add campaign_name and skill_id if required.4
Align agent extensions
Ensure each agent’s extension in Call Center → Setup → Agents tab matches the identifier your API uses for
agent_extension on make-call.5
Save and verify
Save the brand config. Use connect / health behavior in the product (or a test dial) to confirm reachability and auth.
Middleware proxy pattern
Use this when Five9 is reached via SOAP or proprietary APIs and a small service translates REST into those calls.1
Deploy the proxy
Host a service that implements the REST contract ElasticFunnels uses (see How each feature works). The proxy holds Five9 credentials and tenant configuration server-side.
2
Point ElasticFunnels at the proxy
Set
api_base_url to the proxy’s public HTTPS origin. Configure path overrides only if your proxy uses non-default routes.3
Authenticate ElasticFunnels to the proxy
Prefer a dedicated
api_key (Bearer) scoped to ElasticFunnels. The proxy then uses its own Five9 credentials separately.4
Test end-to-end
Exercise connect, make call, hangup, transfer, and recording URL retrieval against a sandbox or low-risk campaign before production traffic.
How each feature works
All responses are treated as JSON. Success is determined by HTTP status (typically 2xx) plus, when present, an optional booleansuccess field in the response body. Your API should return consistent JSON for errors (message body) and use appropriate status codes.
Connect (connect())
ElasticFunnels issues a request to the configured rest_connect_path (default /) to verify that the base URL is reachable and credentials are valid.
If there is no dedicated connect endpoint, the implementation may fall back to a generic credential or connectivity check against the base URL.
Make call (makeCall())
Method: POSTPath:
rest_make_call_path (default /calls/make)
Typical JSON body fields:
Hangup (hangupCall())
Method: POSTPath:
rest_hangup_path (default /calls/hangup)
Includes call_id identifying the active call to terminate.
Transfer (transferCall())
Method: POSTPath:
rest_transfer_path (default /calls/transfer)
Includes call_id and target_extension (or equivalent routing target your API defines).
Recording URL (getCallRecordingUrl())
Method: POSTPath:
rest_recording_path (default /calls/recording)
Includes call_id. The response should expose whatever field your UI or downstream code expects for the playable or downloadable recording URL (per your middleware contract).