Message
A message is the indevidual text, audio or image sent within a Conversation.
Task Chat Branch APIThese details are only updated with each release, for more acurate updates and keeping track of progress, see the task in GitHub.
- Feature Details
- Research
- User Details
- Features
- Data
- Endpoint
Status
| Owner | Lead | Phase One | Backend Lite | Frontend Lite | Phase Two | Backend | Frontend | |
|---|---|---|---|---|---|---|---|---|
| Dev Status | In Progress | In Progress | ||||||
| Version | 0.01 | |||||||
| Release | Internal | |||||||
| Phase | Alpha | |||||||
| Channels | ||||||||
| Team | Mendy | Luiz |
Description
A message is a very powerful feature, while it may seem simple, there are numiruse types of messages and each type supports other types (e.g. a text is aduio dubs and audio is trascribed), see the features section for details.
Reminders
Links & Resources
Research
the research listed here is spesifict to the Chat feature, for research related to the general Colibri development see the Research document.
Technical
Question - Can we use BackBone Media api or do we need to build a new communications api? Answer -
Conclusion - How do we get data from arenas to form the arena layout and map the devices?
Sources
- [test]
Business
User Stories
Persona One
Update Coming Soon
As a busy user I don’t want to watch but rather listen to a podcast, however, when I hear a voice I don’t recognize, I want to take a glance at my phone to see a name and/or photo of who is talking or maybe ask the built-in “AI/assistant”.
Flows
Types
These are feature that expand the type of messages that can be sent, some are mirly a visual chnage, a state or status of a message and some are stand alone features.
-
Text
Create an api to allow apps to add thier own actions in the place of the voice and live actions
-
Image
-
Audio
Allow the user to recored and send a audio (aka voice note) Colibri will instantly transcribe it and send a text along with it.
-
Video
-
Poll
-
Link
-
Asset (Sharing from their assets)
-
Post
A post simply chnages the UI to look like a social media post, it sipports all other types of messages within a post.
-
Call Recording After a call end, we auto send the call recording and transcription.
-
Event
-
Group
-
Contact When a user shares a contact wither from their phone or from within Colibri.
-
Location
-
Live Location
-
Gif
-
Emogi
-
Call Link/Reqest
-
Attachments / file
-
Walkie
sending a wakie offers the user a push to talk button, the reciving user has to accept and set the duration for how long it is active (1h, 2h, etc) the user can set always active in the conversation settings and/or in the contact.
Elements
These are not standalone or sub-features, these are backed into the message feature.
- Timestamp Show the user when they reviced or sent the message (Addicinal timestamps in the Read Recipt feature).
- encryption + indecator All messages should be encripted and show the user an indecator that it is encrypted
- read recipit Show the user whthere the resipiant(s) has/have recived, read the message, for business messages also see if/how many time it was forwarded, a link was opened, etc.
- RCS messages that are sent to phone numbers that are not a user on Colibri show if it is using RCS or text.
Features
Below is a list of features that will be utilized in order to deliver the best account features and functionalities. The details bellow are not comprehensive feature details but rather, describe how the features will be utilized within the account, for further details, please see the individual feature documentation.
States
- Composing Most messages are composed within the Colibri bar, in some cases the user is provided with extra UI to compose easer, regardless of the UI, we need a "Compose" state for the UI, the data and the backend.
- Draft if the user does not complete the message it should be auto saved as a draft.
- Scedualed the user can choose to scheduele the message to be sent/posted later.
- Sent
- Recives
- read
- Selected selected is only a frontend state that will show the options.
Elements
-
Sent Options
- Copy
- Edit
- Quete
- Reactions (emojis, stickers, etc)
- mark unread
- star This is for the user only
- pin (24h, keep on board) this is public to anyone in the group, channel, etc
- create task
- copy text
- copy link
- send feedback the user can send feedback to Colibri if a message isn't showing right or has a bug
-
Linnet Options
- Vote/feedback Provide feedack about the Linnet respose
- Share share only this message and the related prompt (show an option to share full conversation)
- Response Details details about how Linnet composed the responce, why and with what sources
- Listen allow the user to listen to the response
- Highlight select a section of text and ask more details around it or ask for source
- Quote
- Report
- Branch
- Forward
- Thread
- reactions
- mark unread
- star
- pin (24h, keep on board)
- create task
- copy text
- copy link
- send feedback
-
Direct Options
- Forward
- Listen
- Highlight/selected quote (select a section of text and ask Linnet)
- Quote
- Report
- Branch
- Thread
- reactions
- mark unread
- star
- pin (24h, keep on board)
- create task
- copy text
- copy link
- send feedback
-
Group Options
- Forward
- Thread
- reactions
- mark unread
- star
- pin (24h, keep on board)
- create task
- copy text
- copy link
- send feedback
- Share
- Response Details
- Listen
- Highlight/selected quote (select a section of text and ask more details around it in a quote)
- Quote
- Report
- Branch
On the document we want to keep all the important data, the first fetch and fast to access, all secondary data should be stored on a subcollection and fetch sepratly (if this is cost sfective)
User Accounts should be a top level collection, each account will generate a new document within the "Accounts" collection.
Messages
- Content
- - Content 1
- - - type (Text, thread, Audio, Post, Immage, Attchment, emoji, etc) (offer a few default options that the client can configure as well as custome options or offer numbered types and allow te client to give each type a title, this will enable the client to offer difrent feature or access levels based on account types)
- - - encryption
- - - status (true, false)
- - - code
- - - type
- - - created (date)
- - - modified
- - - status (true, false)
- - - timestampe
- - - userId
- - - previusViersion
- - - timezone
- - - langages
- - - transcription
- - - assetLink
- - - threadId
- - - replyToId
{
"reply": "Alice and Bob, here are the top dishes to try in Paris...",
"message": {
"id": "1740000000000",
"role": "assistant",
"content": "Alice and Bob, here are the top dishes to try in Paris...",
"timestamp": "2026-03-03T12:00:00.000Z"
}
}