1.8 KiB
1.8 KiB
私信
Matrix 中的所有通信都发生在房间内。有时,用户希望能够直接与某一个特定的人交流。本模块定义了一种方法,可以将某些房间标记为与指定对象的“私聊”。这并不意味着聊天只能局限于两个人之间,因为这会排除自动“机器人”用户,或者“个人助手”等替用户在其不在时回复私信的功能。
一个房间未必会被房间内所有成员视为“私聊”,但存在一种信号机制,用于向被邀请人传递聊天是否为“私聊”的信息。
事件
{{% event event="m.direct" %}}
客户端行为
要与其他用户发起私聊,邀请方的客户端应在 /createRoom
时设置 is_direct
标志。当用户操作的流程意图是与某人直接交流,而不是邀请该人加入一个公共房间时,客户端都应设置该标志。例如,用户在某个人的头像旁点击“开始聊天”时,意味着应设置 is_direct
标志。
被邀请方的客户端可以利用 m.room.member 事件中的 is_direct
标志自动将该房间标记为私聊,但这不是强制要求:客户端也可以弹窗提示用户,或完全忽略该标志。
邀请人和被邀请人的客户端都应通过在账户数据中存储一个 m.direct
事件,将该房间记为私聊,接口为 /user/<user_id>/account_data/<type>
。
服务端行为
当 /createRoom
接口中提供了 is_direct
标志时,所属服务器必须在 /createRoom
调用所邀请成员的邀请事件中设置 is_direct
标志。