Skip to content
Snippets Groups Projects
  1. May 16, 2024
  2. Feb 06, 2024
  3. Jan 24, 2024
  4. Jan 09, 2024
  5. Nov 23, 2023
  6. Jul 26, 2023
  7. Jun 30, 2023
  8. Jun 21, 2023
  9. Jun 20, 2023
  10. May 18, 2023
  11. Apr 28, 2023
  12. Mar 17, 2023
  13. Mar 09, 2023
  14. Feb 15, 2023
  15. Dec 27, 2022
  16. Sep 15, 2022
  17. Aug 08, 2022
  18. Aug 02, 2022
  19. Jul 28, 2022
  20. Jul 07, 2022
  21. Jun 22, 2022
  22. Jun 05, 2022
  23. May 23, 2022
  24. Apr 13, 2022
  25. Apr 06, 2022
  26. Feb 22, 2022
    • Kevin Aleman's avatar
      [NEW] VoIP Support for Omnichannel (#23102) · 550bfb00
      Kevin Aleman authored
      * Initial voip support and services creation
      
      * remove livechat references
      
      * remove livechat references
      
      * [NEW] SIP Integration (#23142)
      
      * Initial commit for SIP code
      
      * Adding SIP library framework for doing VoIP.
      
      * Clickup Tasks : https://app.clickup.com/t/7qdnh4
      Description : Adding sip.js node dependency. Hence committing package.json and package-lock.json
      
      * Clicup Task : https://app.clickup.com/t/7qdnh4
      
      
      Description :
      1. Added level based logging class.
      2. Added necessary logs in different files.
      3. Added comments on important functions.
      
      * Update client/components/voip/RegisterHandlerDelegate.ts
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * Clickup Tasks : https://app.clickup.com/t/7qdnh4
      Description:
      Handling code-review comments.
      1. Renamed delegate interface classes and files. Prefixed I before the name.
      2. Removed unused files.
      3. Renamed User.ts to VoIPUser.ts to avoid confusion.
      4. Added interface for voip configuration.
      5. Side effect changes in VoIPLayout.ts because of the above changes.
      
      * Clickup Tasks : https://app.clickup.com/t/7qdnh4
      Description : Converting javascript files to typescript files.
      
      * Clickup Tasks : https://app.clickup.com/t/7qdnh4
      
      
      Description : Added missing return type for a function.
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * [NEW] Voip: Permissions (#23134)
      
      * Create new set of livechat permissions for voip
      
      * Update app/authorization/server/startup.js
      
      Co-authored-by: default avatarRenato Becker <renato.augusto.becker@gmail.com>
      
      * Move EE permissions to EE
      
      * Apply suggestions from CR
      
      Co-authored-by: default avatarRenato Becker <renato.augusto.becker@gmail.com>
      
      * [NEW] Sidebar section with VOIP call-available icon (#23203)
      
      * create voip call icon in omnichannel section
      
      * upgrade fuselage version
      
      * remove success prop
      
      * phone-disabled icon
      
      * [NEW] Add new Endpoints to manage VoIP server configs (#23239)
      
      * create voip server config collection in DB + modify interfaces
      
      * Add new endpoints to fetch management and server-config info
      
      * Add new endpoints to add or update voip server configs
      
      * Add translations + move serverName property to IVoipServerConfig interface
      
      * Remove VoipServerConfiguration DB model and rely on DB Raw module to create collection
      
      * archive server configs instead of completely deleting them upon update/insert
      
      * Add comment for future scope
      
      * Apply suggestions from code review
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * Apply suggestions from code review
      
      * remove deactive logic from endpoint
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * [NEW] Framework for connecting to asterisk (#23251)
      
      * Clickup task : https://app.clickup.com/t/7qerzq
      Description:
      1. Adding connector framework
      2. interface for connecting to asterisk manager interface.
      3. Added Endpoint handling command which can query list of endpoints and details of a single endpoint.
      4. Added REST APIs to access the connecter.
      6. Moved logger to ./lib and changed the corresponding paths
      
      * Clickup task : https://app.clickup.com/t/7qerzq
      Description:
      1. Fixed lint error in Logger.
      2. Commented hardcoded server path for timebeing as this code will not be used directly.
      
      * Clickup task : https://app.clickup.com/t/7qerzq
      Description:
      1. Added new API in asterisk-connector to get the registration information.
      2. Used this API for registering the demo endpoint.
      3. Added a new interface for the return types of the connector.
      4. Modified Command and PJSIPEndpoint to add a declaration for the multiple return types as a result of executeCommand
      5. Modified CommandHandler to to add a declaration for the multiple return types as a result of executeCommand
      
      * Clickup task : https://app.clickup.com/t/7qerzq
      Description:
      Deleting unnecessary code.
      
      * Clickup task: https://app.clickup.com/t/7qerzq
      Description:
      1. Handled code review comments.
      2. Modified client side logging classname and file name. Imported new classname and filename
      in the client code.
      3. Moved server side logging to Pino based logging. Earlier it was using the same logger
      that was used in the client.
      4. Removed optional methods from the interfaces and removed unnecessary |undefined| checks from
      the method calls.
      
      * Clickup task: https://app.clickup.com/t/7qerzq
      Description:
      Fixed some old style logging statements. They were missed to be replaced in the previous commit.
      
      * [NEW] Adding Queue management code for fetching ACD queue summary, queue details and calls waiting in the queue (#23371)
      
      * Clickup task : https://app.clickup.com/t/7qex83
      Description:
      1. This commit, at its base, adds a functionality to fetch the calls waiting in the queue for a given extension.
      For this, it adds a new command object in server/services/voip/connector/asterisk/ami called |ACDQueue|.
      ACD queue is capable of fetching various queue parameters such as queue summary, details of a particular queue (Members of a given queue)
      It also provides a set of new APIs for fetching queue summary |queues.getSummary| and fetching the calls waiting in the queue
      |queues.getCallWaitingInQueuesForThisExtension|.
      
      2. Beyond this it also modifies the connector architecture a bit.
      The reason for this change is that, it was observed that the AMI library does not have a way to turn off event handling.
      Event handling gets turned off only when the connection to Asterisk AMI socket is disconnected. That may not be desirable.
      So to avoid this, the architecture is changed as follows :
      a. Connection registers for all management events.
      b. Each command object registers the callback context for each manager event that it is interested in.
      c. Connection (AMIConnection) goes thru the list of registered callbacks for a particular event. If it finds an array
      of registered Callback contexts, it goes on calling each callback in the array.
      d. Once the expected data is received, the command object unregisters the callback context. It is removed from the handler list for a particular
      event.As a result of this design change existing command objects |PJSIPEndpoint| have been changed too to adapt to this arch change.
      
      3. Removed hardcoding from extensions.ts. Now it reads the callserver information from the database, which was
      hardcoded earlier.
      
      * Clickup task : https://app.clickup.com/t/7qex83
      Description:
      1. Fixed review comments.
      2. Simplified some nested ifs suggested in review comments.
      3. Added new consolidated type IVoipConnectorResult to contain either of the result to avoid
      growing function signature as suggested in the comment.
      4. Made necessary changes in REST API files which were necessary as above changes
      created some side-effects.
      
      * Clickup task : https://app.clickup.com/t/7qex83
      
      
      Description:
      1. Fixed code-review comments.
      
      * Update app/api/server/v1/voip/extensions.ts
      
      Fixed.
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * Update app/api/server/v1/voip/extensions.ts
      
      Fixed
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * [NEW] Making connector as a part of VoipService and removing earlier hardcoding for management server (#23571)
      
      * Clickup Task : https://app.clickup.com/t/7qeq76
      
      
      Description :
      Some background :
      Issue#1 : CommandHandler class is an entry point to a connector to Asterisk. This command handler had hardcoded values till the APIs and database for the management API was getting ready.
      Once it got ready there was a need to change it and use the database values. This design change is triggered by this need.
      The aim for the re-design was that all the API access should happen via voip service. It was realised that |CommandHandler| gets created (Because it is declared globally in REST APIs) before the Voip service gets initialised. And because of this fact, CommandHandler does not get to read the values as the service has not yet started and initialised |VoipServerConfiguration|.
      
      To fix this issue, |CommandHandler| has to be created after service and should be accessible only via service. So it has been moved to Voip service. Few more points to consider here is that
      CommandHandler::initConnection may not work always. When Voip is getting used for the first time, the server values (management and callserver) will be empty. One has to add those values using the admin interface. So CommandHandler::initConnection failure should not cause server to crash. So errors from CommandHandler::initConnection should be written in logs and the code should move ahead.
      
      Issue#2 : Some design refinements have been done. The intelligence in the REST APIs have been reduced. While building the code connector was exposed outside. Now connector is contained within the
      service. Service contains all necessary implementation. The necessary changes have been done to support this architectural change.
      
      Considering these points, following changes have been done.
      1. Voip rest APIs which use CommandHandler (Queue and extension APIs) now query for the CommandHandler instead of creating it.
      2. server-config.ts REST API for adding management interface reinitialises the connection after adding a management interface.
      3. On the server side, Voip Service interface has been changed, to have new methods. Voip service and CommandHandler is changed to adapt to the design mentioned above.
      4. Log level change in AMIConnection file.
      5. Modified the IVoipService interface to contain all the necessary methods and changed service.ts to have the implementation.
      
      * Update server/services/voip/service.ts
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * Clickup Task : https://app.clickup.com/t/7qeq76
      Description :
      Fixing review comments.
      
      * Clickup task : https://app.clickup.com/t/7qeq76
      
      
      Description:
      Fixing review comments.
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * [NEW] : Registering SIP user agent on click event of the phone button on sidebar (#23550)
      
      * Clickup task : https://app.clickup.com/t/du0e8p
      
      
      Description :
      This code manages the registering of SIP endpoint on a button click on the side bar. To achieve this, following things needs to be considered.
      1. Voip User Object will be used by multiple UI components. e.g Register and Incoming call component need to use this component.
      2. Once initialised, it will remain in the context till the Agent UI is active.
      3. Voip user object uses callback mechanism to notify about different events such as incoming call, call establishment and call termination.
      
      Design alternatives and decisions:
      1. Placement of Voip User Object : It was earlier thought that it might make sense to add this object in its own Context and be managed by its own context provider. Voip object makes REST API calls. The requirement is also that, it must get initialised before sidebar/sections/Omnichannel.tsx comes to life. Hence (Considering my current knowledge of code), it must have got created before Omnichannel provider. Which means that OmnichannelProvider must be a child for Voip, which is not true as Omnichannel provider is not dependent on the creation of VoIP. So for timebeing, the Voip user object has been placed in |OmnichannelContext| and initialised in |OmnichannelProvider|.
      2. Callbacks vs waiting on Promise: Most of the code in the repository is written without use of any callbacks. So there was a thought on if we could write this code without using callback. But considering the nature of voip calls and the way of using sip.js, it was more natural to write it using emitters and callbacks. There are multiple events happen when the call is received or dialed out. e.g Call getting established (This is must to handle becuase the call may fail because of some codec mismatch), call getting terminated. etc. Waiting for each of such promise and managing the state on UI client would have been a tricky job.
      
      Current Design :
      1. A simple wrapper |SimpleVoipUser| is written on top of more feature rich class |VoIPUser|. This class should be able to provide what we need in our omnichannel voip.
      2. This |SimpleVoipUser| class is a part of |OmnichannelContext| and gets initialised in |OmnichannelProvider|. |OmnichannelContext| also contains |extensionConfig|, which is the necessary information needed for registering the extension.
      3. In |OmnichannelProvider|, function initVoipLib is used for fetching necessary values using the REST API. |extensionConfig| and |SimpleVoipUser| objects get initialised there and they are ready to be used when |OmnichannelProvider| is loaded.
      4. Media elements for rendering local and remote streams have been pulled out from |VoIPUserConfiguration|. They are converted in to a type |IMediaStreamRenderer|. The reason is that the configuration is passed when the component gets initialised. But because the calling component is going to be different, media elements will not be available during the creation of |SimpleVoipUser| (Which in turns needs these media elements for creating |VoIPUser|). So instead of passing it as a part of |VoIPUserConfiguration|, it can be passed as an argument to the constructor of |VoIPUser| if that information is available during the creation time, or can be passed in acceptCall function. Newly passed |IMediaStreamRenderer| replaces the old value if the old one is passed in the constructor.
      5. |VoIPLayout| uses this new way of creating the Voip user objects and demonstrates how it will be used.
      
      * Update client/components/voip/SimpleVoipUser.ts
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * Update client/components/voip/SimpleVoipUser.ts
      
      Fixed.
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * Clickup task : https://app.clickup.com/t/du0e8p
      Description : Fixing code review comments.
      
      * Clickup task : https://app.clickup.com/t/du0e8p
      Description: Fixing review comments.
      
      * Clickup task: https://app.clickup.com/t/du0e8p
      Description: Remove the hardcoding for ICE servers. Now we pull it from the admin
      settings. The setting Id is 'WebRTC_Servers'.
      
      * Clickup task: https://app.clickup.com/t/du0e8p
      Description:
      Fixing LGTM issue.
      
      * Clickup task : https://app.clickup.com/t/du0e8p
      Description : Fixing the issues post merging. Few thing were changed in the parent repo.
      This workspace is for taking those changes in account.
      
      * Clickup task : https://app.clickup.com/t/du0e8p
      
      
      Description :
      Fixing review comments.
      1. Toggled the logic for the register icon.
      when it is registered, icon should be green. i.e success and grayed out when not registered.
      2. When it is registered, the icon should be of a phone. On clicking this, it would unregister, which will change the icon to striked out phone.
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * [NEW] VoIP admin section (#23837)
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * Fixing merge related issues with develop branch. (#23893)
      
      * [NEW] : API endpoints for Agent-Extension Association and Database changes (#23736)
      
      * Clickup task : https://app.clickup.com/t/7qee1v
      
      
      Description : This commit adds the required APIs and permissions to run these APIs for following :
      1. Create agent-extension association. (Access to admin)
      2. Get extension associated with given agent name. (Access to agent, admin and manager)
      3. Delete extension of a given agent. (Access to admin)
      4. List all free extensions. (Access to admin)
      5. Get the list of agent-extension association. (Access to admin)
      
      It adds necessary functions in the omnichannel-voip service and adds corresponding types.
      
      In the database, it adds a new field |extension| to existing meteor |users| document.
      
      * Update server/services/omnichannel-voip/service.ts
      
      Co-authored-by: default avatarMurtaza Patrawala <34130764+murtaza98@users.noreply.github.com>
      
      * Clickup task : https://app.clickup.com/t/7qee1v
      Description:
      Fixing code review comments.
      
      * Clickup task : https://app.clickup.com/t/7qee1v
      
      
      Description : Review comments.
      Removed the Voip code from traditional model and put it in raw model for user.
      Changed the REST layer accordingly.
      
      * Update server/services/omnichannel-voip/service.ts
      
      Fixing review comment
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * Update app/api/server/v1/voip/omnichannel.ts
      
      Makes sense. Fixed.
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * Clickup task : https://app.clickup.com/t/7qee1v
       Description : Review comments.
      
      * Clickup task : https://app.clickup.com/t/7qee1v
      Description : Review comments.
      
      * Clickup task : https://app.clickup.com/t/7qee1v
      Description : This commit adds a new api omnichannel/extension?type=available&username=<username>
      This API returns the all the available extensions for a given username. Which mean, if the user has
      extesion allocated, available list will also contain this associated extension.
      
      * Clickup task : https://app.clickup.com/t/7qee1v
      Description: Fixing review comments.
      
      * Clickup task : https://app.clickup.com/t/7qee1v
      
      
      Description: Fixing review comments.
      
      Co-authored-by: default avatarMurtaza Patrawala <34130764+murtaza98@users.noreply.github.com>
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * fix eslint issues
      
      * fix lgtm alert
      
      * Fix permission style
      
      * create migration to add voip permissions
      
      * fix pipeline
      
      * [NEW] Livechat voip/contexts providers and components(#23801)
      
      * Wip
      
      * WIP on Call Component
      
      * Add disabled state component
      
      * Paused and timer components
      
      * Lint
      
      * Toolbox Button Colors
      
      * Tooltips
      
      * Use Sidebar components
      
      * WIP Refactor
      
      * small refactor
      
      * Refactor voip Layout to use Fuselage Components
      
      * Fix lint/ts
      
      * Bump
      
      * Fix wrong section name
      
      * Lint
      
      * voip endpoint ts
      
      * Created Call Context
      
      * WIO
      
      * fix visual
      
      * Fix after merge develop
      
      * Create an Error handler
      
      * Fix TS
      
      * Fix martin
      
      * Fix stringtoice function
      
      * Fix wrong type
      
      * Reject call button
      
      * Update fuselage
      
      * Use Portal for AudioTag and small improvements
      
      * fix lint
      
      * Lint
      
      * Improvements to audio element and media ref usage
      
      * Code cleanup
      
      Revamp file structure, remove some loggers, remove some test files, and fix linting
      
      * Fix TS and remove more loggers
      
      * Lint
      
      * Fix reviews, remove test code and comments
      
      * wip
      
      * Lint & Prettier
      
      * Lint
      
      * fix error
      
      Co-authored-by: default avatarGuilherme Gazzo <guilhermegazzo@gmail.com>
      
      * [NEW] Implementation of a call feature Hold-unhold (#24140)
      
      * Clickup task : https://app.clickup.com/t/7qdt7t
      Description :
      This commit handles hold-unhold call feature. When the call gets hold, the far-end should hear
      music on hold. The agent should not hear the agent.
      Hold-unhold feature results in the renegotiation of call.
      The media direction is changed to sendonly and recvonly.
      
      Following files have been changed
      1. client/lib/voip/VoIPUser.ts : This file implements core logic of hold-unhold. Call hold is possible only when the call is currently going on or the answer is sent. Function handleHoldUnhold implements
      reinvite, which is sent to the far end for handling the hold-unhold.
      2. client/lib/voip/Helper.ts : This is a new file which implements enabling/disabling the media streams when the call is put on hold.
      3. definition/voip/CallStates.ts : ON_HOLD state is added to existing call states.
      4. definition/voip/VoIpCallerInfo.ts : VoIpCallerInfo type is extended for the ON_HOLD state.
      5. definition/voip/VoipEvents.ts : hold, holderror, unhold, unholderror events have been added to communicate the call hold state.
      6. packages/rocketchat-i18n/i18n/en.i18n.json : Held_call translation has been added. This will be used when the call is put on hold.
      7. client/providers/CallProvider/CallProvider.tsx : pause resume actions have been associated with the correct functions from voipClient.
      
      * adjust some types
      
      * small fix VoiceController
      
      * fix typeguards
      
      * Clickup task : https://app.clickup.com/t/7qdt7t
      
      
      Description:
      Removing unused translation for hold-unhold
      
      Co-authored-by: default avatarTiago Evangelista Pinto <tiago.evangelista@rocket.chat>
      
      * [FIX] Return correct registration state in connector.extension.list API (#24129)
      
      * [FIX] Workaround for use of the default settings collection (#24095)
      
      * [FIX] Cleaning up some hard coding in the Voip code. (#24247)
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * Chore: Code quality changes to extension management
      
      * [NEW] VoIP buttons to mute and hold the call (#24421)
      
      * mute and hold
      
      * fix stories
      
      * popover => tooltips
      
      Co-authored-by: default avatarMartin <martin.schoeler@rocket.chat>
      
      * [NEW] Composer not available on phone calls component (#23475)
      
      * [NEW] Create voip room on call received (#23897)
      
      Co-authored-by: default avatarpierre-lehnen-rc <55164754+pierre-lehnen-rc@users.noreply.github.com>
      Co-authored-by: default avataramolghode <amol.ghode@gmail.com>
      Co-authored-by: default avataramolghode1981 <86001342+amolghode1981@users.noreply.github.com>
      Co-authored-by: default avatarPierre Lehnen <pierre.lehnen@rocket.chat>
      
      * [NEW] Livechat Voip RoomType (#24484)
      
      * [NEW] VoIP room chat header (#24510)
      
      * voip room
      
      * visitor logic
      
      * fix noo js
      
      * end
      
      * fix build errors
      
      * fix
      
      * room start header
      
      * \n
      
      * [NEW] Livechat voip/queue events (#24180)
      
      * Draft workspace for call server monitor.
      
      * Draft workspace for call server monitor. Using Event notification mechanism to notify the clients.
      Implements strategy for notifying source queue (While the agent is riniging) and Calls in queue
      
      * Fix issue with duplicated notifications on client
      
      * Started adding support for 3 more events, QueueMemeberAdded, QueueMemberRemoved and QueueCallerAbandon
      
      * Fixing errors.
      
      * Use user extension to fetch queue details
      
      * Clickup Task : https://app.clickup.com/t/21fekdx
      Description: This PR implements continuous monitor in the asterisk connector.
      Asterisk continuously generates a stream of events on various activities. Management
      server user defined in asterisk's manager.conf determines the events to be sent on this user.
      
      This PR's main focus is to find out calls in the queue and source queue of a call.
      To do this, it monitors following events
      
      queuecallerjoin (For finding out the source queue of a call)
      agentcalled (for calls in the queue)
      agentconnect (for calls in the queue)
      queuememberadded (for calls in the queue)
      queuememberremoved (for calls in the queue)
      queuecallerabandon (for calls in the queue)
      
      The client is going to create an aggregator which will be responsible for the events which cause change in |calls waiting in the queue|
      The aggregator will always have the latest 'calls waiting in the queue'
      
      * Clickup Task : https://app.clickup.com/t/21fekdx
      Description : Fixing build issues.
      
      * Clickup Task : https://app.clickup.com/t/21fekdx
      Description : Adding agentconnect event. Refactored some duplicated code.
      
      * QoL changes
      
      * Remove endpoints for call server management
      
      * remove import to old server mgmnt endpoints
      
      * Clickup Task : https://app.clickup.com/t/21fekdx
      Description : Handling review comments.
      1. Added database object as compulsory field to Command's constructor.
      2. Resetting handlers for new events.
      
      * https://app.clickup.com/t/21fekdx
      
      
      Description:
      1. Added queue wait time to the agentconnect event.
      2. Fixed the socket disconnection issue happening after 30 seconds. Asterisk closes the socket after 30 seconds
      if it does not receive any message. Added some code in client/lib/voip/VoIPUser.ts which will send
      SIP OPTIONS message. After sending this message, there is no disconnection.
      
      * Listen to asterisk events and store them on DB for validation
      
      * Fix type error on storepbxevent
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * [IMPROVE] Add pagination and extra info to extensions endpoint (#24473)
      
      Co-authored-by: default avataramolghode <amol.ghode@gmail.com>
      
      * fix available extension fetching when user doesnt have extension associated
      
      * [NEW] Voip rooms endpoint (#24527)
      
      * Add OTR sysmessages to Imessage enum
      
      * Fix issue with date params affecting end results
      
      * [NEW] Detect the abrupt disconnection of agent's client while in call to close the room (#24563)
      
      * Clickup Task : https://app.clickup.com/t/22c968v
      
      
      Description :
      When the agent disconnects abruptly, the room should be closed. But because the agent is sitting on browser, agent will not be
      able to do these things gracefully. The reason is that the browser may just crash or the agent just forces the tab close or refresh (Even though we prevent
      it on client side)
      
      So the solution is to detect this scenario on server and close the associated room. When such forceful tab close happens, Asterisk sends AMI event
      'ContactStatus' where the field contactstatus = 'Removed'
      
      We will handle the ContactStatus event and if the contactstatus is removed, we will gracefully close the room on server.
      
      Changes
      1. Added new Event definition for ContactStatus event.
      2. Added event handling function for this event in ContinuousMonitor.ts
      
      * Handle agent unexpected disconnection events
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * Fix server crashing on sending events before room init
      
      * Listen and broadcast hangup event (#24571)
      
      * [NEW] Voip Wrap Up Modal (#24566)
      
      * [NEW] Connectivity check between RC and asterisk (#24408)
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * [NEW] Voip settings (#24535)
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      Co-authored-by: default avataramolghode <amol.ghode@gmail.com>
      Co-authored-by: default avataramolghode1981 <86001342+amolghode1981@users.noreply.github.com>
      Co-authored-by: default avatarTiago Evangelista Pinto <tiago.evangelista@rocket.chat>
      
      * [NEW] voip contact center (#24561)
      
      * Prep work: Type files needed for the feature
      
      * Auto stash before merge of "new/livechat-voip-contact-center" and "origin/new/livechat-voip"
      
      * Wip
      
      * Wrapping up
      
      * No console logs
      
      * Fix ts
      
      * fix types
      
      * remove unnecessary commented code
      
      * Fix conflicts with v.phone prop
      
      * Fix ts signature
      
      * Update client/views/omnichannel/directory/calls/Call.tsx
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * Fix issues with rooms endpoints
      
      * Fix reviews
      
      * Fix storing and calculation of some timers
      
      * Its late toniight
      
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * [NEW] SidebarFooter Calls in Queue counter (#24543)
      
      * calls in queue
      
      * Fix lint && ts
      
      Co-authored-by: default avatarMartin Schoeler <martin.schoeler@rocket.chat>
      
      * [NEW] Introduce CallInfo component in contextual-bar for VoIP (#24257)
      
      * wip
      
      * voip room
      
      * visitor logic
      
      * fix noo js
      
      * end
      
      * fix build errors
      
      * fix en
      
      * fix
      
      * wip
      
      * events
      
      * Update app/livechat/server/api/v1/visitor.ts
      
      Co-authored-by: default avatarMartin Schoeler <martin.schoeler@rocket.chat>
      
      * fixes
      
      * add moment
      
      * fix duplicate type
      
      * almost there
      
      * fix
      
      * Fix events relation to call
      
      * Create VoipRoomType server file
      
      * Remove logs and stale code
      
      Co-authored-by: default avatarMartin Schoeler <martin.schoeler@rocket.chat>
      Co-authored-by: default avatarKevin Aleman <kevin.aleman@rocket.chat>
      
      * [FIX] Conflicts between develop and new/livechat-voip (#24582)
      
      Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
      Co-authored-by: default avatardougfabris <devfabris@gmail.com>
      Co-authored-by: default avatarTasso Evangelista <tasso.evangelista@rocket.chat>
      Co-authored-by: default avatarRobot LingoHub <robot@lingohub.com>
      Co-authored-by: default avatarDiego Sampaio <chinello@gmail.com>
      Co-authored-by: default avatarJúlia Jaeger Foresti <60678893+juliajforesti@users.noreply.github.com>
      Co-authored-by: default avatarDouglas Gubert <douglas.gubert@gmail.com>
      Co-authored-by: default avatarlingohub[bot] <69908207+lingohub[bot]@users.noreply.github.com>
      Co-authored-by: default avatarMurtaza Patrawala <34130764+murtaza98@users.noreply.github.com>
      
      * well
      
      * Fix todos, create migration, remove stale code and comments
      
      Co-authored-by: default avataramolghode1981 <86001342+amolghode1981@users.noreply.github.com>
      Co-authored-by: default avatarRenato Becker <renato.augusto.becker@gmail.com>
      Co-authored-by: default avatarTiago Evangelista Pinto <tiago.evangelista@rocket.chat>
      Co-authored-by: default avatarMurtaza Patrawala <34130764+murtaza98@users.noreply.github.com>
      Co-authored-by: default avatarMartin Schoeler <martin.schoeler@rocket.chat>
      Co-authored-by: default avataramolghode <amol.ghode@gmail.com>
      Co-authored-by: default avatarGuilherme Gazzo <guilhermegazzo@gmail.com>
      Co-authored-by: default avatarpierre-lehnen-rc <55164754+pierre-lehnen-rc@users.noreply.github.com>
      Co-authored-by: default avatarPierre Lehnen <pierre.lehnen@rocket.chat>
      Co-authored-by: default avatardependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
      Co-authored-by: default avatardougfabris <devfabris@gmail.com>
      Co-authored-by: default avatarTasso Evangelista <tasso.evangelista@rocket.chat>
      Co-authored-by: default avatarRobot LingoHub <robot@lingohub.com>
      Co-authored-by: default avatarDiego Sampaio <chinello@gmail.com>
      Co-authored-by: default avatarJúlia Jaeger Foresti <60678893+juliajforesti@users.noreply.github.com>
      Co-authored-by: default avatarDouglas Gubert <douglas.gubert@gmail.com>
      Co-authored-by: default avatarlingohub[bot] <69908207+lingohub[bot]@users.noreply.github.com>
      Unverified
      550bfb00
  27. Dec 29, 2021
  28. Nov 22, 2021
  29. Nov 10, 2021
  30. Aug 16, 2021
  31. Jun 30, 2021
  32. Jun 21, 2021
  33. Jun 07, 2021
  34. Jun 06, 2021
  35. Feb 04, 2021
  36. Jan 22, 2021
  37. Nov 12, 2020
  38. Oct 28, 2020
Loading