RingCentral MVP - Inserting Blast & API Messages into Team Conversations
Problem: Our integration with RingCentral MVP (UCaaS) is currently only aware of outgoing messages that are sent from within their application UI. They have no awareness of any outgoing messages that are sent outside of the RingCentral platform and so those do not get represented in the conversation history within the app. This is especially problematic for our clients who use the RingCentral app for the conversation experience but then also use Blast and/our our Public API to send messages.
Solution: We have created infrastructure that keeps track of outgoing messages by line, that originate outside of the RingCentral app. Rather than us posting those outgoing messages immediately into RingCentral (which in the case of a Blast, could create 1000s of unneccessary new message notifications), we put a check on incoming messages. When a new incoming message comes in, we check the collection of outgoing messages that were sent and see if any have not yet been posted to the specific conversation. If there are some that need to be posted, we will insert them into the conversation ahead of the incoming message. This will give the agent the full history and context of all messages in the conversation.
Platform Health - Data Access Mapping Optimizations
We have identified several areas within our platform that are due for optimizations to improve performance and efficiency. We have gone through our performance critical areas and updated the data access layer to use expressions instead of whatever other mapping method was implemented.
Expressions (in certain circumstances) can be much more performant because they allow us to pull back less data, make queries more efficient, etc.
We took before and after performance measurements and on average the impacted areas saw significant improvements (average of 150% faster).
Data Utility System | CRUDy
We created a new data utility infrastructure inside of CRUDy that will serve as the foundation for a number of functions that we need to execute across our platform. It is a new section within CRUDy with special permissions as these utilities will facilitate massive data changes on client accounts for specific purposes.
Line Transfer Utility
The first data utility we created was one that supports the transfering of outbound phone lines from one account to another. There are certain scenarios, especially in the salon space, where locations change ownership and so new accounts need to be set up to reflect the new ownership.
This utility will take the line specified and the new target account, and then in the background it will update the data associations for messages, conversations, user access, responders, etc. Since lines are the central point of our system, changing the account association of a line has far reaching effects, so the utility was designed to handle the sprawl, run on a queue, be fault tolerant, and display the job history and any error messages that need to be conveyed.
More data utilities will be built in the future for specific use cases, for example migrating data from our v1 platform to a client account on v2.
CRUDy | Line Integration Type of None
We had to introduce a new Integration Type of "None" to our system to support our direct customers who have multiple lines in their account, some of which are Blast only and should not get routed into conversations even if their is a response. This caused issues because for customers who only use the Blast product, they do not have the Conversation product enabled or visible. But for clients who have both, but at the line level only want certain lines to be Blast only and not create or route into Conversations, we did not have a reliable way to prevent that.
Now, for any client where we are setting up a Blast Only line, the Integration Type should be set to None. This simply means we do not do anything else (like create conversations).
Public API | Queue Conversation History Report
We are rolling out a new public API endpoint that allows clients/partners to queue a Conversation History report. This is our second most run report in the platform and is especially useful for our CCaaS clients who do not have inbox views that make it easy to quickly see past conversation history on conversations that are not in an active interaction.
Public API documentation will be updated early next week with all of the new Reporting API endpoints we have completed in the last few weeks.
Bug Fixes
HIGH - Consent Status Import Fails on Duplicates
MEDIUM - Line Opt In/Out Report Needs Optimization