Skip to content

NethVoice: Improve Internal Call Display Format and Device Context Visibility on the Phone Island #7965

Open

Description

@andrea-marchionni

Description:
Currently, the way internal calls are displayed can lead to confusion due to inconsistent formatting and lack of contextual information about the device used. This feature request proposes improvements to enhance clarity and usability.

Requested Improvements:

  1. Consistent Display Format for Internal Calls

    • When an internal call is shown, it should always follow the same standardized format as the main extension.
    • This consistency will reduce ambiguity and make it easier for users to quickly understand call details.
  2. Device Context Visibility for Internal Interactions

    • When a user (e.g., Giuseppe) responds or initiates contact internally, it would be helpful to display the device used (e.g., CTI, app, Netlink, phone).

    • This information could be presented in one of the following ways:

      • instead of the extension with the extension in the tooltip
      • Via a small device icon displayed alongside the extension

Rationale:

  • Knowing the device used provides useful context for understanding the interaction flow.
  • Standardizing the display format helps avoid confusion and improves overall user experience.

Expected Outcome:

  • Clearer, more consistent visualization of internal calls
  • Better contextual awareness through device information
  • Improved usability without adding unnecessary visual noise

Activity

  1. added
    nethvoiceBug or features releted to the NethVoice project
    nethvoice-ctiThe issue is related to NethLink (NethVoice Web client)
    on Apr 16, 2026
  2. moved this from Todo to In Progress in NethVoiceon Aug 19, 2026
  3. added theissue type on Aug 21, 2026
  4. AmaLuci commented on Aug 21, 2026

    @AmaLuci

    Testing notes on current behavior

    Tested internal calls (between two PBX extensions) and external calls (mobile number, saved contact).

    Internal calls

    • Ringing: name and extension are both visible
    • In progress: name is visible, but the extension disappears from the display

    External calls

    • Ringing and in progress: only the number is shown, in both lines
    • Same behavior even when the number matches a saved contact (e.g. contact "Jack Black" saved with number 333 123 4567 still shows only "333 123 4567", never the contact name
    • Placeholder icon: a directional arrow is used instead of an avatar when no photo is available, which reads differently from the avatar used for internal calls

    Proposed direction

    • Name: always show the resolved name (internal extension or external contact) when available, in both ringing and in-progress states
    • Number/extension: always keep it accessible, including during the call (fixes the current disappearance for internal calls), without permanently occupying space in the compact view (see meatball/copy behavior below)
    • Avatar: use a consistent placeholder instead of the directional arrow for calls without a photo
    • Device context: show a small device icon next to the extension only when the other party is an internal user, with the device type in the tooltip

    Device type

    • Device is known from the start of ringing only for incoming internal calls
    • Device icon set (4): headset (Web phone / NethVoice CTI), desktop (Desktop phone / NethLink), office-phone (Physical phone), mobile-screen (Mobile app)
    • Tooltip: device type + extension together (e.g. "Physical phone 109").

    Phone number visibility

    • An "ellipsis" icon appears next to the timer only once the number/extension is no longer visible on screen
    • Clicking the icon opens a popover with the full number/extension

    Mockups ready in Figma here

  5. moved this from In Progress to Testing in NethVoiceon Aug 21, 2026
  6. andrea-marchionni commented on Aug 31, 2026

    @andrea-marchionni
    Author

    Ok for me

  7. removed their assignment
    on Aug 31, 2026
  8. moved this from Testing to In Progress in NethVoiceon Sep 1, 2026
  9. tonyco97 commented on Oct 15, 2026

    @tonyco97

    Test

    PR: nethesis/phone-island#292

    Setup: user A (web phone as default device), operator B with physical phone, Web phone, NethLink and mobile app, operator C with a profile picture, a phonebook contact visible to A, an external number not in the phonebook, a queue. Repeat in light and dark theme, IT and EN.

    Test Case 1 - Incoming internal call

    • B calls A from the physical phone: ringing shows B's name and office-phone icon + extension; tooltip "Physical phone: "
    • Same from Web phone (headset icon, "Web phone: "), NethLink (desktop icon, "Desktop phone: ") and mobile app (mobile icon, "Mobile app: ")
    • A answers: device icon stays, extension is replaced by the timer, ellipsis appears next to the timer

    Test Case 2 - Outgoing internal call

    • A calls B while all B devices ring: name + extension, no device icon
    • B answers from each device in turn: the icon of the device that actually answered appears together with the timer and the ellipsis

    Test Case 3 - Outgoing call to a phonebook contact

    • Ringing shows the contact name and the number
    • In progress shows name / timer + ellipsis, no device icon, generic user avatar

    Test Case 4 - Outgoing call to an unknown number

    • Ringing shows number / "Calling..."
    • In progress shows number / timer, no ellipsis

    Test Case 5 - Incoming external call

    • Phonebook contact calling: name / number while ringing, name / timer + ellipsis in progress
    • Unknown number calling: number / "Incoming call" while ringing, number / timer without ellipsis in progress
    • Number stored with a different formatting (e.g. spaces) is still resolved to the contact name

    Test Case 6 - Incoming queue call

    • Known caller ringing: queue badge + name + number (unchanged)
    • Known caller in progress: name + queue icon / timer + ellipsis
    • Unknown caller ringing: queue badge + number only, same island height as a normal ringing call
    • Unknown caller in progress: number + queue icon / timer, no ellipsis

    Test Case 7 - Number popover

    • Click on the ellipsis opens the popover below with the number and the copy icon
    • Click on copy copies the number, the icon becomes a check for ~2 seconds and the popover stays open
    • Popover closes on click outside, Esc and a second click on the ellipsis
    • Dragging from the popover or the ellipsis does not move the island
    • Hanging up with the popover open or within 2 seconds from copy gives no console errors
    • Copy works in NethLink and in the standalone widget served over http

    Test Case 8 - Avatar

    • Operator with picture shows the picture
    • Operator without picture and external numbers show the generic user icon (no directional arrows), also in the collapsed island

    Test Case 9 - Physical phone as default device

    • B (Web phone) calls A, A answers from the physical phone: B's headset icon + own phone label + ellipsis, no overlapping text

    Test Case 10 - Transfer and call switch

    • After a transfer the device icon of the previous counterpart is not kept
    • Transfer to an operator: the icon matches the device that answered
    • Switching between two calls keeps icon and popover number aligned with the active call

    Test Case 11 - Phonebook lookup safety

    • Calling a short service number (e.g. queue 401) never shows a phonebook contact whose number only ends with the same digits
    • User without phonebook permission still sees the number, no errors

    Test Case 12 - Regressions

    • Collapsed island, listen/intrude, video call, video streaming, recording indicator and audio bars unchanged
    • Host events (phone-island-call-*, open URL on ringing) unchanged
    • Same behavior in NethVoice CTI and NethLink
  10. added
    testingPackages are available from testing repositories
    on Oct 22, 2026
  11. moved this from In Progress to Testing in NethVoiceon Oct 22, 2026
  12. tonyco97 commented on Oct 22, 2026

    @tonyco97

    Testing image:

    ghcr.io/nethesis/nethvoice:1.8.0-testing.21
    

    Install command:

    api-cli run update-module --data '{"module_url":"ghcr.io/nethesis/nethvoice:1.8.0-testing.21"  , "instances":["nethvoice<ID>"], "force": true}'
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

nethvoiceBug or features releted to the NethVoice projectnethvoice-ctiThe issue is related to NethLink (NethVoice Web client)testingPackages are available from testing repositories

Type

Projects

  • Status
    Testing

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions