v3+
UCS Server - changelog
All notable changes to this project will be documented in this file.
[5.16.2] - 2026-10-23
🐛 Bug Fixes
- Add name parameter to attachment Content-Type for older mail clients
- Some clients (old Outlook, Lotus Notes, ...) read the attachment name only from the deprecated Content-Type name parameter and show nameless/generic attachments otherwise. Non-ASCII names are sent there as RFC 2047 encoded-words, since those clients don't understand RFC 2231.
- Split postgres initialization and create/upgrade to after install/transaction
[5.16.1] - 2026-10-22
⚙️ Miscellaneous Tasks
- Use .python-version as source of truth
[5.16.0] - 2026-10-21
🚀 Features
- UAuth credentials, lookup and impersonation API via NATS
-
- auth.credentials verifies username and password without creating session
-
- auth.lookup checks user authenticated by uAuth is active and returns apps
- auth.impersonate tells uAuth whether its user may impersonate another one
- password verification of sessions.login split to reusable verify()
- password of auth.credentials is masked in request log
- install uAuth login.d/50_ucs.yaml and lookup.yaml
[5.15.3] - 2026-10-21
🐛 Bug Fixes
- Create /var/lib/tftp on Ubuntu too
[5.15.2] - 2026-10-21
🐛 Bug Fixes
- Create /run/postgresql before restarting PostgreSQL on RHEL
- The restart failed with "could not create lock file /var/run/postgresql/.s.PGSQL.5432.lock". The directory comes from tmpfiles.d, which systemd's rpm file trigger applies only after all %posttrans scriptlets, so after-transaction.sh now creates it with systemd-tmpfiles first.
[5.15.1] - 2026-10-21
🐛 Bug Fixes
- Restart PostgreSQL and create database after the dnf transaction
- On RHEL "systemctl restart postgresql" failed inside the dnf transaction. The restart and create.sh move to the packager's after_transaction hook (rpm %posttrans, end of postinst on deb), which also starts ucs.service again now that the database exists. Hook messages use pkg_log/pkg_warn.
Needs the packager with after_transaction and pkg_log (insoft/deploy).
[5.15.0] - 2026-10-20
🚀 Features
- Added username to structure.enums user list
🐛 Bug Fixes
- Dialer lost lead clid_number when outbound has no numbers
⚙️ Miscellaneous Tasks
- Moved to INSOFT Python 3.14
[5.14.8] - 2026-10-19
🐛 Bug Fixes
- Libmysql client has different versions in Ubuntu noble and resolute
[5.14.7] - 2026-10-19
🐛 Bug Fixes
- Typo in package.yaml tftp path
[5.14.6] - 2026-10-19
🐛 Bug Fixes
- Upgrade to aiobp 3.0.1
[5.14.5] - 2026-10-19
🐛 Bug Fixes
- Hold aiobp < 3.0.0
[5.14.4] - 2026-10-17
🐛 Bug Fixes
- (dispatch) Only force call.connect for a leg ucs-ami already reported up
⚙️ Miscellaneous Tasks
- Switched to new build system
[5.14.3] - 2026-10-14
🐛 Bug Fixes
- Handle Decimal encoded timestamp in Brainless
- Fallback to context if trunk peer name differs
[5.14.2] - 2026-10-13
🐛 Bug Fixes
- Use configured log level for console and file
[5.14.1] - 2026-10-12
🐛 Bug Fixes
- Store called number instead of "ringing" for short calls
- Avoid issuing multiple call.connected event for dialer calls
- (queue) Park ucs-ari agent events until ucs-ami announces the channel
[5.14.0] - 2026-10-11
🚀 Features
- (email) Add Message-ID header to outgoing e-mails
- Outgoing e-mails currently carry no Message-ID, so a downstream bounce/DSN can't be reliably matched back to the originating e-mail record. Embed our e-mail DB id in a generated Message-ID (<email-id-{id}@{hostname}>, preferring the public hostname when configured) so future bounce-handling can look up the right record. This is groundwork only; bounce/DSN parsing is not implemented yet.
- Added optional team ID limit to queues.agentsLogout and added queues.agentsLogin
🐛 Bug Fixes
- (email) Encode non-ASCII attachment filenames per RFC 2231
- Content-Disposition was built manually as an f-string with the filename wrapped in email.header.Header. Since that whole string was passed as a single opaque header value, Python's generator RFC 2047 encoded the entire "attachment; filename=..." value as one blob when the filename contained non-ASCII characters (e.g. Czech diacritics). RFC 2047 encoded-words are invalid inside structured headers like Content-Disposition, so mail clients couldn't parse out the attachment disposition or filename at all, leaving the attachment unnamed.
Use add_header's filename= keyword instead, which lets the email module apply correct RFC 2231 parameter encoding (filename*=utf-8''...) to just the filename, leaving the rest of the header intact and parseable.
- Use UUID in email Message-ID
- (email) Add Cc header to outgoing queued e-mails
- CC recipients were delivered (they are part of the SMTP envelope) but the message had no Cc header, so they looked like BCC to everyone and were dropped on reply-all. BCC recipients stay envelope-only.
- (email) Add Cc header to outgoing queued e-mails
- CC recipients were delivered (they are part of the SMTP envelope) but the message had no Cc header, so they looked like BCC to everyone and were dropped on reply-all. BCC recipients stay envelope-only.
- (status) Don't re-hang up an already finalized call on late setCall (duplicate CDR/RTCP)
- (mobile) Skip a call push the device has no token for instead of a KeyError
- (call) Raise dial control timeout above the dispatch ringing delay
- (call) Keep the 10s control timeout for dial only, answer/hangup back to 4s
- (call) Finish call.hangup on the line's cancel, a dispatch call never names it in the final hangup
[5.13.0] - 2026-09-24
🚀 Features
- Added SIPREC shadow calls
[5.12.3] - 2026-09-24
🐛 Bug Fixes
- (queue) Pair auto-answered agent legs without a phantom dialplan call
[5.12.2] - 2026-09-22
🐛 Bug Fixes
- Return leads in selected outbound campaign only in API
[5.12.1] - 2026-09-20
🐛 Bug Fixes
- Issue event on agent stats reset to synchronize Brainless
[5.12.0] - 2026-09-20
🚀 Features
- Allow tag in outgoing email sanitizer
🐛 Bug Fixes
- Synchronize agent first and last login/ready and logout times to BrainlessDB
[5.11.2] - 2026-09-18
🐛 Bug Fixes
- (brainless) Stamp last_interaction at first login of the day so leastrecent ignores status flips
[5.11.1] - 2026-09-18
🐛 Bug Fixes
- (brainless) Stamp last_interaction at login so leastrecent ignores AUX/ACW flips
[5.11.0] - 2026-09-16
🚀 Features
- Added SIP trunk DID source support for To and P-Called-Party-ID headers
🐛 Bug Fixes
- Task queue removal
⚙️ Miscellaneous Tasks
- Upgraded aiobp to v2.1
[5.10.3] - 2026-09-13
🐛 Bug Fixes
- Allow call transfers to not READY agents too
[5.10.2] - 2026-09-11
🐛 Bug Fixes
- Don't indicate ringing for dialplan applications
- Search in multiple number leads
- (yealink) Hang up SIP-T21P E2 via Asterisk, its CANCEL key toggles mute
- Honor dispatch workspace abandoned outbound queue for direct phone calls too
[5.10.1] - 2026-09-11
🐛 Bug Fixes
- Forward offline for logged-in user in dispatch workspace
⚙️ Miscellaneous Tasks
- Remove stale uPhone softphones on startup
[5.10.0] - 2026-09-10
🚀 Features
- Added uCRM, tag and template view permissions to ACL
[5.9.0] - 2026-09-07
🚀 Features
- (dispatch) Configurable ringing of calls with no agent assigned
- Added working_time indicator to outbound queue status
🐛 Bug Fixes
- (booking) _set_agent_peer no-op guard
- (dispatch) Drop RingMode import that broke UCS start-up
- (agents) Stamp last_interaction when a call leaves the agent, not at final hangup
- (email) Reassing incoming e-mail when replying on reply
[5.8.1] - 2026-09-01
🐛 Bug Fixes
- Removed accidentaly added reporting plugin
[5.8.0] - 2026-09-01
🚀 Features
- Added full-text search to e-mails
🐛 Bug Fixes
- Resolve current_peer on mobility login, reconcile stale values, only assign agent's own line
[5.7.5] - 2026-08-25
🐛 Bug Fixes
- Use dialed legs count instead of call state for CANCEL logic
- Issue EVENT_CALL_CANCEL when agent doesn't answer call from queue
- Force EVENT_CALL_CANCEL on external agent phones in PSTN
- Typo in Channel dispatchPendingEvents -> dispatchPendingQueueEvents
[5.7.4] - 2026-08-25
🐛 Bug Fixes
- Don't release agents with external calls into booking with reconcile
[5.7.3] - 2026-08-24
🐛 Bug Fixes
- Handle multiple call blind transfers via queues
⚙️ Miscellaneous Tasks
- Moved PostgreSQL indexing logic to sql module
[5.7.2] - 2026-08-23
🐛 Bug Fixes
- (nats) Catch OSError, not the undefined OSerror, and do not block the loop while retrying
⚙️ Miscellaneous Tasks
- Changed INSOFT kiosk deploy directory (for BeFree)
[5.7.1] - 2026-08-23
🐛 Bug Fixes
- (call) Refuse a transfer to a busy agent instead of dropping the customer
- (nats) Stop doubling every UCS API call after a NATS reconnect
[5.7.0] - 2026-08-22
🚀 Features
- (softphone) Added device into user mobility events
🐛 Bug Fixes
- Update brainlessdb
[5.6.6] - 2026-08-20
🐛 Bug Fixes
- (bridge) Don't register the semi-attended transfer transport as a dialed destination
- (call) Fall back to the default outgoing filter when the extension has none
- (bridge) Drop the destroyed-channel guard superseded by the ari single-publish fix
[5.6.5] - 2026-08-19
🐛 Bug Fixes
- (call) Survive semiattended transfers whose destination is not the Dial app
[5.6.4] - 2026-08-18
🐛 Bug Fixes
- (provisioning) Update version of settings when deleting template user
- (call) Set proper user_id on call when dialing user's external number
[5.6.3] - 2026-08-15
🐛 Bug Fixes
- Upgrade braunlessdb
[5.6.2] - 2026-08-15
🐛 Bug Fixes
- (brainless) Restore agent answered-stats update in UCS (revert 1baaddd6)
[5.6.1] - 2026-08-15
🐛 Bug Fixes
- (call) Exclude hung up calls immediately from API call.current
- (email) Don't reassign original e-mail agent on reply
- (brainless) Move agent answered calls stats update to ARI
- (emal) Change queue and agent in reply when changed original message
[5.6.0] - 2026-08-12
🚀 Features
- (dispatch) Added abandoned calls to outbound campaign feature
⚙️ Miscellaneous Tasks
- (email) Unify e-mail reply and forward template usage
[5.5.0] - 2026-08-11
🚀 Features
- (email) Allow additional replies to e-mails
🐛 Bug Fixes
- (brainless) Resync device lines into the bucket on device.line.* events instead of only at startup
[5.4.1] - 2026-08-06
🐛 Bug Fixes
- (call) Set last dialed channel on broadcast queue connect to have connected as B side instead of last rang channel
[5.4.0] - 2026-08-06
🚀 Features
- (email) Added configurable number of automatically assigned emails
- (phone) Added configurable offline forward if no agent is associated
🐛 Bug Fixes
- (email) Fix sanitizer configuration so href is not stripped from anchor...
- (call) Don't hangup call on blind transfer, cancel it and reset connected information
🚜 Refactor
- (ai) Keep id/uniqueid out of stored transcription
[5.3.11] - 2026-08-04
🐛 Bug Fixes
- (stats) Ignore non-agent changes in agent first login time
- (call) Generate event for semiattended call transfers from ARI queues
[5.3.10] - 2026-07-31
🐛 Bug Fixes
- (status) Emit terminal call.hangup for blind-transferer and detach them from a call continuing to an external destination
[5.3.9] - 2026-07-30
🐛 Bug Fixes
- (callcontrol) Link blind-transfer-into-queue Local caller to its bridge peer so queue events pair and agents see the call
[5.3.8] - 2026-07-28
🐛 Bug Fixes
- (nats) Handle race condition when UCS AMI starts after UCS server
[5.3.7] - 2026-07-24
🐛 Bug Fixes
- (email) Fix sanitizer configuration so href is not stripped from anchor elements in outgoing emails
- (email) Allow links in outgoing emails
- (email) Prefer html multipart alternative
- (booking) Release immediate reservations and periodically reconcile agent peer state so a missed event can't starve a READY agent
🚜 Refactor
- (email) Avoid reusing queue variable
- (email) Rename reused variables
- (email) Use where_ prefix for assignEmail filter variables
- (email) Rename reused variables
- (crm) Remove dead None initializations
- (email) Rename reused variables
- (email) Remove Any from agent_status typing
- (email) Remove Any from updateNumbers
🎨 Styling
- Apply ruff formatting
- (email) Apply ruff formatting
⚙️ Miscellaneous Tasks
- (ruff) Ignore B904, we don't use raise from
[5.3.6] - 2026-07-17
🐛 Bug Fixes
- (brainless) Map SQL penalty to KV priority in user.queue updates so supervisor priority changes reach ari
- (config) Include suspended in queue agents select so queue settings saves don't wipe suspension from the KV
[5.3.5] - 2026-07-16
🐛 Bug Fixes
- (brainless) Sync runtime agent suspend/resume into the inbound KV so ari stops ringing suspended agents
[5.3.4] - 2026-07-16
🐛 Bug Fixes
- (brainless) Stamp last_interaction at call hangup instead of connect so leastrecent orders by reliable, final, end-of-call data
[5.3.3] - 2026-07-15
🐛 Bug Fixes
- (status) Surface ringing of Stasis-blind-transferred calls to the target operator (link orphan Local pair via bridge, guard same-call setCall, ignore hold/unhold from transferred-away channels)
- (status) Repair Local pair mislinked to its own dial target instead of creating a degenerate self-call
[5.3.2] - 2026-07-14
🐛 Bug Fixes
- (provisioning) Import ORIG_CALLER/LAST_EXTENSION from transferer on blind transfer of Stasis calls
- Add missing newline
🚜 Refactor
- (queue) Add type hints to queue.py
🧪 Testing
- Enable pytest unit tests for ucs modules
- Add tests for email
⚙️ Miscellaneous Tasks
- Replace ruff select ALL with a curated rule set
- (agent) Add type hints to EmailQueueAgent
- (email) Add type hints to Email state attributes
- (email) Annotate local collections in Email
- (email) Annotate normalize_attachments return and stats_stored
- (email) Annotate load() where dict
- (mypy) Add override for untyped ucs_data
- (ruff) Enable W rules to catch missing EOF newline
[5.3.1] - 2026-07-14
🐛 Bug Fixes
- (agents) Call agents booking in run method so we don't override thread start method
[5.3.0] - 2026-07-13
🚀 Features
- (phone) Make complete provisioning for INSOFT kiosk
🐛 Bug Fixes
- (email) Unpack multiple values in email attachment sender
- Added external number handling into agent booking
- Booking start order fix
- Trigger call.connected when dispatch channel joins
- (dispatch) Emit call.connected when agent joins dispatch bridge
- (email) Read attachment fields by key instead of unpacking dict
- (transfer) Normalize external targets for blind/consult transfer so they route via filter-internal
⚙️ Miscellaneous Tasks
- Add email sender typing to enhance type safety
- (email) Correct attachment types in outgoing message
- Add dev dependency group
- Move mypy config into pyproject.toml
- Fix deprecated ruff lint config
[5.2.0] - 2026-06-25
🚀 Features
- (queues) Added agent reservation for multichannel
- (queues) Return peer and line_id in successful agent reservation
🐛 Bug Fixes
- (sync) Fixed logging of IDP synchronization
- (uphone) Activate and deactivate uPhone for INSOFT kiosk device ID too
- (mobility) Always issue all currently associated lines in UM login event
⚙️ Miscellaneous Tasks
- (queues) Accept agent ID as argument in reservation
[5.1.0] - 2026-06-16
🚀 Features
- (phone) Added INSOFT kiosk device provisioning
🐛 Bug Fixes
- (nats) Subscribe to all events in main thread
- (inbound) Handle inbound queue agent external phones in PSTN
- (email) Discard empty blockquotes from messages
[5.0.5] - 2026-06-15
🐛 Bug Fixes
- (ai) Make workflow_logical_id optional for OSL voicebot
⚙️ Miscellaneous Tasks
- (calls) Be verbose about inbound queue events
[5.0.4] - 2026-06-14
🐛 Bug Fixes
- (queues) Calculate properly threshold wait and ring time for inbound to outbound abandoned calls
- (mobility) Make user primary extension sticky on device line
🚜 Refactor
- (api-call) Guard waiting for event with checking whether event is none to prevent type error
⚙️ Miscellaneous Tasks
- (queues) Removed anget queue assigment profiles
[5.0.3] - 2026-06-12
🐛 Bug Fixes
- (brainless) Handle devices synchronization exception
[5.0.2] - 2026-06-11
🐛 Bug Fixes
- (xmpp) Get rid of protocol logging from Jabber server
[5.0.1] - 2026-06-11
🐛 Bug Fixes
- (build) Use HTTPS to fetch ucs-data to project
[5.0.0] - 2026-06-11
🚀 Features
- (dispatch) Added call handling for dispatch bridges
- (ai) Added assistant extension type
- (api) Make call.dial synchronnous and return new call data
- (api) Make call.answer and call.hangup synchronnous and return new call data
- (ai) Made AI service extension general
- (ai) Added processor to AI Extension
- (api) Return also ongoing calls in status.call method
- (ai) Update call transcription on voicebot handover
- (ai) Add voicebot summary to call handover
- Expose working_time on inbound queue status
- (otel) Added call traceparent for OTel
- (otel) Added traceparent to Channel and Call
- (log) Added OTel logging to call events
- (brainless) Added UCS config into Brainless Registry
🐛 Bug Fixes
- (brainless) Recognize properly legacy INSOFT softphones
- (brainless) ISO time format hotfix for NATS
- (dispatch) Handle dispatch enter via user phone extension
- (callcontrol) Set call state if added channel to bridge is ringing or connected
- (brainless) Mirror agent state to user
- (dispatch) Handle properly dispatch hold, disconnect and outbound calls
- (ai) Handle AI assistant extension calls properly
- (mobile) Check if mobile application is main before sending APN PUSH call notification
- (ai) Pass call uniqueid via SIP header to uPhone for Assistant
- (provisioning) Format filter ID properly in sip.conf
- (mobile) Added missing displayname in profile provisioning
- (ai) Rename OSL Voicebot workflow attribute
- (api) Properly answer and hangup call by uniqueid
- (queue) Synchronize inbound queue agents to Brainless
- Ignore API-format lines from device events
- Remove stale updateAsterisk call after ARI migration
- Log error when agent channel is missing on queue call
- Publish call.cancel and call.ringing per queue ring leg
- Update user.last_interaction and inbound agent stats for selector strategies
- (inbound) Handle inbound queue join rejections
- (otel) Added OTel traceparent to inbound queues
- (status) Set agent channel state for ARI hold/unhold
- Update ucs-data version and uv lock
- (agents) Don't evict previously-ringing agents on RINGALL concurrent ring
- (ai) Send ID as str to AI processor
- (api) Allow column selection in extension list
- Save registry changes
- (brainless) [breaking] Sanitize languages and VPN port in UCS config
⚙️ Miscellaneous Tasks
- (inbound) Handle inbound queues outside of Asterisk
- (data) Added external UCS data module for Brainless DB
- (data) Synchronize users to Brainless DB
- (brainless) Upgrade to synchronous version
- (brainless) Generalize collection updates
- (brainless) Sync devices and inbound queues
- (callcontrol) Cleanup module initialization and startup
- (brainless) Added synchronization of inbound queue agents
- (brainless) Added extensions and linked ucs/lib as ucs_data source
- (brainless) Use git to fetch ucs-data module
- (brainless) Update device line associated user on user mobility login/logout
- Cleanup DispatchBridge handling in callcontrol
- (inbound) Remove unneeded methods
- (pbx) Unify ring indication across extensions
- (core) Switched to Python logging via aiobp
- (async) Improved exception logging from async code
- (ai) Renamed extracted_data to metadata for voicebot data
- (ai) Don't get channel names from voicebot result
- (ai) Force channel names for voicebot summary
- (ai) Changed attribute for correlation from record_id to id
- Update brainless to include unhashed key name in brainless_registry
[4.51.1] - 2026-06-10
🐛 Bug Fixes
- (email) Use default template for new e-mails
[4.51.0] - 2026-06-09
🚀 Features
- (email) Provide cids in email detail endpoint to be able hiding inline email attachments from attachment list
- (email) Filter e-mails by tags and indicate if they have attachments
🐛 Bug Fixes
- (email) Don't expose email attachments data in list
- (queues) Don't play announcements for inter queue transfers
[4.50.0] - 2026-06-04
🚀 Features
- (uphone) Added DTMF support
- (email) Allow e-mail fetcher deliver info via NATS
[4.49.0] - 2026-05-25
🚀 Features
- (notifier) Added SMS action to Event notifiers
- (login) Added apps JWT claim checking
[4.48.0] - 2026-05-22
🚀 Features
- (sms) Added MEX GATE SMS gateway driver
[4.47.0] - 2026-05-21
🚀 Features
- (queues) Allow to list leads across all user outbound campaigns
[4.46.3] - 2026-05-11
🐛 Bug Fixes
- (outbound) Update autoanswer settings on outbound add/update
[4.46.2] - 2026-05-11
🐛 Bug Fixes
- (autoanswer) Indicate beeps on inbound and outbound queue calls
[4.46.1] - 2026-05-04
🐛 Bug Fixes
- (call) Serialize distinctive ring to call events
- (call) Parse Bellcore-rX rings to enum int value X
- (call) Make sure distinctive is integer for enum values
[4.46.0] - 2026-05-03
🚀 Features
- (call) Added distinctive ring support on queues
[4.45.3] - 2026-04-27
🐛 Bug Fixes
- (sip) Load configured SIP on UCS startup
[4.45.2] - 2026-04-24
🐛 Bug Fixes
- (sip) Make SIP port configurable
[4.45.1] - 2026-04-23
🐛 Bug Fixes
- (mobile) Send call event type in PUSH notification.
- (agent) Update ACW settings for non-callcenter calls from role without UCS restart
[4.45.0] - 2026-04-21
🚀 Features
- (queues) Link outbound campaign depended callback inbound queues
- (queues) Suspend outbound on depend inbound agent membership delete and add inbound on mebership add
- (uphone) Added hanshake ID to SDP/Candidates methods
- (call) Added distinctive ring to inbound queues and outbound campaigns
⚙️ Miscellaneous Tasks
- (ucrm) Avoid pertson auto-assign to interaction when multiple matches exist
[4.44.1] - 2026-04-15
🐛 Bug Fixes
- (dialer) Send SIP NOTIFY about dialer connected call out of dialog
[4.44.0] - 2026-04-14
🚀 Features
- (agent) ACW switch from AUX flag to agent teams moved from parameters to teams
[4.43.2] - 2026-04-08
🐛 Bug Fixes
- (call) Mute on legacy softphones
[4.43.1] - 2026-04-03
🐛 Bug Fixes
- (asterisk) Increased DB synchronization timeout to 60 seconds
[4.43.0] - 2026-03-27
🚀 Features
- (provisioning) Added device_id to user object
🐛 Bug Fixes
- (mobile) Send PUSH notifications with call UUID
[4.42.9] - 2026-03-27
🐛 Bug Fixes
- (provisioning) Allow more than 5 lines on Yealink WP devices
- (call) Generate call.new event immediately for calls into invalid extensions
[4.42.8] - 2026-03-26
🐛 Bug Fixes
- (mobile) Access KV bucket value properly (for director)
[4.42.7] - 2026-03-23
Api
- (call) Make call/answer/hangup API calls synchronous
[4.42.6] - 2026-03-19
🐛 Bug Fixes
- (dialer) Fixed bug in SQL query that caused endless loop
[4.42.5] - 2026-03-18
🐛 Bug Fixes
- (dialer) Avoid using endless loop in lead provider
[4.42.4] - 2026-03-14
Report
- (leads) Fixed report for outbound campaign numbers
[4.42.3] - 2026-03-14
🐛 Bug Fixes
- (call) Set SIP Call-ID on channel and notify dialer on called connect
[4.42.2] - 2026-03-12
🐛 Bug Fixes
- (sms) Allow nickname as SMS sender (name instead of number)
- (crm) Added EXE button action
[4.42.1] - 2026-02-22
🐛 Bug Fixes
- (recording) Start recording after attended transfer to queue of not recorded call
[4.42.0] - 2026-01-24
🚀 Features
- (dialer) Added AUX for no answer, minimum talk time, and lead expire date
[4.41.3] - 2026-01-21
🐛 Bug Fixes
- (dialer) Store lead hangup causes and subsequent calls
[4.41.2] - 2026-01-21
🐛 Bug Fixes
- (api) Allow user get by username and external ID
[4.41.1] - 2026-01-21
🐛 Bug Fixes
- (lookup) Allow offset and limit for last calls lookup
[4.41.0] - 2026-01-13
🚀 Features
- (outbound) Allow override outgoing filter by outbound campaign
- (uphone) Control multiple calls on uPhone softphone
- (sip) Pass UCS uniqueid to IP phones via SIP header