auth_mode selects the mode explicitly. If it is omitted, the integration auto-detects: if account_sid is present, Basic (v3) is used; otherwise Bearer (v4) is used.Prerequisites
Before you configure the phone switch in ElasticFunnels, gather:- Ytel admin or API access to create or copy credentials (JWT for v4, or Account SID + Auth Token for v3)
- Your Ytel API base URL (required in all setups)
- A from number in E.164 format for outbound caller ID
- Agent extensions in ElasticFunnels that match how Ytel identifies agents for routing
- A test destination number for a live dial test after save
Authentication modes
Configuration fields
v4 (Bearer) fields
*Required when using v4; omit
account_sid if you rely on auto-detection so the integration chooses Bearer.
v3 (Basic) fields
Shared REST path placeholders
Paths may include the literal segment{callId}; the integration substitutes the active call identifier when hanging up, transferring, or fetching a recording.
Setup: v4 (JWT Bearer)
1
Obtain a JWT from Ytel
In the Ytel dashboard or API tools, create or copy a v4 API token (JWT) with permissions needed for calls and recordings per Ytel’s documentation.
2
Confirm the API base URL
Use the base URL Ytel provides for the v4 API. This value maps to
api_base_url.3
Configure ElasticFunnels
In the brand’s Phone Switch settings, choose Ytel and set
api_base_url, api_token, and from_number. Optionally set auth_mode to bearer for clarity.4
Save and validate
Save the brand configuration.
connect() checks that credentials are present; it does not perform a live API handshake—run a real agent dial test to confirm end-to-end behavior.Setup: v3 (Basic Auth)
1
Open Ytel API credentials
In the Ytel dashboard, locate Account SID and Auth Token for the v3 API.
2
Map to ElasticFunnels
Set
api_base_url, account_sid, auth_token, and from_number. Set auth_mode to basic if you want to lock behavior to v3.3
Save and test
Save the configuration, then place a test call from an agent with a valid extension and verify hangup, transfer, and recording if used.
How each feature works
Connection check (connect())
Validates that the configured credentials exist for the selected auth_mode (or auto-detected mode). It does not call the Ytel API; use operational tests to confirm connectivity and permissions.
Outbound call (makeCall())
Sends a POST to rest_create_call_path (default /calls) with payload fields including to, from, and agent_extension, using the configured base URL and authentication.
Hangup (hangupCall())
Sends a POST to rest_hangup_path (default /calls/{callId}/hangup) for the active call.
Transfer (transferCall())
Sends a POST to rest_transfer_path (default /calls/{callId}/transfer) with a target (transfer destination per your Ytel setup).
Recording URL (getCallRecordingUrl())
Sends a GET to rest_recording_path (default /calls/{callId}/recording) to retrieve recording location for the call.
Screen pop
Incoming call context uses a webhook flow. The integration performs phone-based customer lookup so agents see matching customer records when calls arrive.Call SID from responses
After create or status responses, the integration resolves the call identifier from the first present field amongsid, call_sid, or id.
Troubleshooting
Custom REST paths are intended for environments where Ytel or a proxy exposes a different route layout. Defaults align with typical
/calls-style resources; adjust only when your integration spec requires it.