mirror of
https://github.com/element-hq/synapse.git
synced 2024-11-21 17:15:38 +03: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
|
||||
|
||||
m.room.message types
|
||||
--------------------
|
||||
- m.text
|
||||
- m.emote
|
||||
- m.audio
|
||||
- m.image
|
||||
- m.video
|
||||
- m.location
|
||||
m.room.message msgtypes
|
||||
-----------------------
|
||||
Each ``m.room.message`` MUST have a ``msgtype`` key which identifies the type of
|
||||
message being sent. Each type has their own required and optional keys, as outlined
|
||||
below:
|
||||
|
||||
``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
|
||||
========
|
||||
|
@ -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
|
||||
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
|
||||
account. The home server may provide many different ways of logging in, such
|
||||
|
|
Loading…
Reference in a new issue