-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Chat feature #163
Comments
Rationale
The rationale is written from the perspective of eXo. In meeds there is no chat, so the rationale must be different. . Reasons for willing a chat in meeds are mainly for providing a real time conversation that is inexistant to date. Reasons for using Matrix protocol may be interoperability and the availability of bridges with popular chat services such as Discord. Please rewrite. Top User Stories except for the data storage, all stories describe the UI with text. Please include mockups for easier review. user stories as described do not allow to understand where the feature is inserted nor what persona is involved Configurability
|
I confirm. Let's discuss about it @Julien-Dubois-eXo as soon as you can of course |
It's normal I just do a copy/paste of the eIP to to have a base to discuss. I want to check some points with you @srenault-meeds before I submit it for review. |
@ahamdi could you please separate the technical part according to the functional part please? |
Thanks @Julien-Dubois-eXo My feedbacks:
I think you try to tell the folllowing:
FYI, I have added the fact that it will be opened in the same tab. WDYT?
Can we provide an other design? Something more accurate to a drawer and more fun?
Which emoji? From where?
Where will images be stored?
Do you plan to create a notification for this? |
@srenault-meeds as discussed I have updated the description. |
Go fonc. Thanks |
@boubaker Hi, the technical part is ready for the review, thanks |
Thanks for the technical details. Small remarks:
Two small questions about data modeling:
|
Done thanks
It is a good suggestion, The requirements evolved and we needed just to read the relationship between spaces and Matrix rooms in the beginning. Now there is a need to get a space by its room ID which is hard to query in Metadata service. I started to see a real need to create a new table for the association, I will update the specification this way.
All the chat data will be stored just in Matrix, on Meeds DB we will just have the association between users/spaces and Matrix rooms. |
Thanks @ahamdi I let you tell me when ready for review again. |
@boubaker MIP updated, thank you |
Rationale
The Meeds software doesn't provide a chat feature yet.
Yet, it is sometimes expected by users willing to:
Hence, the minimum is providing a chat option to users so they can:
1. Functional Requirements
Top User Stories
Bridge with third party chat
Thanks to the ability to create a bridge between the matrix server and the third party chat.
As a user,
Data storage
As a user, I can only go back one year in a chat conversation.
The data are deleted before that.
Conversation list
As a user, when I open the chat, I have:
The chat drawer displays at least 10 conversations before displaying a load more button. However, if the screen size is higher then I display as much as the screen size can before the load more.
When I have an unread conversation
I have no expand mode for the chat.
![Image](https://private-user-images.githubusercontent.com/105866381/379351675-0fbe8277-6dfb-441f-8b82-f0dd2c2fe4e0.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk5ODcxNjYsIm5iZiI6MTczOTk4Njg2NiwicGF0aCI6Ii8xMDU4NjYzODEvMzc5MzUxNjc1LTBmYmU4Mjc3LTZkZmItNDQxZi04YjgyLWYwZGQyYzJmZTRlMC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjE5JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxOVQxNzQxMDZaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kNDRjZWMyYzk4YmU0ZDFhZmU5YjBmMWZhMDBhYTViMTdmMTA5Y2U2ZTQxNmUwZTE4MDNlZDlmMzBmNjcxZDk1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.9CwZoSSm2grk2N-RUNLHURiTm8i_MYOH0L70sE-sJ9o)
Conversation
As a user, when I access a chat, the second level drawer opens with following behaviour:
When I go up in the conversation, an option is suggested so I can jump to the most recent message.
I can go back to the conversations list thanks to a back arrow.
Write a message
I can write messages with emoji (from emoji bank as in the feed) in the body and text
I can send images by clicking on a button or by doing a copy/paste or a drag and drop on the conversation.
The message has the following layout to help the readability:
Each message has a timestamp of the time. On hovering over I have the full date on a tooltip. If several messages are sent by the same user during the same minute, the time stamp is only on the last message and they are grouped together.
When the messages are sent on a different day, a time stamp separates the messages to let the user know the batch of messages by day
Impacts
Gamification
No impact
Notifications
Analytics
Measuring point "Send a message" to be adapt to track the actions on the new drawer.
Unified Search
2. Technical Requirements
Expected Volume & Performance
Security
Authentication & Authorizations
Matrix is an external server that provides APIs to interact with. All communication (API calls) should be secured with a token related to a user session. This session should be active (Not expired, not logged out, etc ...)
For the integration with Meeds, we will need to authenticate the user to Matrix server and get the access_token that will be used later to authenticate API calls
Administrative actions : This will require an access_token that could be generated once (session never expires). This token will be registered on server side using a System property. It could be improved to be registered using an administration UI.
User actions : This requires that the user log into Meeds and into Matrix simultaneously to get a fresh access token, and use it for the different user action during a chat session. This token will be registered on the browser storage and should be be expired/removed when the user session is expired. Generating the access_token could be done with one of the following authentication methods, in our case we will use JWT to provide the best UX for users.
Storage of Access token
Once retrieved The access token should be stored to avoid re-sending authentication requests. The token will be stored in the local storage of the browser
Data retention :
Each message should be kept for 1 year, This could be done using a server configuration
Extensibility
It is needed to add an extension point that could be used for displaying Call actions (Jitsi, etc ...) and other possible actions on the head of conversation
Configurability
New configuration introduced for :
Existing Features
Feature Flags
The Matrix addon will be a new addon that will have its own version history, thus we may install it whenever we want. No feature flag needed.
Other Non Functional Requirements
3. Impacts
Documentation
Installation guides should be updated for instructions to install the Matrix stack.
Training
No
4. Software Architecture
Security
Access
All HTTP Requests sent to the Matrix server should contain the access_token as a header to identify the user and get the right ACL
Services & processing
This backend service will be responsible of :
Notification systems
Data and persistence
Clustering
N/A
Multitenancy
N/A
Integrations
N/A
Migration strategy
N/A
5. Annexes
The text was updated successfully, but these errors were encountered: