mirror of
https://mau.dev/maunium/synapse.git
synced 2024-12-15 07:13:49 +01:00
Flesh out m.room.message msgtypes
This commit is contained in:
parent
7b079a26a5
commit
62dfa3c741
1 changed files with 101 additions and 9 deletions
|
@ -68,15 +68,108 @@ Non-state messages
|
||||||
|
|
||||||
What are they, when are they used, what do they contain, how should they be used
|
What are they, when are they used, what do they contain, how should they be used
|
||||||
|
|
||||||
m.room.message types
|
m.room.message msgtypes
|
||||||
--------------------
|
-----------------------
|
||||||
- m.text
|
Each ``m.room.message`` MUST have a ``msgtype`` key which identifies the type of
|
||||||
- m.emote
|
message being sent. Each type has their own required and optional keys, as outlined
|
||||||
- m.audio
|
below:
|
||||||
- m.image
|
|
||||||
- m.video
|
|
||||||
- m.location
|
|
||||||
|
|
||||||
|
``m.text``
|
||||||
|
Required keys:
|
||||||
|
- ``body`` : "string" - The body of the message.
|
||||||
|
Optional keys:
|
||||||
|
None.
|
||||||
|
Example:
|
||||||
|
``{ "msgtype": "m.text", "body": "I am a fish" }``
|
||||||
|
|
||||||
|
``m.emote``
|
||||||
|
Required keys:
|
||||||
|
- ``body`` : "string" - The emote action to perform.
|
||||||
|
Optional keys:
|
||||||
|
None.
|
||||||
|
Example:
|
||||||
|
``{ "msgtype": "m.emote", "body": "tries to come up with a witty explanation" }``
|
||||||
|
|
||||||
|
``m.image``
|
||||||
|
Required keys:
|
||||||
|
- ``url`` : "string" - The URL to the image.
|
||||||
|
Optional keys:
|
||||||
|
- ``info`` : "string" - info : JSON object (ImageInfo) - The image info for image
|
||||||
|
referred to in ``url``.
|
||||||
|
- ``thumbnail_url`` : "string" - The URL to the thumbnail.
|
||||||
|
- ``thumbnail_info`` : JSON object (ImageInfo) - The image info for the image
|
||||||
|
referred to in ``thumbnail_url``.
|
||||||
|
- ``body`` : "string" - The alt text of the image, or some kind of content
|
||||||
|
description for accessibility e.g. "image attachment".
|
||||||
|
|
||||||
|
ImageInfo:
|
||||||
|
Information about an image::
|
||||||
|
|
||||||
|
{
|
||||||
|
"size" : integer (size of image in bytes),
|
||||||
|
"w" : integer (width of image in pixels),
|
||||||
|
"h" : integer (height of image in pixels),
|
||||||
|
"mimetype" : "string (e.g. image/jpeg)",
|
||||||
|
}
|
||||||
|
|
||||||
|
``m.audio``
|
||||||
|
Required keys:
|
||||||
|
- ``url`` : "string" - The URL to the audio.
|
||||||
|
Optional keys:
|
||||||
|
- ``info`` : JSON object (AudioInfo) - The audio info for the audio referred to in
|
||||||
|
``url``.
|
||||||
|
- ``body`` : "string" - A description of the audio e.g. "Bee Gees -
|
||||||
|
Stayin' Alive", or some kind of content description for accessibility e.g.
|
||||||
|
"audio attachment".
|
||||||
|
|
||||||
|
AudioInfo:
|
||||||
|
Information about a piece of audio::
|
||||||
|
|
||||||
|
{
|
||||||
|
"mimetype" : "string (e.g. audio/aac)",
|
||||||
|
"size" : integer (size of audio in bytes),
|
||||||
|
"duration" : integer (duration of audio in milliseconds),
|
||||||
|
}
|
||||||
|
|
||||||
|
``m.video``
|
||||||
|
Required keys:
|
||||||
|
- ``url`` : "string" - The URL to the video.
|
||||||
|
Optional keys:
|
||||||
|
- ``info`` : JSON object (VideoInfo) - The video info for the video referred to in
|
||||||
|
``url``.
|
||||||
|
- ``body`` : "string" - A description of the video e.g. "Gangnam style",
|
||||||
|
or some kind of content description for accessibility e.g. "video attachment".
|
||||||
|
|
||||||
|
VideoInfo:
|
||||||
|
Information about a video::
|
||||||
|
|
||||||
|
{
|
||||||
|
"mimetype" : "string (e.g. video/mp4)",
|
||||||
|
"size" : integer (size of video in bytes),
|
||||||
|
"duration" : integer (duration of video in milliseconds),
|
||||||
|
"w" : integer (width of video in pixels),
|
||||||
|
"h" : integer (height of video in pixels),
|
||||||
|
"thumbnail_url" : "string (URL to image)",
|
||||||
|
"thumbanil_info" : JSON object (ImageInfo)
|
||||||
|
}
|
||||||
|
|
||||||
|
``m.location``
|
||||||
|
Required keys:
|
||||||
|
- ``geo_uri`` : "string" - The geo URI representing the location.
|
||||||
|
Optional keys:
|
||||||
|
- ``thumbnail_url`` : "string" - The URL to a thumnail of the location being
|
||||||
|
represented.
|
||||||
|
- ``thumbnail_info`` : JSON object (ImageInfo) - The image info for the image
|
||||||
|
referred to in ``thumbnail_url``.
|
||||||
|
- ``body`` : "string" - A description of the location e.g. "Big Ben,
|
||||||
|
London, UK", or some kind of content description for accessibility e.g.
|
||||||
|
"location attachment".
|
||||||
|
|
||||||
|
The following keys can be attached to any ``m.room.message``:
|
||||||
|
|
||||||
|
Optional keys:
|
||||||
|
- ``sender_ts`` : integer - A timestamp (ms resolution) representing the
|
||||||
|
wall-clock time when the message was sent from the client.
|
||||||
|
|
||||||
Presence
|
Presence
|
||||||
========
|
========
|
||||||
|
@ -203,7 +296,6 @@ requests to that home server as a query parameter 'access_token'.
|
||||||
|
|
||||||
- TODO Kegan : Make registration like login (just omit the "user" key on the
|
- TODO Kegan : Make registration like login (just omit the "user" key on the
|
||||||
initial request?)
|
initial request?)
|
||||||
- TODO Kegan : Allow alternative forms of login (>1 route)
|
|
||||||
|
|
||||||
If the client has already registered, they need to be able to login to their
|
If the client has already registered, they need to be able to login to their
|
||||||
account. The home server may provide many different ways of logging in, such
|
account. The home server may provide many different ways of logging in, such
|
||||||
|
|
Loading…
Reference in a new issue