Skip to content

NethVoice Chat integration #7648

Open

Description

@andrea-marchionni

Description:
Integrate a unified messaging system into NethVoice that works across desktop, mobile, and web applications. Supports 1:1 and group chats, with optional features like channels, file sharing, and WhatsApp integration.

Must Have:

  • 1:1 chat
  • Group chat
  • Integrated authentication with NethVoice
  • Mobile app (iOS/Android)
  • Desktop app (Windows/macOS/Linux)

Should Have:

Could Have:

  • WhatsApp integration

User Scenarios:

  • Top: Chat as “Phone Island” – integrated in all web apps, with users, groups, channels accessible directly.
  • Medium: Standalone chat with links from CTI/WebTop/external apps.
  • Minimum: Independent chat app (e.g., Mattermost).
  • Worst: No chat integration.

Acceptance Criteria:

  1. Send/receive 1:1 messages.
  2. Create and participate in group chats.
  3. Authentication integrated with NethVoice.
  4. Chat accessible via mobile and desktop.
  5. Optional: file sharing in chats.
  6. Optional: channels functional.
  7. Optional: launch chat from NethLink or other apps.
  8. Optional: WhatsApp integration supported.

Activity

  1. added
    nethvoiceBug or features releted to the NethVoice project
    nethvoice-ctiThe issue is related to NethLink (NethVoice Web client)
    milestone goal 👑This describes an announced milestone goal
    nethlinkThe issue is related to NethLink (NethVoice Desktop client)
    on Sep 22, 2025
  2. compgeniuses commented on Dec 14, 2025

    @compgeniuses

    The Implementation of this functionality, could potentially also be ported into webtop chat interface as well, As an Alternative, or main to ejabberd.

    This would provide a consistent and coherent persistent chat interface, for messages.

    Once of the challenges i noticed with ejabberd as an IM chat interface is, message on external chat tools, those from webtop, and others, are not entirely persistent, in that, context is lost.

    Unless its only a me problem, i beleive matrix as the main chat interface, would persist, on webtop, nethcti, nethlink, among other mobile and web interfaces including nextcloud, which is majorly used in NS.

    Looking forward to this implementation, it would be a game changer.

  3. self-assigned this
    on Oct 6, 2026
  4. andrea-marchionni commented on Oct 6, 2026

    @andrea-marchionni
    Author

    In the QManager Customer Management tab, remember to restore the ability for the QManager to report missed calls via chat to the agents of the specific queue.

  5. edospadoni commented on Oct 21, 2026

    @edospadoni
    Member

    Test

    Release: https://github.com/nethesis/ns8-nethvoice/releases/tag/1.8.0-testing.2 (CTI v1.0.0)
    NethLink builds (Windows, macOS x64/arm64, Linux): NethServer/nethlink#229 (comment)

    Setup: NethVoice updated to 1.8.0-testing.2; operators A, B, C (C with a profile picture), a CTI operator group with A and B, a queue with A and B as agents; A in the CTI on two browsers, B in the CTI and in NethLink (builds above), C in the NethVoice app (Android and iOS). Repeat the CTI checks in light and dark theme, IT and EN.

    Test Case 1 - Enable the chat

    • Before enabling: no Messages entry in the CTI, no chat in NethLink, the app provisioning has no messaging fields
    • Integrations page: enable Chat, save; retention (days), upload quota (MB) and largest file (MB) are shown with their defaults
    • Wizard, profiles: the Chat permission is shown; a profile without it hides the chat from its users in CTI and NethLink
    • After enabling: the Messages entry appears in the CTI and the chat dock appears

    Test Case 2 - 1:1 chat

    • A starts a chat with B from Messages > New chat, from the operator card (Chat button) and from the operator drawer (Open chat)
    • Messages arrive both ways in real time, with the operator name and avatar
    • Presence dot follows the CTI status (online, busy, DND, offline)
    • Typing indicator, delivered and read ticks
    • Reply to a message, react with an emoji, emoji shortcodes (e.g. :+1:) are converted
    • A's second browser shows the same conversation and the same unread state
    • Reload: history is loaded, scrolling up loads older messages

    Test Case 3 - Attachments and voice notes

    • Send an image, a PDF and several files at once with a caption: one message, each file downloadable
    • A file larger than the "largest file" limit is refused with a message
    • Record and send a voice note (Chrome, Firefox, Safari); B plays it
    • Drag and drop a file on the chat window

    Test Case 4 - Groups

    • A creates a group with B and C, with a name and a picture; all members see it
    • Owner renames the group, changes the picture, adds and removes members; the removed member sees "No longer in this group" and cannot write
    • A member leaves; the owner deletes the group: it disappears for everyone
    • Owner leaves: ownership passes to another member
    • Group ticks: read only when all the other members have read
    • Group header: click shows the group details drawer

    Test Case 5 - CTI groups and queues

    • The CTI operator group appears as a group chat for its members, with the group name
    • Add/remove an operator from the CTI group in the wizard: the chat member list follows within a couple of minutes
    • Rename and delete the CTI group: the chat follows
    • The queue appears as a "Queue - " chat for its agents, with the queues icon
    • CTI group and queue chats cannot be deleted or left from the Messages menu

    Test Case 6 - Messages page (CTI)

    • Click on a row or on "Open chat": the chat opens in the island
    • ⋮ menu: Mute/Unmute notifications, Operator details / Group details / Queue details (opens the right drawer), Delete / Leave
    • Unread badge on the row and on the Messages nav entry
    • Pagination and page size
    • Search by name, by username and by message text: matches are highlighted, the row shows the newest match and the count; a skeleton is shown while searching and "No results" when nothing matches
    • Click on a search result opens the chat at the found message

    Test Case 7 - Search in a chat

    • Search icon in the chat header: matches highlighted in yellow, the current one has a border, arrows move between results ("n of total")
    • Works in 1:1 and group chats, including older messages not loaded yet
    • Closing the search or clearing the text removes highlight and border

    Test Case 8 - Island in the CTI

    • Chat heads dock: open, minimize, close, drag; "+N more chats" when there are many
    • Pin to side panel: the chat moves to the right rail, heads in the rail; Unpin restores the floating dock
    • Toast for a new message when the chat is not open; muted chats give no toast and no sound
    • Call button in the chat header: calls B on the chosen device (Web phone, NethLink, Mobile); the call appears as a line in the chat ("You called B")
    • Web Push: with the CTI tab closed, a new message shows a browser notification; clicking it opens the chat

    Test Case 9 - NethLink

    • Chat entry in the sidebar with the conversation list, unread badges, delete/leave
    • The chat window opens bottom-right, can be dragged anywhere, also to a second monitor; it stays where it is dropped, no flicker or duplicate on drop
    • Moving the mouse over the dock and the open chat: no scrollbar flash, no jumps; clicks on the transparent area around it reach the window below (Windows, macOS)
    • Command bar: chat icon on operator rows, Ctrl/Cmd+Enter opens the chat
    • With NethLink online, "Chat" in the CTI opens the chat in NethLink (one island at a time); NethLink closed, the CTI island is used again
    • A system without the chat (chat disabled or older NethVoice): no chat entry and no errors

    Test Case 10 - NethVoice app

    • Log in with QR code and with password: the Messages section is available (with 2FA only the QR code login works)
    • Send and receive 1:1 messages with A and B; messages sent from the app appear in the CTI and vice versa
    • Receive group messages
    • Attachments and voice notes both ways
    • Push notification with the app in background and closed
    • On a system without the chat the app provisioning is unchanged and login works as before

    Test Case 11 - Operator removed

    • Remove operator C from NethVoice: after the grace period (24h) C's chats show "No longer active" and the composer is read only; history stays
    • If C owned a group, ownership passes to another member

    Test Case 12 - Backup, restore and update

    • Backup and restore the module: conversations, groups and attachments are restored
    • Update from the previous release: chat ports are allocated, other services keep working, the chat stays off until enabled
    • Disable the chat in Integrations: chat services stop and CTI, NethLink and app hide the chat; enable again: history is still there
  6. added
    testingPackages are available from testing repositories
    on Oct 21, 2026
  7. moved this from In Progress to Testing in NethVoiceon Oct 21, 2026
  8. 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

milestone goal 👑This describes an announced milestone goalnethlinkThe issue is related to NethLink (NethVoice Desktop client)nethvoiceBug or features releted to the NethVoice projectnethvoice-ctiThe issue is related to NethLink (NethVoice Web client)testingPackages are available from testing repositories

Projects

  • Status
    Testing

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions