4.1 Overview

The Softphone allows an authorized user to make and receive telephone calls directly through a supported web browser.

The Softphone combines:

Browser microphone and audio
Twilio Voice SDK connection
Assigned outbound Phone Number
Destination Phone Number
Call Recording preference
Mute and Hold controls
DTMF keypad tones
Incoming Call alerts
Call Queue information
Contact linking
Post-call Dispositions and Notes

AIUNIFY Call Center provides two synchronized Softphone interfaces:

Standalone Softphone page
+
Global floating Softphone widget

Both use the same underlying browser calling state and Twilio Device connection.

Opening the Softphone

4.2 Standalone Softphone Page

To open the full Softphone page:

  1. Sign in to AIUNIFY Call Center.
  2. Open Communication in the Sidebar.
  3. Select Softphone.
  4. Wait for the voice service to register.
  5. Confirm a green readiness message appears.

The Softphone page is available at:

/softphone

The page heading is:

Softphone

Its description explains that the user can make real-time voice calls from the browser.

4.3 Global Softphone Widget

A floating Softphone button is available throughout the authenticated application.

The widget remains accessible while the user works in sections such as:

Dashboard
Contacts
Campaigns
Analytics
Call History
Phone Numbers

The same widget also remains present on the standalone Softphone page.

4.4 Minimized Widget

When minimized, the widget appears near the lower-right corner.

Its appearance changes according to activity:

Idle:
Round Phone button

Registered and ready:
Green status indicator

Incoming Call:
Blue animated Incoming button

Active Call:
Expanded green button with Call timer

4.5 Expanding the Widget

Select the floating Phone button to open the Softphone panel.

The expanded panel displays:

Calling From
Destination Phone Number
Dial Pad
Recording option
Call button
Device or Call errors
Incoming Call alert
Queue information
Live Call controls

4.6 Minimizing the Widget

Select the Minimize icon in the widget header.

Minimizing the widget does not end an active Call.

The minimized button continues displaying active-Call information.

4.7 Automatic Expansion

The widget automatically expands when:

An Incoming Call arrives
An outbound Call starts Dialing
A Call begins Ringing
A Call becomes Connected

Softphone Access Requirements

4.8 Authentication

The user must be signed in before the browser can obtain a Twilio Voice access token.

Unauthenticated users cannot register a browser calling device.

4.9 KYC Requirement

The standalone Softphone page and assigned-number endpoint can open without a KYC check.

However, the routes that initiate, end, hold, and save a Disposition are protected by the Basic KYC middleware.

Therefore, a Customer may see the Softphone interface but still be unable to place a Call until KYC is Approved.

The effective Customer requirement is:

Authenticated account
+
Approved Basic or Business KYC
+
Call permission
+
Active voice configuration
+
Assigned Phone Number

Administrators and Agents follow the KYC exceptions described in Chapter 2.

4.10 Call Permission

Creating a Call requires:

calls.make

A user can have access to the Softphone page while lacking permission to initiate Calls.

When that occurs, the backend can reject the Call even if the dialer appears ready.

4.11 Voice-Service Configuration

The platform must have an active Twilio configuration containing the credentials needed for browser Voice.

These include:

Twilio Account
API Key
API Key Secret
TwiML Application
Webhook configuration

The browser token is issued for the identity:

user_[User ID]

and is valid for approximately one hour.

The browser attempts to refresh it before expiration.

4.12 Assigned Phone Number

The user must have a Phone Number assigned directly to the signed-in account.

For normal Softphone use, the number must generally be:

Phone Number record:
Status = assigned

or

SIP Trunk Phone Number:
Status = active
Assigned To = softphone

4.13 Agent Number Assignment

An Agent’s Softphone checks numbers assigned to the Agent’s own User ID.

Assigning a number only to the parent Customer does not automatically make it available to every Agent.

Each Agent should confirm the intended number appears under:

Communication
→ My Numbers

4.14 AI Agent Phone Numbers

Phone Numbers already connected to an AI Agent are excluded from the normal human Softphone number list.

This helps prevent one number from being used simultaneously as both:

AI Agent destination
and
Human Softphone caller ID

Browser Readiness

4.15 Supported Browser

Use a current desktop browser with:

JavaScript enabled
Cookies enabled
Microphone access
Audio output
Stable internet connection
WebRTC support

Google Chrome is the safest starting choice for the current browser calling implementation.

4.16 Microphone Permission

The first time the browser attempts to access audio, it can request permission to use the microphone.

Select Allow only when the address bar shows the correct AIUNIFY Call Center domain.

4.17 Microphone Denied

When microphone access is denied, the Softphone can report:

Microphone access denied or unavailable.
Please check your browser settings and allow microphone access.

or:

Please allow microphone access in your browser settings.

4.18 Default Audio Devices

The current Softphone interface does not provide a visible control for selecting:

Microphone
Speaker
Headset
Audio output

It uses the browser or operating system’s selected default devices.

Change those devices through the browser or computer settings before placing production Calls.

4.19 Headset Recommendation

A headset reduces:

Echo
Background noise
Feedback
Caller privacy concerns

Test both microphone and speaker before an Agent begins calling.

4.20 Closing or Reloading the Page

Normal navigation inside the AIUNIFY application preserves the global Twilio Device and active Softphone state.

However, a full browser refresh, closing the tab, or leaving the website triggers Device disconnection and unregisters the browser.

During an active Call:

In-app navigation:
Designed to preserve the Call

Full page refresh or tab closure:
Can disconnect the Call

Device Registration

4.21 Device States

The Softphone browser Device can have these states:

offline
registering
registered
error

4.22 Offline

Offline means the browser is not currently connected to the Twilio Voice service.

Possible causes include:

Twilio not configured
User not authenticated
Network unavailable
Device intentionally disconnected
Initialization has not started

4.23 Registering

While connecting, the interface can display:

Connecting to voice service...

or:

Connecting to calling service

Wait before selecting Call.

4.24 Registered

Registered means the browser has obtained a Voice token and successfully registered the Twilio Device.

The interface displays:

Dialer ready

and a green indicator.

4.25 Error

Error means Device initialization or the provider connection failed.

The interface displays the returned error where available.

4.26 Connection Errors

The Softphone translates certain Twilio errors into messages such as:

Connection error.
Please check your internet connection and try again.

and:

Cannot make call at this time.
Please try again later.

4.27 Device Not Ready

Attempting to call before registration can produce:

Device not ready.
Please wait for registration.

4.28 Configuration Display Limitation

The page’s initial configuration flag checks whether a Twilio configuration record exists.

The actual Device registration process requires an active usable configuration.

Therefore:

No configuration warning

does not by itself prove that the service is operational.

The authoritative readiness indicator is:

Device State = Registered
+
Dialer Ready

Standalone Softphone Layout

4.29 Dialer Card

The left Card contains:

Calling From
Configuration alerts
Incoming Call alert
Device Status
Call Status
Destination Phone Number
Contact Quick Edit
Dial Pad
Enable Recording
Call or live controls

4.30 Call Information Card

The right Card displays:

Status
Duration
From
To
Muted
On Hold
Recording
Device

Use this Card to verify that the correct Phone Number and Call state are being used.

Selecting the Outbound Number

4.31 Calling From

The selected caller ID appears under:

Calling From

Select it to open the number menu.

4.32 Number Menu

The menu can display:

Formatted Phone Number
Friendly Name
Number source
Selected indicator
Refresh Numbers

4.33 Number Source Badges

A source Badge identifies:

Phone:
Normal direct Phone Number record

SIP:
Number identified as SIP Trunk sourced

4.34 Saved Selection

The selected number is stored in the browser under:

selected_phone_number

When the Softphone reloads, it attempts to restore that selection.

4.35 First Number Selection

When no saved number exists, the first available assigned Phone Number is automatically selected.

4.36 Removed Saved Number

When the previously selected number is no longer assigned, the Softphone:

Selects the first available number
or
Clears the selection if no numbers remain

4.37 Refresh Numbers

Select:

Refresh Numbers

when a number was recently assigned but does not yet appear.

4.38 No Numbers Assigned

When no usable number is found, the interface displays:

No phone numbers assigned

and disables the Call button.

4.39 Number Loading Error

When the number request fails, the interface displays:

Failed to load your phone numbers

Use the Refresh icon after confirming the session and network are active.

Current Caller-ID Selection Limitation

4.40 Separate Number State

In the reviewed source, the Number Switcher and the main Softphone context each create their own instance of the assigned-number hook.

The visible Number Switcher updates its own selected number and browser storage.

The Call action uses the separate selection stored in the Softphone context.

This means the displayed caller ID can change before the actual Call action has synchronized to it.

4.41 Safe Caller-ID Procedure

After changing Calling From:

  1. Select the intended number.
  2. Navigate to another internal page and return, or refresh before starting production.
  3. Reopen the Softphone.
  4. Confirm the number remains selected.
  5. Place one internal test Call.
  6. Confirm the Call Information From value.
  7. Confirm the receiving telephone displays the intended caller ID.

Do not assume that the visible menu selection alone proves the Call will use that number.

SIP Numbers in the Browser Softphone

4.42 SIP Number Validation

The Call-creation backend accepts a number source of:

twilio_direct
sip_trunk

and verifies that the selected number belongs to the signed-in user.

4.43 Browser Transport

Despite the SIP source designation, the current browser Softphone uses:

Twilio Voice SDK
+
Twilio TwiML Application
+
Twilio Dial Number

for the actual browser Call path.

The selected SIP number is passed primarily as the outbound caller ID in that process.

It is not shown using a separate browser-to-SIP WebRTC transport in this Call path.

4.44 SIP Caller-ID Risk

A SIP-sourced number can fail as a Twilio caller ID when it is not authorized or verified within the connected Twilio account.

Complete an internal test before using a SIP-labeled number for browser Calls.

4.45 SIP Number-List Mismatch

The page readiness checks both:

PhoneNumber
and
TrunkPhoneNumber

records.

The Softphone’s normal number endpoint retrieves from the phone_numbers table.

A SIP Trunk number stored only in trunk_phone_numbers can therefore satisfy the page’s assignment check but fail to appear in the Number Switcher unless it is also synchronized into the normal Phone Number system.

Entering the Destination Number

4.46 Phone Number Field

Enter the person’s number under:

Phone Number

The field includes:

Country flag
Country selector
Country calling code
Telephone-number input

4.47 Default Country

The default country is:

United States

A number entered without + is interpreted using that default unless another country is selected.

4.48 Recommended Format

Use E.164 format:

+[country code][telephone number]

Example:

+13135550198

4.49 Non-U.S. Calls

For an international number, select the proper country or enter the complete + country code.

Do not enter an international number as an unqualified local number.

The outbound TwiML path assumes +1 when a destination lacks a leading plus sign.

4.50 Minimum Length

The Call button requires at least:

10 numeric digits

after nonnumeric characters are removed.

A ten-digit check does not prove that the destination is real or callable.

4.51 Invalid Number Error

The Softphone can display:

Please enter a valid phone number
(at least 10 digits)

4.52 Destination Locked During a Call

The destination field is disabled while the Call state is:

dialing
ringing
connected

End the current Call before changing the destination.

Dial Pad

4.53 Dial Pad Digits

The Dial Pad contains:

1 2 3
4 5 6
7 8 9
* 0 #

4.54 Before the Call

Before a Call connects, selecting a digit appends it to the destination Phone Number.

4.55 During a Connected Call

During a connected Call, Dial Pad digits are sent as DTMF tones.

DTMF can be used for:

Telephone menus
Extensions
PIN prompts
Automated response systems

4.56 DTMF Availability Difference

The standalone Softphone page keeps the Dial Pad visible during active Calls, allowing DTMF tones.

The global expanded widget hides the Dialer interface during a Call, including its Dial Pad.

Therefore:

Standalone page:
DTMF available during connected Call

Global widget:
No visible in-call Dial Pad in current build

Recording

4.57 Enable Recording

Before dialing, the user can select:

Enable call recording

The frontend’s default value is enabled when the Softphone context first loads.

4.58 Select Before Calling

The Recording option becomes unavailable after the Call starts.

Choose the correct setting before selecting Call.

4.59 Outbound Recording Start

When enabled, the outbound TwiML uses:

record-from-answer

The provider is instructed to begin recording when the external leg answers.

4.60 Recording Callback

When the recording is completed, Twilio sends recording information back to the Call record through the configured Webhook.

The recording does not necessarily appear immediately after hangup.

4.61 Automatic Transcription

The same outbound browser-Call path also requests transcription when Recording is enabled.

Therefore, enabling Recording can result in:

Audio Recording
+
Automatic Transcript request

4.62 Recording Indicator

During a connected outbound Call, the standalone page displays:

Recording Active

with an animated red indicator when Recording was enabled.

4.63 Recording Status Before Connection

Before the Call connects, the Call Information Card can display:

Enabled

This means recording has been requested for the upcoming Call.

It does not mean audio is already being recorded.

4.64 Disabling Recording

Turning the option off affects the next outbound Softphone Call.

It does not remove historical recordings.

4.65 Incoming Call Recording Limitation

The reviewed inbound Softphone TwiML connects the caller to the browser without adding the outbound record-from-answer recording attributes.

The Softphone Recording checkbox is not applied to an already incoming Call.

Therefore, normal inbound browser Calls are not confirmed as recorded through this current handler.

4.66 Recording Compliance

Before recording, confirm:

Legal authority
Required consent
Required disclosure
Permitted retention
Authorized access
Deletion requirements

The technical checkbox does not establish legal permission.

Contact-Aware Calling

4.67 Click-to-Call

Calls can be prepared from supported Contact interfaces.

Examples include:

Contacts list
Contact Details
Contact Calling Session
Campaign Queue

Selecting the Contact’s Call action:

Stores the Contact ID
Stores the Contact Name
Normalizes the Phone Number
Pre-fills the Softphone
Expands the widget

The user must still select Call.

4.68 Contact Number Normalization

Click-to-call currently normalizes an unqualified Contact number using:

Default country: United States

International Contacts should store the complete E.164 number to avoid an incorrect +1 interpretation.

4.69 Contact Link on the Call Record

When the Call begins through a Contact-aware action, the Call request can include:

contact_id
campaign_contact_id

This links the Call to the master Contact and, where applicable, its Campaign participation.

4.70 Contact Name in the Widget

During a Contact-linked Call, the expanded widget can show the active Contact Name in its header.

Quick Editing a Contact

4.71 Edit Contact Button

When the Softphone has an active Contact ID, it displays:

Edit Contact

4.72 Editable Fields

The Quick Edit dialog contains:

First Name
Last Name
Phone Number
Notes

4.73 Saving a Quick Edit

After selecting Save:

The Contact record is updated
The Phone Number is normalized
The Softphone destination is updated
A Contact updated confirmation appears

4.74 Phone Number Required

Quick Edit will not save without a usable Phone Number.

4.75 Immediate Changes

Quick Edit saves directly to the Contact record.

It is not a temporary Softphone-only change.

Review the information carefully before saving.

Starting an Outbound Call

4.76 Pre-Call Checklist

Before selecting Call, confirm:

Device registered
Dialer Ready displayed
Correct caller ID
Correct destination
Correct country code
Recording preference correct
Contact record correct
Permission to call
Credit balance reviewed

4.77 Selecting Call

When Call is selected, AIUNIFY Call Center first creates a Call record containing:

User
Contact where applicable
Campaign Contact where applicable
Call Type = manual
Direction = outbound
From Number
To Number
Status = initiated
Recording preference
Start time

The browser then asks Twilio Voice SDK to connect using that Call record’s ID.

4.78 Assigned-Number Verification

The backend verifies that the selected From Number belongs to the signed-in account.

When it does not, the system returns:

Phone number is not assigned to your account.

4.79 Missing Caller ID

When no outbound number is available:

No phone number available.
Please assign a phone number first.

4.80 Duplicate Call Prevention

The Softphone refuses to start another outbound Call unless the current Call state is:

idle

Call States

4.81 Ready to Call

Internal state:

idle

Visible label:

Ready to call

4.82 Dialing

Internal state:

dialing

Visible label:

Dialing...

4.83 Ringing

Internal state:

ringing

Visible label:

Ringing...

4.84 Connected

Internal state:

connected

Visible label:

Connected

The local Call timer begins after the Twilio browser Call emits its accepted event.

4.85 Call Ended

Internal state:

ended

Visible label:

Call ended

The interface keeps this state briefly and then returns to Idle.

4.86 Call Failed

Internal state:

error

Visible label:

Call failed

The interface returns to Idle after a short delay.

4.87 Local State Versus Provider Status

The Softphone state reflects the browser SDK.

The stored Call record is updated separately through Twilio Webhooks.

For reporting and billing, the authoritative values are the final:

Call History status
Provider status
Stored duration
Stored price

not only the temporary browser display.

Call Timer

4.88 Standalone Timer

The standalone Softphone displays duration in:

MM:SS

Example:

03:18

4.89 Timer Start

The timer starts when the browser Call emits its accepted event.

This can represent the browser leg becoming active and should not be treated automatically as the exact billable external conversation duration.

4.90 Provider Duration

The final Call History duration is populated through provider status data.

Use that stored value for reporting.

4.91 Global Widget Timer Limitation

The expanded global widget currently passes the raw numeric seconds value into a component designed for a formatted duration string.

It can therefore display:

65

rather than:

01:05

The minimized active-Call button formats its timer correctly as MM:SS.

Live Call Controls

4.92 Available Controls

During a Call, the controls include:

Mute or Unmute
Hold or Resume
End Call

Mute and Hold are enabled only when the state is Connected.

End Call can be available during Ringing or Connected states.

Mute

4.93 Muting the Microphone

Select the Microphone button to mute the local browser microphone.

The remote participant should no longer hear the Agent.

4.94 Unmuting

Select the button again to restore the microphone.

4.95 Client-Side Control

Mute is performed through the Twilio browser SDK.

It does not require a backend request.

4.96 Mute Indicator

The Call Information Card changes:

Muted:
No

to:

Muted:
Yes

Hold

4.97 Placing a Call on Hold

Select Hold after the Call is Connected.

The interface immediately changes its Hold state while the backend request is processed.

4.98 Remote Hold Music

The backend finds the external PSTN Call leg and redirects it to Twilio hold music.

4.99 Resuming

Select Resume to redirect the external Call leg back to the browser identity.

4.100 Hold Requirements

Hold requires:

Connected Call
Stored Twilio Call SID
Active PSTN child Call leg
Active Twilio configuration
Authorization over the Call record

4.101 Hold Before Connection

When the external leg has not connected, the backend can return:

No active PSTN call leg found.
The call may not be connected yet.

4.102 Hold Failure Reversion

The interface initially changes the Hold indicator.

When the backend request fails, the Softphone reverts the visual Hold state.

4.103 Hold Is Not Mute

Mute:
Stops the Agent’s microphone

Hold:
Redirects the external participant to hold music

Current Standalone Control Wiring Limitation

4.104 Mute and Hold on the Full Page

The shared Call Controls component expects properties named:

onMute
onHold

The standalone Softphone page currently supplies:

onMuteToggle
onHoldToggle

Therefore, the standalone page’s Mute and Hold buttons are not correctly wired in the reviewed source.

4.105 Current Workaround

During a connected Call, use the global floating Softphone widget for Mute and Hold.

The widget supplies the correct control properties.

The standalone page remains useful for:

Dialing
Viewing Call Information
DTMF tones
Ending the Call

End Call

4.106 Ending a Call

Select the red Phone button.

The browser attempts to:

Update the stored Call through the backend
Disconnect the Twilio Call
Stop the local timer
Clear the destination number

4.107 User-Ended Status

The backend instructs Twilio to complete the active provider Call, but the local Call record is then updated to:

canceled

Therefore, a manually ended Call can appear as Canceled rather than Completed in Call History.

4.108 Backend End Failure

Even when the backend Call-status update fails, the browser still attempts to disconnect the active Call.

Review Call History afterward to verify the final stored state.

4.109 Call Not in Progress

The backend can return:

Call is not in progress and cannot be ended.

when the stored status is no longer:

initiated
ringing
in-progress

Incoming Calls

4.110 How an Incoming Call Reaches the Browser

When someone calls an assigned Phone Number, the inbound handler:

Identifies the Phone Number owner
Creates or finds the inbound Call record
Builds the browser identity user_[User ID]
Rings the registered browser Device

4.111 Browser Must Be Registered

An Incoming Call can reach the browser only when:

The user is signed in
The Twilio Device is registered
The browser tab remains open
The internet connection remains active
The correct identity token is active

4.112 Incoming Call Alert

The alert displays:

Incoming Call
Caller telephone number
Accept
Reject

When the caller number is unavailable, it displays:

Unknown

4.113 No Contact Lookup in Alert

The current Incoming Call alert displays the caller’s raw From value.

It does not show a confirmed Contact match or Contact Name.

4.114 Accepting a Call

Select Accept.

The interface displays:

Connecting

and accepts the incoming Twilio browser Call.

4.115 Rejecting a Call

Select Reject.

The browser rejects the incoming Call and clears the alert.

The caller then follows the remaining inbound TwiML behavior.

4.116 Inbound Ring Timeout

The inbound routing provides approximately:

30 seconds

for the browser identity to answer.

When no one answers, the caller hears a message stating that the person is unavailable, followed by hangup.

4.117 Unrecognized Destination

When AIUNIFY cannot determine which User owns the called number, the caller hears:

Sorry, this number is not configured to receive calls.
Goodbye.

The Call is then terminated.

4.118 Inbound Call Record

A normal inbound browser Call is stored with:

Call Type = manual
Direction = inbound
From Number = caller
To Number = assigned number
Status = ringing
Start time
Twilio Call SID

4.119 Incoming While Busy

The Twilio browser Device is configured with:

allowIncomingWhileBusy = false

The browser does not provide a traditional multi-line Call Waiting interface.

A second caller may be routed to the Call Queue when the server determines the owner is busy and Queueing is enabled.

Call Queue

4.120 Queue Purpose

The Call Queue can hold an inbound caller while the intended user is busy.

The process is:

Inbound caller reaches assigned number
System determines user is busy
Queue enabled?
Queue has capacity?
Caller hears greeting and hold music
Softphone displays waiting caller
Caller is connected after dequeue

4.121 Default Queue Values

The installed migration defines defaults of:

Queue Enabled: Yes
Maximum Queue Size: 5
Maximum Wait: 300 seconds
Greeting: Default system greeting

4.122 Allowed Queue Settings

The backend accepts:

Maximum Queue Size:
1 through 20 callers

Maximum Wait:
30 through 600 seconds

Custom Greeting:
Up to 500 characters

4.123 Queue Settings Interface Limitation

The current source contains a Queue Settings API route but no normal visible Customer page for editing these settings.

Changing Queue configuration currently requires an approved administrative or development workflow.

4.124 Waiting Caller Greeting

The default greeting states that the caller is being placed in a Queue and that an Agent will be available shortly.

An account-specific greeting can replace it when configured.

4.125 Queue Position

While waiting, Twilio can tell the caller:

You are number [position] in the queue.
Please hold.

It then plays hold music.

4.126 Queue Full

When the Queue has reached its maximum size, the caller hears:

All lines are currently busy.
Please try again later.
Goodbye.

The Call ends.

4.127 Queue Indicator

When callers are waiting, the expanded Softphone widget displays:

Number of callers waiting
Caller telephone numbers
Approximate wait times
Connect Next action

4.128 Queue Polling

While a user is in a Call, the browser checks Queue status approximately every:

5 seconds

It performs one additional check after the Call ends.

4.129 Connect Next

When the current user is not in a Call, the Queue Indicator displays a button to connect the next waiting caller.

The oldest waiting caller is selected first.

4.130 Automatic Dequeue

When a connected Call changes to Ended and callers are waiting, the Softphone waits approximately two seconds and automatically requests the next caller.

4.131 Dequeued Call

The system calls the browser identity and then joins it to the waiting Twilio Queue.

The Softphone receives this as an Incoming Call that must be accepted.

Current Queue Limitations

4.132 Busy Detection

The current Queue service considers the owner busy only when it finds a recent:

Inbound Call
+
Status = ringing or in-progress

It does not include normal outbound Calls in this busy query.

A second inbound caller may therefore fail to enter the Queue while the user is busy on an outbound Call.

4.133 Agent Queue Ownership

For Queue operations, an Agent is mapped to the parent Customer’s Queue owner ID.

When an Agent requests Connect Next, the current dequeue process calls:

client:user_[Parent Customer ID]

rather than the Agent’s own browser identity.

The dequeued caller can therefore ring the parent Customer’s Softphone instead of the Agent who selected the action.

4.134 Credential Difference

Normal browser registration uses the global Twilio configuration.

The Queue dequeue service looks for the Queue owner’s active Twilio credential.

A working global Softphone does not guarantee that Queue dequeue has the additional credential it expects.

4.135 Silent Queue Errors

The browser treats Queue status as noncritical.

Queue-request failures are generally logged in the browser console and may not produce a prominent user-facing error.

When Connect Next does nothing, report:

Account
Waiting caller number
Approximate time
Current Call state
Queue count

to the Administrator.

Post-Call Disposition

4.136 When the Dialog Appears

The Post-Call dialog appears only when:

The Call was linked to a Contact
+
A Call record ID exists
+
The Call reaches Ended

It appears approximately 1.2 seconds after the Call ends.

4.137 Typed Manual Calls

A number typed directly into the Softphone without selecting a Contact normally has no active Contact ID.

The Post-Call Disposition dialog will not automatically appear for that Call.

4.138 Dialog Title

The dialog is presented as:

Post-Call Notes

It can include the linked Contact’s Name.

4.139 Dispositions

The available results are:

Interested
Not Interested
Callback
Wrong Number
Voicemail
No Answer
Do Not Call

4.140 Call Notes

The user can enter up to:

5,000 characters

of Call Notes.

4.141 Callback Date

Selecting:

Callback

reveals a date-and-time field.

The backend stores the selected time in:

callback_at

4.142 Callback Reminder Limitation

The Disposition route stores the callback date.

It does not itself create a confirmed:

Calendar event
Notification
Scheduled Call
Sequence step
Reminder

Users should maintain the organization’s approved callback process.

4.143 Saving

To save:

  1. Select a Disposition.
  2. Enter Notes where needed.
  3. Enter Callback date where applicable.
  4. Select Save.

4.144 Skipping

Select Skip to close the dialog without saving a Disposition or Notes.

4.145 Contact Metrics

When a linked Contact exists, saving a Disposition updates:

Last Contacted At
Total Calls

If Call Notes were entered, the Notes are appended to the Contact record with the date and Disposition.

4.146 Do Not Call Limitation

Selecting the Do Not Call Disposition stores that result on the Call.

The save route does not change the master Contact’s Status to DNC.

To prevent future calling, separately update the Contact’s calling Status according to the organization’s DNC procedure.

Call Disposition = Do Not Call
does not automatically mean
Contact Status = DNC

4.147 Save Failure Visibility

When saving a Post-Call Disposition fails, the current dialog logs the error but does not display a clear user-facing error notification.

Confirm the result in Call History or the Contact record before assuming it saved.

Credits and Call Charges

4.148 Call Billing

Completed Calls with a positive duration can create a Credit deduction based on:

Destination country
Call duration
Pricing tier
Configured rate
Profit markup
Provider cost where available

4.149 When Billing Occurs

The current status processor attempts the Credit deduction after the Call is marked Completed and a duration is available.

4.150 No Pre-Call Credit Reservation

The normal manual Softphone Call-creation action does not perform a confirmed pre-Call affordability check.

A Call can begin before the final Credit charge is calculated.

4.151 Insufficient Credits After Completion

When the completed Call cost exceeds the available balance, the current billing action logs the insufficient-Credit condition and returns without completing the deduction.

The Call has already occurred.

Administrators should monitor for unbilled Calls and reconcile them through Credit Management.

4.152 Refreshing the Balance

The Header Credit Balance does not update continuously.

After a Call:

  1. Open Account Statement.
  2. Refresh the page.
  3. Confirm the debit.
  4. Confirm the remaining balance.

Features Not Present in the Live Softphone

4.153 No Call Transfer Control

The human Softphone does not provide a visible live button for transferring the current Call to another Agent or external number.

4.154 No Conference Control

There is no visible live Conference button.

4.155 No Add Participant

The current controls do not include adding another participant to an active Call.

4.156 No Speaker or Microphone Selector

Audio-device selection must be handled through browser or operating-system settings.

4.157 No Call Park

There is no visible Call Park or retrieval control.

4.158 No Multiple Active Calls

The Softphone blocks starting a second Call while the current state is active, and incoming-while-busy is disabled at the Twilio Device level.

Troubleshooting Device Registration

4.159 Device Remains Offline

Check:

User signed in
Twilio globally configured
TwiML Application configured
API Key configured
Internet connection
Browser WebRTC support

4.160 Device Remains Registering

Wait briefly, then:

  1. Refresh once.
  2. Confirm the browser is not blocking scripts.
  3. Check microphone permission.
  4. Confirm the account is still authenticated.
  5. Contact Support when it continues.

4.161 Device Error After Login

Possible causes include:

Inactive Twilio configuration
Missing API Key
Missing TwiML Application SID
Invalid API secret
Provider outage
Network restriction

4.162 Dialer Says Configured but Device Fails

The page checks whether a configuration row exists, while token generation requires an active usable configuration.

Report the Device error rather than relying on the initial configuration status.

Troubleshooting Phone Numbers

4.163 Number Does Not Appear

Check:

Assigned to correct User
Status = assigned
Not assigned to AI Agent
Correct account signed in
Number list refreshed

4.164 Agent Sees Customer Number but Not in Softphone

The Phone Number must be assigned directly to the Agent account for the Agent Softphone.

4.165 SIP Number Does Not Appear

Confirm that the SIP number has been synchronized into the normal Phone Number records used by the Softphone endpoint.

4.166 Wrong Caller ID Used

This can result from the current separate Number Switcher and Softphone-context states.

Select the number, reload or navigate, and make an internal test Call.

Troubleshooting Outbound Calls

4.167 Call Button Disabled

Confirm:

Device registered
Phone Number assigned
Caller ID selected
Destination contains at least 10 digits
No Call currently active

4.168 KYC Error

The Softphone page can load without KYC, but Call initiation requires Basic KYC for Customers.

Complete verification and retry.

4.169 Permission Error

Confirm the role has:

calls.make

4.170 Number Not Assigned Error

The selected From Number does not pass the backend ownership check.

Refresh the number list and confirm assignment.

4.171 Call ID Missing

A TwiML configuration mismatch can produce a spoken or logged message that the Call ID is missing.

The TwiML Application’s Voice URL must point to the correct manual-Call handler.

4.172 Destination Number Missing

Confirm the destination was entered and that the browser request completed before the Twilio Call began.

4.173 International Call Goes to Wrong Country

Store and enter the full + country code.

Numbers without a leading plus can be interpreted as U.S. numbers.

4.174 SIP-Labeled Caller ID Fails

The browser Softphone still uses the Twilio Voice transport.

Confirm the number is accepted as a caller ID by the global Twilio account.

Troubleshooting Active Calls

4.175 Caller Cannot Hear the Agent

Check:

Microphone permission
Correct microphone selected in operating system
Mute status
Headset connection
Browser audio indicator

4.176 Agent Cannot Hear Caller

Check:

Speaker volume
Correct audio output
Headset
Browser tab not muted
Operating-system sound mixer

4.177 Mute Does Nothing on Standalone Page

Use the global floating Softphone widget.

The standalone page currently passes incorrect Mute and Hold property names.

4.178 Hold Does Nothing

Confirm:

Using global widget
Call State = Connected
PSTN leg exists
Twilio configuration active

4.179 Hold Reverts Immediately

The backend failed to locate or redirect the external Call leg.

Wait until Connected and retry once.

4.180 DTMF Not Available in Widget

Open the standalone Softphone page before or during the Call.

The global widget hides the Dial Pad while a Call is active.

4.181 Call Timer Differs from History

The browser timer and provider duration are calculated through separate event paths.

Use Call History for the final stored duration.

Troubleshooting Incoming Calls

4.182 Incoming Calls Do Not Ring

Confirm:

Browser open
User signed in
Device registered
Correct number owner
Inbound webhook configured
TwiML Application configured
Internet connection stable

4.183 Caller Hears Number Not Configured

The destination number could not be matched to an assigned User.

Review Phone Number ownership and inbound routing.

4.184 Caller Hears Person Unavailable

The browser identity did not answer within the inbound Dial timeout.

Confirm the user’s browser was registered and the alert was accepted.

4.185 No Incoming Call Recording

The current inbound Softphone route does not apply the outbound recording option.

This is expected under the reviewed implementation.

4.186 Second Caller Does Not Enter Queue

The current busy check detects only certain recent inbound Call states.

An outbound active Call may not trigger Queue routing.

Troubleshooting Post-Call Notes

4.187 Dialog Does Not Appear

The Call must have been started from a linked Contact action.

A manually typed number is not enough.

4.188 Disposition Will Not Save

Confirm:

A Disposition is selected
Call ID exists
Session remains active
User can execute the Call
Notes are under 5,000 characters
Callback date is valid

4.189 Callback Was Saved but No Reminder Appears

The current route stores the callback date but does not confirm a reminder or calendar workflow.

4.190 Do Not Call Contact Appears in Future Campaign

The Disposition does not automatically set the master Contact to DNC.

Update the Contact Status separately.

Safe Calling Workflow

4.191 Initial Test

Use this sequence:

Confirm Device Registered
Select caller ID
Reload and confirm selection
Enter internal test number
Choose Recording setting
Place Call
Test Mute, Hold, and DTMF
End Call
Save Disposition
Review Call History and Credits

4.192 Before Every Calling Session

Confirm:

Correct account
Correct assigned number
Correct headset
Correct microphone
Correct Contact List
Correct Time Zone
Approved calling purpose
Sufficient Credits

4.193 During a Call

Monitor:

Call Status
Duration
Mute state
Hold state
Recording state
Correct Contact
Queue indicator

4.194 After a Call

Complete:

Disposition
Call Notes
Callback date where needed
DNC Status where required
Call History review
Credit review

Softphone Readiness Checklist

4.195 Account

Signed in
Correct role
KYC approved where required
calls.make permission assigned

4.196 Voice Service

Twilio active
TwiML Application active
Token generated
Device registered
No Device error

4.197 Number

Number assigned to signed-in User
Number not reserved for AI Agent
Correct source
Caller ID tested

4.198 Browser

Microphone allowed
Speaker working
Headset connected
Stable network
No full refresh during Calls

4.199 Destination

Correct person
Correct country
E.164 format
Calling permission confirmed
DNC status reviewed

4.200 Recording

Recording approved
Consent requirements satisfied
Checkbox set before Call
Retention policy understood

Incoming Call Checklist

4.201 Before Receiving Calls

Browser open
Device registered
Assigned number configured for inbound Voice
Correct User owns number
Queue behavior understood
Audio tested

4.202 When a Call Arrives

Review caller number
Accept or Reject promptly
Confirm Connected status
Verify audio
Record Notes after Call

Queue Checklist

4.203 Queue Configuration

Queue intentionally enabled
Maximum size approved
Maximum wait approved
Greeting approved
Owner credential active

4.204 Queue Operation

Waiting count visible
Caller wait time reviewed
Current Call ended
Connect Next available
Incoming dequeued Call accepted

Post-Call Checklist

4.205 Disposition

Correct outcome selected
Notes entered
Callback time entered
DNC updated separately
Save confirmed

Current-Build Limitations

4.206 Confirmed Limitations

The reviewed Softphone implementation currently includes these important limitations:

Caller-ID selection can display before actual context synchronization

Standalone page Mute and Hold controls use mismatched properties

Global expanded widget timer can display raw seconds

Global widget hides DTMF Dial Pad during active Calls

SIP-labeled browser Calls still use Twilio Voice transport

SIP assignment readiness and number listing use different data sources

Normal inbound Softphone Calls are not confirmed as recorded

Queue busy detection does not include normal outbound Calls

Agent dequeue can target the parent Customer browser identity

Queue dequeue expects an account-level Twilio credential

Do Not Call Disposition does not set Contact Status to DNC

Callback date does not create a confirmed reminder

Manual Call initiation does not reserve Credits before calling

Manually ended Calls are stored as Canceled

Chapter Completion

At the end of this chapter, the user should understand how to open the standalone Softphone and global floating widget, recognize the Device states, grant microphone access, verify Dialer readiness, select an assigned caller ID, enter an E.164 destination, configure outbound Recording, and start a browser Call.

The user should understand the Call states:

Ready to Call
Dialing
Ringing
Connected
Call Ended
Call Failed

and know how to use Mute, Hold, Resume, DTMF tones, and End Call.

The user should understand that the standalone and floating interfaces share the same Device and active Call, allowing normal internal page navigation without ending the conversation. A full browser reload or tab closure can disconnect the Device.

The user should understand how inbound Calls are routed to the browser identity, how to Accept or Reject them, why the browser must remain registered, and why an unanswered inbound Call is terminated after the routing timeout.

The user should understand the Call Queue workflow, including waiting callers, Queue size, wait time, Connect Next, and automatic dequeue. The user should also recognize the current limitations involving outbound busy detection, Agent queue ownership, and credential dependencies.

The user should understand how Contact-aware calling links a Call to a Contact, enables Quick Edit, and displays the Post-Call Disposition dialog. The user should know that selecting Do Not Call on the Call does not automatically set the master Contact’s DNC Status.

Most importantly, the user should follow this safe workflow:

Register Device
Confirm caller ID
Confirm destination
Select Recording preference
Call an internal test number
Verify audio and controls
End Call
Save Disposition
Review Call History and Credits


Write Your Comment