Quobis WAC release notes

v5.3.1

Released 26/09/2022

New features

  • Allow to setup the user group ringing strategy and its parameters via REST API (ROAD-2390)

  • Persistent and centralized missed call counter (ROAD-2016).

  • Added more specific log-level logs for Erebus service in info & error levels (VOD-110)

  • As a domain contacts user I want the contacts to have phone and emails fields filled in (QUOBDEV-1753)

  • Upgrade Keycloak component to latest upstream release (ROAD-2259)

  • Document “401 error” in the REST API documentation(ROAD-2546)

  • Make the homoglyph check configurable (ROAD-2456)

Bug fixes

  • Under some circumstances, push notification reaches the other participants in a ringing group after one of them answers the call (ITX-647)

  • Database migration 26.5 and 26.6 fails (ITX-653)

  • Blocked non authorized access to Keycloack API (ROAD-2567)

  • Fixed single-session support (ROAD-2311)

  • A malformed room-destroyed event is sent in a ringing group call (ROAD-2521)

  • A “PUT” query to the “domain” endpoint accepts an invalid parent (ROAD-2449)

  • Meeting owner data is not updated when meeting details are updated (ROAD-2441)

Known issues

  • Deactivating missedCalls service blocks conferenceLog writing. Workaround: always initialize the missedCalls service. (ROAD-2658)

  • Meetings cab be updated by another user different from the owner (SEC-167)

  • A push notification arrives to the mobile applications if a call has been made while the device was out of connection (ITX-661)

Changes

  • New missed call services needs specific activation at the wac.ini configuration file ([[missedcalls]])

  • Two new parameters for setting the default local and timezone (defaultTimezone and defaultLocale) in wac/config/user.toml

v5.2.2

Released 22/08/2022

Bug fixes

  • Calls from PSTN users to internal users are not registered in the conference log under some specific situations (VOD-160)

v5.2.1

Released 01/08/2022

Bug fixes

  • Unanswered calls not shown in the callee conference log in parallel-SIP environments (VOD-97)

  • Calls to offline users do not appear in the call-history of the callee (VOD-98)

v5.2.0

Released 15/07/2022

New features

  • The ringing group strategy configuration, which was introduced in version 5.1.0 as system-wide configuration, has been improved in this version and it’s now a per-usergroup configuration. This is implemented in a new object named “ringingstrategy” available in the usersGroup endpoint of the wac-core REST API (ROAD-2468).

  • There are now two new parameters to setup the user local timezone and its locale (“currentTimezone” and “locale”). These two new properties are used by the wac-core service when sending SMS and meetings notifications and also in the conference log generation (ROAD-2459).

  • New parameter “chatId” added to the UsersGroup model that includes the ID of the associated chat room (QUOBDEV-1900).

  • Added a new library @quobis/opentelemetry-wrapper (ROAD-2330).

Bug fixes

  • Corrected wrong behaviour that caused the wrapper service to reboot with a log message “TypeError: this.deleteRoom is not a function” (VOD-107).

  • QSS-meeting-basic service could not start if service qss-registry was not available (ROAD-2247).

  • wac-core service allows case-sensitive “groupID”s while the XMPP services is case-insensitive. A check has been added to prevent this problem in the future (ROAD-2410).

  • User update API in WAC-core allows to modify values incongruously. Now, The fields “created” and “lastLogin” have been ignored from the PUT request - users. Therefore, even if any of these fields comes in the body, no update will be done (ROAD-2354).

Changes and deprecations

  • Ringing group strategy configuration from config.json has been deprecated and removed. This information is now avaible at each ringing group.

  • Migration of wac-core 26.4 is required (wac-core: node bin/waccli migrate -f 26.4).

v5.1.2

Released 05/07/2022

Bug fixes

  • Incoming calls to user groups participants when the mobile app was running in background mode were not automatically cancelled in sequential ringing (ROAD-2434)

v5.1.1

Released 21th June 2022

Bug fixes

  • Calls to user groups with sequential strategy are now working properly in mobile devices (ROAD-2293)

  • Changed wrong internal reference in erebus service from “wac” to “wac-core” (QUOBDEV-1937)

v5.1.0

Released 06/06/2022

New features

  • Support for push notifications when the wac-core service sits behind a HTTP proxy (VOD-136)

  • New dashboard that provides login information from Keycloak such as logins/logouts per second, per domain, login response time, login errors, etc… (ROAD-2011)

  • New dashboard with metric of the Kitter service (ROAD-2086)

  • New ringing strategy for UserGroups: sequential ringing. This is a system-wide configuration option via two new parameters: “stepDelay” and “maxSteps” (ROAD-2154)

  • A new endpoint “putParticipants” with path /sapi/usersGroup/:groupId/participants has been added to the wac-core REST API in order to change/update the participants of an userGroup and it’s order (ROAD-2168)

  • Kitter API can now handle users without sipmapping attribute (ROAD-2218)

  • Kitter API can now handle users without wacUserId attribute (ROAD-2219)

Bug fixes

  • All established calls are automatically terminated when the “stepDelay” * “maxSteps” time is reached and sequential ringing is activated (ROAD-2229)

  • User created on the fly can now be deleted using Kitter API (ROAD-2204)

  • User matching in login process is now case-insensitive (ROAD-2225)

Changes

  • There are three new enviroment vars for Kitter configuration: JAEGER_HOST (host where is the jaeger endpoint for monitoring traces), JAEGER_PORT (port of the the jaeger endpoint for monitoring traces) and PROMETHEUS_PORT (port of the prometheus endpoint to send metrics to).

Known issues

  • The chats of the deleted users remain indefinitely in the chat list (VOD-146)

  • The meeting time shown in the email body is different from the time shown in the ICS file (VOD-146)

  • Single session: inability to properly logout earlier session because of keycloak’s cookie (ROAD-2311)

  • Keycloak shows an error on first login (and creates the user) when login using ADFS (ROAD-2191)

  • Logout is not working when authenticating against ADFS server (ROAD-2190)

  • Changes in unique key mobilephone were not properly managed on system boot (ROAD-2160)

  • Calls to user groups with sequential strategy are now working properly in mobile devices (ROAD-2293)

  • Unanswered calls are not shown in the callee conference log with Parallel-SIP (VOD-97)

  • On multiparty calls, when a participant hangs, he is still shown for the rest of participants (QA-2941)

  • The list of chats does not show the conversations before the version update (QA-2907)

  • Instant audios sent by iOS native app to a web user are not received (QA-2790)

  • Finishing a call as callee on PSTN does not finish it on the platform (QA-2578)

  • The call of a multi-device users ends automatically when users log out from another device (QA-2513)

v5.0.5

Released 24/05/2022

Bug fixes

  • Wrong timestamp of the recording files (ROAD-2189)

  • Empty mobile phone field in the user on-the-fly creation caused a wac-core crash (ROAD-2183)

Known issues

  • Unable to delete user created on-the-fly via ADFS using Kitter API (ROAD-2204)

  • Keycloak shows an error on first login (and creates the user) when login using ADFS (ROAD-2191)

  • Logout is not working when authenticating against ADFS server (ROAD-2190)

  • Changes in unique key mobilephone were not properly managed on system boot (ROAD-2160)

  • Unanswered calls are not shown in the callee conference log with Parallel-SIP (VOD-97)

  • Information button doesn’t display call details when screen-sharing functionality is activated (QA-2996)

  • On multiparty calls, when a participant hangs, he is shown for the rest of participants (QA-2941)

  • The list of chats does not show the conversations before the version update (QA-2907)

  • Instant audios sent by iOS native app to a web user are not received (QA-2790)

  • Finishing a call as callee on PSTN does not finish it on the platform (QA-2578)

  • The call of a multi-device users ends automatically when users log out of the device where they do not have an established call (QA-2513)

v5.0.4

Released 12th May 2022

Bug fixes

  • Ansible deployment can be done now with Debian 11 (DEVOPS-501)

  • Session restore was sending a 404 Bad Request under specific circumstances. That means that mobile apps couldn’t recover from background state (ROAD-2157)

  • Single-session parameter was not working due to a problem with Keycloack sessions (ROAD-2158)

  • No response is sent to client when an already created ADFS user was recreated (ROAD-2149)

  • A malformed AMQP message caused the wac-core service to crash. Now, the malformed event is handled correctly and a log message is saved (“Unable to parse event, ignoring. The event content was: …”) (AS-141)

  • Login using a remote ADFS is not working (DEV-1811).

  • The id@anonymous string appears when the user accesses the lobby of a meeting (VOD-114).

  • VoIP pushes has a 1-hour lenght timeout, fixed now to 30 seconds (DEV-1925).

  • Cannot sort users by email via the REST API (ROAD-2083).

  • SMS templates of meetings has name and URL as mandatory fields (ROAD-2095).

  • Under some circumstances the incoming request has no socket assigned (ROAD-2128).

  • Images with webp format are rejected for user’s avatar (QA-2985).

Known issues

  • Unable to delete user created on-the-fly via ADFS using Kitter API (ROAD-2204)

  • Keycloak shows an error on first login (and creates the user) when login using ADFS (ROAD-2191)

  • Logout is not working when authenticating against ADFS server (ROAD-2190)

  • Wrong timestamp of the recording files (ROAD-2189)

  • Empty mobile phone field in the user on-the-fly creation caused a wac-core crash (ROAD-2183)

  • Changes in unique key mobilephone were not properly managed on system boot (ROAD-2160)

  • Unanswered calls are not shown in the callee conference log with Parallel-SIP (VOD-97)

  • Information button doesn’t display call details when screen-sharing functionality is activated (QA-2996)

  • On multiparty calls, when a participant hangs, he is shown for the rest of participants (QA-2941)

  • The list of chats does not show the conversations before the version update (QA-2907)

  • Instant audios sent by iOS native app to a web user are not received (QA-2790)

  • Finishing a call as callee on PSTN does not finish it on the platform (QA-2578)

  • The call of a multi-device users ends automatically when users log out of the device where they do not have an established call (QA-2513)

v5.0.0

Released 25/03/2022

Backward compatibility announcement

Please take into account these limitations about backward compatibility following the announcement of Quobis Communication Platform v5.0:

  • Quobis native application (SDKs and collaborator) v5.0 are fully compatible with systems running Quobis wac v5.0, v4.4, v4.3.

  • Quobis Javascript SDK v5.0, Quobis collaborator web & desktop v5.0 are not compatible with systems running Quobis wac v4.4 or v4.3.

  • Quobis SDKs v4.x , Quobis collaborator v4.x are not compatible with systems running a Quobis wac 5.0.

  • Quobis Manager v5.0 is not compatible with systems running Quobis wac 4.x.

  • Quobis Manager v4.x is not compatible with systems running Quobis wac 5.0.

Version 4.4 of Quobis Communication Platform products (Quobis wac, Quobis SDK, Quobis Manager) will be supported until November 2022. Please take this end-of-life date into consideration as per the implications stated above.

Released 25th March 2022

New features

  • User login and authentication process has changed in v5.0 in order to provide a better and more secure authentication process. Two new elements have been added in v5.0: Keycloack (a third-party open source IAM server) and Kitter (a service responsible for user provisioning and coordination between Keycloack and wac service). User authentication and provisioning is made now using these new services and their associated APIs, instead of using the wac REST API endpoints. Please note that this new implementation breaks the REST API contract as explained in the backward compatibility announcement above.

  • Configure the system to be able to connect an external debugger using –inspect parameter (QUOBDEV-1307)

  • Improved connection error management related to AMQP messages (QUOBDEV-1670)

  • REST API new features and improvements:

    • New REST API conferences endpoint with cursor based pagination (QUOBDEV-1422)

    • Allow regular users to query other users via REST API (QUOBDEV-1565)

    • Enhance documents information with username and domain in the presence REST endpoing (QUOBDEV-1564)

    • Improved users REST API endpoint to get users by their username and name

    • Create sipmappings V2 endpoint (QUOBDEV-1402)

    • Add new pagination and filters to sipmappings endpoint (QUOBDEV1349)

    • Create users groups V2 endpoint (QUOBDEV-1403)

    • Add partial searchers in Users string fields (QUOBDEV-1348)

    • Add new pagination to users endpoint (QUOBDEV-1343)

    • Add new pagination to group endpoint (QUOBDEV-1353)

    • Return the total number of records per collection in the pagination library (QUOBDEV-1341)

Changes

  • Service “sippo-server” has been renamed to “wac-core”.

  • Deployment software package “sippo-k8s” has been renamed to “k8s-installer”

  • There is now a domain named “anonymous” that is automatically created by default and that cannot be edited or removed. All anonymous users are mapped into this domain, which is a “child” of the main “quobis” domain.

Bug fixes

  • Erebus limits the number of connection to the QSS from a given endpoint to prevent system overload, with the exception of WS janus-protocol as there can be more than one connection for call transfers, call-hold, etc… A log has been also added (“Cannot open a new pipe for the same server ${server} and protocol ${protocol} from client ${clientId}”).

  • Presence is not being updated for some users (QA-2652)

  • Watchdog registry checks are executed every millisecond (QA-2840)

  • Erebus reached inconsistent state after a Kubernetes node was down

  • Memory leak in qss-registry service

  • Erebus fails to reboot after a node crash

  • Static contact from Addressbooks is received without a phone value (QA-2849)

  • First chat messages sent to a user are not received (QA-2850)

  • An iptables rule needs to be added every time a kube-proxy restarts

  • The xmpp-server-nginx does not connect to the sippo-server when it changes its IP address (QA-2051)

  • The xmpp-server doesn’t connect to postgresql after an environment crash (QA-1863)

  • The response codes are different depending if the callee is a pstn or a domain user (QA-1754)

  • Fix timeout on error when sending a SMS after deletion of a meeting (QA-2788)

  • Reconnections and pod-restart issues:

    • Erebus fails to reboot after a node crash

    • Wrapper and recording services do not automatically reconnect after a RabbitMQ crash longer than three minutes (QUOBDEV-1679)

    • The dispatcher does not work correctly after a reboot

    • Error “restify.NotFoundError is not a constructor” appears in dispatcher logs

    • qss-trunk service needs to be the last QSS service to be initialized, otherwise it will refuse to start

    • qss-trunk service stops working properly and prevents outgoing calls in some circumstances

  • REST API fixes:

    • Error 404 is returned when PATCH is sent to /api/user/ with phone_number and sip_mapping

    • 200 OK is returned when POST/PATCH to /api/users or /api/domains is sent with an invalid body

    • User REST API allows to change the user domain (QA-2471)

    • User REST API allows to update username (QA-2816)

    • Users REST API allows to update an alias using an empty value (QA-2812)

    • Clean orphan sip-mappings without an existing owner or user group (QA-2365)

    • Regular users can edit the data of other users through user SAPI under some circumstanace (QA-2820)

    • User search based on email with special characters is not working (QA-2698)

    • System allows to update an user using invalid user role value (QA-2469)

    • Users can have its role changed to anonymous even if their domain doesn’t allow it (QA-1760)

Known issues

  • User can not be changed from one domain to another

  • On multiparty calls, when a participant hangs up, he is still shown for the rest of participants (QA-2941)

  • Invites to PSTN: fromDetail.displayName is wrong, it displays the caller’s number instead of the SIPs displayName (QA-2746)

  • The call ends when canceling an invite participant request sent as callee (QA-2530)

  • The SipMapping is not removed from the database when the userGroup is deleted (QA-2376)

  • Recording does not process when videos are turned off and back on (QA-2271)

  • Meeting start and end time sent by email are incorrect

  • Users removed from the system remain listed as members of the chat groups to which they belonged (QA-1942)

  • Meeting PIN is not being send on the SMS (QA-1938)

  • Active conferences has not an associated chat (QA-1921)

  • The xmpp-server doesn’t connect to postgresql after an environment crash (QA-1863)

  • A malformed requests in erebus should respond with 400, not 500 (QA-1768)

  • Allow WAC to locally query itself instead of using public URL when validating an access token (QA-1761)

  • Credentials OpenAPI definition missing query parameter (QA-1762)

  • There are some users registered with multiple Firebase push tokens (QA-1755)

  • When a disconnected user’s ID is called, the call is redirected to PSTN (QA-1757)

Deprecations

  • Internal service oAuth-2P (O2P) has been deprecated in v5.0 as it’s been replaced by Keycloack service.

  • Oracle, Ericsson and Dialogic gateway support has been deprecated in v5.0

v4.4.1

Released 17/05/2022

Bug fixes

  • Wrong timestamp of the recording files (ROAD-2189)

  • Addressbook service is monitoring events from all other services, even when disabled by config (QA-2607)

v4.4.0

Released 17/09/2021

New features

  • meetings: improve email and SMS notifications’ configuration

  • meetings: react to deleted users that participate in meetings

  • meetings: add timezone information to meeting templates

  • meetings: allow complete disabling of notifications

  • xmpp: provide connection information in hosts-meta files

  • sipmappings: assign SIP mapping on login from a pool

  • conflog: timezone information support for participants

  • billing: billing information service

  • user: return 409 on conflict when updating/creating instead of 403

  • wac: inform web app root URL via hosts-meta files

  • presence: ensure no duplicate subscriptions are created

  • db: do not recreate already-existing indexes on restart

  • mwi: send subscribe requests to SIP proxy on session recover

Bug fixes

  • users: fix updating mobile phone field

  • mwi: fix handling of new sessions

  • user: fix phone number normalization and remove duplicated country code

  • resolver: fix to allow resolving users with * in their username

v4.3.4

Bug fixes

  • meetings: stop parsing users meetings field

v4.3.3

Released 10/05/2021

Bug fixes

  • sipmappings: assign sipMapping automatically in login

  • sippools: change collection name to use md5 instead of plain domain

v4.3.2

Released 02/05/2021

No changes

v4.3.1

Released 28/05/2021

Bug fixes

  • QSS room-update event is not being sent when there is a ACL modification (QA-2276)

v4.3.0

Released 14/05/2021

New features and changes

Global

  • A new permissions service that allows to setup policies per domain and user and consume them via the REST API.

  • Added “screensharing” capability by default in the domain creation

  • An event speakerChanged is generated when a participant in a conference starts or stops speaking. This event can be consumed from the SDKs to provide this information to the rest of participants. Available in the Javascript SDK.

  • An event is generated when a participant starts/stops sharing his/her screen

Authentication

  • Added support for OpenID as an external authentication service

Deployment

  • New feature “Blue-Green deployment” that allows to have two enviroments in parallel. That means that it can be used to migrate users from existing environment to a new one in order to test that everything works properly. This migration can be done on a per user basis updating the info of the user by using the Service API.

Meetings

  • Ability to set and start time, end time and meeting password

Recording

  • New set of recording permissions that allow fine-grained control on who can record what

  • Three new levels of quality recording

  • Recordings can be provided merged or separately into single files.

Telephony and PBX

  • Added MWI (“Message Waiting Indicator”) integration with SIP-based external voicemail platforms. In addition, the voicemail SIP address is now also reachable via a generic destination string (“voicemail”).

Bug fixes

  • Fixed a bug that prevented SIP users to leave the conference room under some circumstances (QSS-284)

  • Unneeded Credentials added to STUN ICE servers in the Dispatcher (QA-1824)

  • Conference log update events are sent as many times as a user appears as candidate in a call (QA-1923)

  • Improve log line in QSS registry (FOEHN-591)

  • DataPipe export “symbol” instead of the proper enum (QA-1864)

  • Meeting PIN is not being send on the SMS (QA-1938)

  • Users removed from the system remain listed as members of the chat groups to which they belonged (QA-1942)

  • Active conferences has not an associated chat (QA-1921)

  • All alerts are displayed as send/received at current time when alerts tab is opened (QA-1943)

  • Push notifications (iOS): sound property must be set to default (QA-1854)

  • MWI does not sent sipMapping password in unregister (QUOBDEV-1059)

  • Wrapper restarts if the plugindata received is empty (QA-1749)

  • QSS-watchdog-registry stop working if database connection is lost (QSS-276)

  • An anonymous user can delete itself via API (SRV-1722)

  • Anonymous users can modify their own data via API (SRV-1723)

  • Alert iOS Pushes are not working properly (QUOBDEV-827)

  • Calls from the native app do not connect (QA-1668)

  • Push notifications of chat non-text messages are not received (QA-1658)

  • Contacts marked as favourite loose its value when reloading the browser (QA-1615)

  • Alert template parameters are set to “null” when updating any of their values (QA-1692)

  • Contacts API returns a 404 error when a user tries to update a contact (QA-1573)

Known issues

  • Users removed from the system remain listed as members of the chat groups to which they belonged (QA-1942)

  • Meeting PIN is not being send on the SMS (QA-1938)

  • Active conferences has not an associated chat (QA-1921)

  • The xmpp-server doesn’t connect to postgresql after an environment crash (QA-1863)

  • A malformed requests in erebus should respond with 400, not 500 (QA-1768)

  • Users can have its role changed to anonymous even if their domain doesn’t allow it (QA-1760)

  • Allow WAC to locally query itself instead of using public URL when validating an access token (QA-1761)

  • Credentials OpenAPI definition missing query parameter (QA-1762)

  • There are some users registered with multiple Firebase push tokens (QA-1755)

  • When a disconnected user’s ID is called, the call is redirected to PSTN (QA-1757)

  • The response codes are different depending if the callee is a pstn or a domain user (QA-1754)

Technical improvements

  • Updated restify to 8.5.1 to fix security vulnerabilities (QUOBDEV-824)

  • Automatically fix npm security vulnerable packages (QUOBDEV-823)

  • Drop apn dependency in the QSS (QUOBDEV-822)

  • Make addressbook service compatible with new static contacts service (QUOBDEV-819)

  • Deprecate old dnie service (ROAD-1328)

  • Deprecate old click2call service (ROAD-1327)

  • Deprecation of sippo-cob-static (ROAD-1326)

  • Wac <> xmpp events must be sent in chronological order (QUOBDEV-769)

  • Optimization of framerate for screensharing (SIPPOJS-739)

  • The inviteMany method should has the same behaviour than the regular invite

  • When groups are requested via the Addressbook service, the received id in the response is the groupId

v4.2.7

  • Temporary recording files are not deleted when configured to record in “audio only” mode (QA-1681)

v4.2.5

  • ConferenceLogs events were not being sent to the caller when the call was canceled (QA-1850)

  • Missing “sound” property default value for iOS notifications (QA-1854)

v4.2.0

Released 08/01/2021

New features and changes

  • A SIP load balancer service is now available to route incoming SIP calls to a pool of audiomixers using several call routing strategies (round robin, priority based, etc…) for better performance and scalability.

  • Support to SIP authentication using INVITE & REFER authentication has been added so to the SIP proxy.

  • A new service called “Erebus” has been included in the architecture. Erebus is an API gateway that implements a websocket multiplexer that enables clients to access all of the system services using just one single connection. It reduces login and setup time (less TLS handshakes) and reduces the required bandwidth. This new way of connecting to the server is backward compatible.

  • Three client websocket connections (into wrapper, sippo-server, and QSS services) have been multiplexed via Erubus into a single websocket connection. This change reduces significantly the call setup and connection setup times. More connections will be passed via Erebus in the upcoming versions.

  • Added a websocket keepalive message in the websocket connection from the clients in order to prevent the drop of the connection by a firewall. This ping message is automatically sent by the SDKs each 75 seconds and is answered by the system (wrapper service). The 75 seconds value is hardcoded and cannot be changed.

  • Asterisks are allowed as part of the username and alias fields.

Support to several redirect URIs in the oAuth2 authentication process in order to support several type of devices (desktop browser, mobile browser, native app, etc…) with a single oAuth2 host.

  • Added a new functionality “agent assigner” that allows the dispatching of incoming calls to a set of users depending on several criteria. The assignment decision can be taken by an external system (typically, a contact-center or PBX) or locally by the Quobis wac.

  • A “404 Not Found” SIP error code is sent as a failure message when user does not exist in the system or if the domain in the Request-URI does not match any of the domains handled by the recipient of the request, as defined in RFC-3261.

  • SDK clients can now register into a SIP or IMS network via a SIP REGISTER. A valid registration on the system will triger a delegated SIP registration into an external SIP network using the ims-credentials values. Please note that this configuration has been deployed in stand-alone configuration only.

  • Conference URLs path for public rooms is now configurable and set by default to htttps://wac-public-uri/c/public_room. This change has been done to isolate meeting URL from conference URLs

  • A major refactor has been made in order to provide a easiest way to manage and consume contact information. Some methods have been deprecated in the Javascript and iOS SDK. Two new services, “UserContacts” and “Addressbooks”, have been created as result of this refactor.

  • Support to “Lightweight Kubernetes K3s” deployments (www.k3s.io) in addition to standard Kubernets K8s deployment. K3s is a highly available, certified Kubernetes distribution designed resource-constrained systems. Quobis recommends k3s deployments for lab and testing deployments.

  • Deployment using docker-compose is no longer supported.

  • The audiomixer, SFU and SIP-proxy services are now running as pods inside the Kubernetes cluster.

  • K8s cluster can check the health status of the XMPP, o2p, sippo-server, wrapper, dispatcher and QSS containers.

  • A storage quota parameter (maxStorageQuota) can be set in the installation process via the Ansible installer. This parameter is optional, applies to the entire namespaced and defaults to 60GB for the disk space used by databases, uploaded files, chats and backups. It the parameter is removed, there is no space limitation.

  • Ability to configure the system to use dynamic TURN credentials to prevent fraudulent usage of the media server and DoS attacks. This functionality is configured by setting two new parameters in file quobis-dispatcher-config.js (“secret” and “expirationHours”)

  • Meetings can be optionally password-protected for better privacy and security. This password protecion applies both for system users and external users as well.

  • Meeting organizer automatically receives the meeting invitation email when the meeting is created.

  • Meeting URLs path for public rooms is now configurable and set by default to htttps://wac-public-uri/m/meeting_ID. This change has been done to isolate meeting URL from conference URLs

  • Added “VALARM” support into the attached ICS file of the meeting invitation emails as defined in RFC2445. That allows the calendar client to raise a reminder before the meeting starts. This time can be configured in the “remindBefore” parameters, which defaults to 10 minutes.

  • Join/leave group announcements are now available in the chat history.

  • Two different Callkit push certificates can be configured for the same APNs: one for VoIP pushes and another for chat pushes.

  • Mobile push notification payload now includes contact information of the caller party, following the standard order (contact name, display name, username and finally phone number) so the applications don’t need to resolve that information locally.

  • Added parameter “recordingType“ that allows the selection of which media streams are recorded: audio and video, only audio, only video or nothing at all.

  • Audio and video raw files used during the preprocessing phase are deleted from the temporary folders after they are successfully processed if the configuration parameter “clean_temporary_files” in config/config.json is set to true

  • Ability to set a client IP source ranges to be excluded from rate-limiting (configuration option: limit-whitelist). This is useful in some specific scenarios like contact-centers where most of the traffic is coming from the same IP range.

  • A password policy can now be set with some rules such as minimum length, minimum number of letters/numbers, lowercase/uppercase usage, symbols and spaces, password blacklist, etc…) in order to comply with ISO-27001 requirements. These policies are system-wide and can be configured at file config/passwordpolicies.json

  • Restricted avatar uploads to base64 format URI with images to prevent potential XSS attacks.

  • Added a homoglyph check to reject usernames that might look alike to the existing one, in order to avoid homograph attacks and typosquatting. For example, that happens where the Latin character “a” (Unicode U+0061) is replaced with the Cyrillic character “а” (Unicode U+0410)

Bug fixes

  • System was not taking into account the participants limit value when we have users with different media options (JW-63)

  • It was possible to create and domain with an empty domain name which leaded to a login failure (SRV-1692)

  • System does not start when the agent assigner services is enable and there are not agents defined (SRV-1674)

  • Meeting invitations are not sent to guests that are a user contact but don’t belong to the user’s domain (QUOBDEV-654)

  • Meeting invitations are not sent if the user domain is written completely with uppercase letters (QUOBDEV-651)

  • Calls transferred to a SIP destination caused a wrong entry in the conference log in parallel-SIP scenarios which also caused a crash in the iOS SDK (QSS-281)

  • Calls were not correctly setup after a redirection from one audiomixer to another with parallel-sip configuration and HA setup (QSS-288, QSS-234)

  • Users were allowed to set another username in uppercase as their alias (SRV-1610)

  • Incoming SIP that matched a wac-ims-credentials that starts with a (+) symbol were rejected (QSS-179)

  • Filters createdAtBefore and createdAtSince were not working as expected, as they used LessThanOrEqual or GreaterThanOrEqual filters rather than``LessThan`` and GreaterThan filters (SRV-1664)

  • The call does not progress when calling to a ringing group and the first user of the group is offline (QSS-266)

  • An ongoing call ends if the user logs out from another session (QSS-270)

  • Making a call to a user group with a space in its ID gets no answer and ends after a timeout (QUOBDEV-694)

Known issues

  • Service sippo-exporter crashes sending a GET to api/queues (DEVOPS-301)

  • Presence remains as “busy” if a user is in a call and the connection is closed abruptly (ASLO-33)

Technical improvements

  • Mobile push notification implementation has been completely redesigned in order to comply with the last iOS policies and to accomodate both hybrid and native applications. All push notifications are now sent from the sippo-server services, including chat notifications which were previously sent by the XMPP server.

  • Unify user group events into a single one (group-updated)

REST API

New features and changes

  • REST API documentation is now described using the OpenAPI format.

  • Added /kmanage/k8s/getlogs endpoint to gain get logs of an specific pod (kubectl logs <pod-name>)

  • Added endpoint /kmanage/loglevel to set the log level of /kmanage endpoints between levels “Info”, “Warn”,”Error”,”Debug” and “Trace” without service restart

  • Added two endpoints to manage system backups:

    • /kmanage/backups/getbackups: lists all backup file available in the system

    • /kmanage/backups/downloadbackups: download available backup files

  • Added endpoint /kmanage/reporting/getreport that gets reports of the last 24 hours.

  • Added endpoint /kmanage/siponhold to obtain conference object from roomId and sent it to the audiomixer service to implement a SIP reINVITE

  • Added several endpoint for the “Agent assignment” functionality:

    • /kmanage/agentassigner/list that gets every agent assigner entries

    • /kmanage/agentassigner/delete/{id} that deletes and agent assigner element

    • /kmanage/agentassigner/showroute/{id} that shows the route of this entry at the agent assigner

    • /kmanage/agentassigner/addroute that creates a new route to the agent assigner element

  • Added endpoint UserContacts for better contact management.

  • Added endpoint AddressBooks for better contact management.

  • Added endpoint /kmanage/template to get swagger template file in JSON format

  • Added several endpoints to gain visibility over the Kubernetes cluster status:

    • /kmanage/k8s/clusterstate: lists the cluster state (kubectl get pods -o wide)

    • /kmanage/k8s/clusterservices: lists the running services (kubectl get svc --all-namespaces -o wide)

    • /kmanage/k8s/getlogs: gets logs of a specific pod (kubectl logs <pod-name>)

  • Added boolean field isPasswordProtected to the meeting object that indicates if a meeting is protected by a password.

  • Added query parameter userId to filter meetings to which an specific user has been invited.

  • Added endpoint /kmanage/xmpp-server/getuserschat that returns a list of users with sent chats and the number of sent chat by each user (1-by-1 chats and group chats)

  • Added an endpoint to delete sent chats by an specific user (/kmanage/xmpp-server/deleteuserchats)

  • Endpoint /xmpp/roster/{username}: replaced by full subset:

    • xmpp/push

    • xmpp/push/register

    • /xmpp/push/unregister

  • Endpoint /pushNotifications/{userId} replaced by `/pushNotifications/byUserId/{userId}:

  • Added endpoint /kmanage/getrecord to list all recording files available in the system.

  • Added endpoint /kmanage/downloadrecord to download a recording file.

  • Added endpoint /kmanage/usergroup/logout to force logout of every participant of a given user group.

  • Added endpoint /kmanage/user/location to obtain the location of a user.

Bug fixes

  • Information exposure through error message on /sapi/o/token (SEC-59)

  • Unauthenticated user could query presence information via /sapi/presence/wac-user (SEC-61)

  • Log message returned in response to endpoints credentials and domains (SEC-68)

  • Potential denial of service on /sapi/sessions requests that results in “504 Gateway time-out” after around three minutes (SEC-62)

  • Information leakage in /sapi/filesharing endpoint (SEC-69)

v4.1.0

New features

  • Global improvements regarding the internal work of the system. The unified system based on a message-broker allows to add more services and remove them easily, giving more flexibility to the architecture. The main change comes from latency optimization, based on a ws-proxy that allows a unique system connection with better and improved performance.

  • Regarding monitoring software it was enhanced with log view and troubleshooting filters navigation. No more consoles to extract logs. Just use the logs, cross metrical performance KPIs data with direct container logs and get your info easy and direct.

  • Attended transfer (available only in the Javascript SDK in this version).

  • TLS 1.3 support is included. Your apps are now more secure, more efficient, more reliable.

  • NGINX was selected as ingress-controlled for the cluster, so some enhances here from the original Traefik media

  • SIP early media support and more options regarding the codec selection and media bandwidth allocation for calls. Also were applied some audio improvements to reduce audio-noise on calls.

  • Meetings now include more options to add flexibility to the meeting invites. REST API was improved to support more use cases

  • Improved and resolved multiple issues with chat notifications.

  • Ability to reach SIP endpoints for anonymous users.

  • Add error logs in QSS when “resolvePush” is set to true and it is not possible to reach Push service in sippo-server

  • CDR (call detail record) display and download in Sippo manager

  • Integrate services logs viewer in Sippo manager

  • Generic filter in /conferences/ endpoint to retrieve list of conferences

  • Screen sharing support in the desktop application

  • Allow more than 9 video participants on a conference

  • Prevent certain types of files (JS, HTML and any potentially harmful type) from being transferred (filetransfer)

  • Avoid credentials being leaked by SAPI endpoints

  • CORS configuration mechanism

  • Backend server resource reach-ability service

  • Transition from Socket.io to plain Websocket

  • Apply traffic security and anti-DoS measures to k8s ingress (nginx)

  • Support to multiple audiomixers (high availability)

  • Include the busy tone when call is rejected

  • Background noise reduction techniques in SippoSDK-JS and webphone

  • Provide audio toggle for mobile applications

  • Ability to change the default bandwidth of the video flows

  • Early media support with sippoMS.sfu

  • Automatic SMS / email notification to users when creating a meeting

  • Improve mail templates for more customization on body and headers

  • Chat / call / SIP agent assigner (SDK, REST endpoint)

  • Migrate XMPP storage to SQL based system

  • Ability to enable/disable “conference chats” in Application Server

  • Group chat push notifications -

  • Restrict registration to a single endpoint

  • Add REFER support on the SIP integration

  • SIP/WebRTC: On hold music for held participants

  • Add SIP header manipulation for AudioMixers

v4.0.0

The list below shows the overview of the main features added since the previous version at each category. A detailed list is provided in the next subchapter.

New features

  • The internal architecture has been separated into Sippo AS and Sippo MS. Besides that, new features have been implemented as a number of microservices -interconnected by a high performance message broker- to improve resilience and scalability.

  • On the client side, two new mobile SDKS have been added for iOS and Android operating systems.

  • Sippo manager has been released to provide better logging and monitoring capabilities. Logs can also now be sent to an external ElasticSearch server for analytics and troubleshooting.

  • Added delegated authentication against Microsoft ADFS servers and upgraded Google oAuth to work with newer Google versions

  • Added a number of PBX-like features such as ringing groups, attended transfer, unattended transfer, onHold, etc… That means that Sippo wac can provide signalling capabilities on its own, without requiring a third-party PBX o SIP backend.

  • A new service named “conferencelog” allows also to retrieve the conferences where a user has participated, including those where multiple participants are joining and leaving during the conference and also including low-level information on invited participants, rejected and accepted invites, transferred users, etc..

  • Integration with external SIP backend has been also improved with a “SIP parallel leg” approach. That means that service providers can easily add collaboration to exiting voice-only networks.

  • Room management is more powerful in this version, as it’s possible to mix and match PSTN users, Sippo users and guest users in the same room. We’ve also changed the associated logic so room ownership is now handled in a more efficient way.

  • Phonebook service has been added to better handle shared contacts and group contacts. In addition to personal contacts and domain contacts, administrators can now define a set of contacts that are assigned to specific users or groups. Users can also manage their own private phonebooks in addition to the ones created by the administrator. Improved mobile and directory synchronization of contacts is also included in this version.

  • Deployment over Docker infrastructure is now fully supported and it’s the recommended deployment choice for trials and PoCs. Automation has been done with Ansible scripts that don’t require any manual installation. On the other hand, deployment over Kubernetes infrastructure is now the default choice for production environments. Deployments over public cloud are now also supported in Amazon AWS and Microsoft Azure.

  • On the testing side, a number of load testing scripts and functionality testing scripts are available using third-party QA tools, in order to test the deployment before production.

  • Sippo MS has been included into the architecture so a third-party WebRTC media server is now an optional choice. This media server can handle H264, VP8 codecs and is also able to interact with traditional voice networks using G711 codecs.

  • This version also enables screen sharing from Chrome and Firefox without requiring a plugin (desktop only).

  • Meetings have been refactored to make them more flexible and manageable, so that they can have a DDI assigned to access the meeting from PSTN or PBX (dial-in).

  • This version incorporates a completely redesigned messaging service, that allows to have permanent chat between users, personal chat rooms, predefined chat rooms and other improvements. It also adds new user capabilities so administrators can allow or disallow messaging functions to users and user groups. That means for example that some user can have chat functions or are able to create groups, while others cannot do that.

  • Mobile notification have been improved both on iOS Callkit and Android Callservice, with deeper integration with the existing javascript SDK and the new native SDKs. One to one Incoming chat messages are also notified with a push message.

  • This version allows to configure codec specifications for stored recorded file. In addition, new integration options with storage services allows to actively notify about a file ready to be stored (or share with participants).

  • Users can now be classified into groups (usergroups). That allows new use case such as to define ringing groups to call all participants of a predefined group, and also to have predefined phonebooks.

  • Connector to AD/LDAP for oAuth authentication

  • Ability to delegate authentication with Google oAuth

  • Ability to delegate authentication with MS ADFS

  • Domains can have default contacts that are searchable to every domain user

  • Added abstraction layer to support different database schemas

  • Ability to distribute Sippo AS and MS microservices into several hosts

  • Ability to customize recording video container

  • Recording support for h264 and vp8

  • Added “SIP parallel leg” functionality to interop with SIP networks

  • Sippo manager: user management (create, edit, update, delete)

  • Sippo manager: dashboard with business KPI and system status graphics

  • Send audio and video clips

  • Ability to send DTMFs on the SIP channel on conferences (RFC2833 and RFC4733)

  • Added “Agent assigner” service to interact with external services in contact-center scenarios.

  • Toggle camera support for SippoSDK-JS and SippoSDK-iOS

  • Ephemeral chat group for anonymous rooms

  • Support for getNativeDisplayMedia: Firefox, Chrome

  • Recording support for H264 and VP8

  • REST conference status exposition

  • Support to transfer of PSTN calls to other Sippo users or PSTN

  • Improved security login mechanism

  • Improved signalling headers to identify “to” field in parallel-SIP environments

  • oAuth2 tokens can have now a expiration time and argument name

  • Support to remote logging into an Elastic Search instance

  • User alias enhances: editable by waccli and allow dots in users’ aliases regular expression

  • This version of the REST API has a number of new methods in order to allow external systems to interact with the new backend functionalites available in this realease, specially around conference management, user management and phonebook management.