Files
im_server/docs/thecard-CN.md
T
2026-08-11 15:59:57 +08:00

64 lines
2.7 KiB
Markdown

# theCard: 人物/话题描述格式
Tinode 使用 `theCard` 存储和传输人物和话题的描述。该格式概念上类似于 [vCard](https://www.rfc-editor.org/rfc/rfc6350.txt) 3.0。
当使用 `JSON` 表示 `theCard` 数据时,其方式与 [jCard](https://tools.ietf.org/html/rfc7095) 不同。`theCard` 和 `jCard` 不兼容。主要区别是 `theCard` 使用对象表示逻辑相关数据,而 `jCard` 使用有序数组。
`theCard` 结构为对象:
```js
{
fn: "John Doe", // 字符串,人物或话题的格式化名称。
photo: { // 对象,头像照片;必须有 'data' 或 'ref',其他字段可选。
type: "jpeg", // 字符串,MIME 类型但去掉 'image/'。
data: "Rt53jUU...iVBORw0KGgoA==", // 字符串,base64 编码的二进制图片数据
ref: "https://api.tinode.co/file/s/abcdef12345.jpg", // 字符串,图片 URL。
width: 512, // 整数,图片宽度(像素)。
height: 512, // 整数,图片高度(像素)。
size: 123456 // 整数,图片大小(字节)。
},
note: "Some notes", // 字符串,人物或话题的描述。
//
// 以下字段目前没有任何已知客户端实现:
//
n: { // 对象,人物的结构化名称。
surname: "Miner", // 姓氏或姓或家族名。
given: "Coal", // 名字或名。
additional: "Diamond", // 额外名称,如中间名或父名。
prefix: "Dr.", // 前缀,如荣誉头衔或性别标识。
suffix: "Jr.", // 后缀,如 'Jr' 或 'II'。
},
org: { // 对象,人物或话题所属的组织。
fn: "Most Evil Corp", // 字符串,组织的格式化名称。
title: "CEO", // 字符串,人物在组织中的职位。
},
comm: [ // 对象数组,定义与人物或话题的通信方式。
{
des: ["home", "voice"], // 联系标识,可选。
proto: "tel", // 通信协议,必需
value: "+17025551234" // 电话号码。
},
{
des: ["work"],
proto: "email",
value: "alice@example.com", // 电子邮件地址
},
{
des: ["other"],
proto: "tinode",
value: "tinode:topic/usrRkDVe0PYDOo", // tinode ID URI,可包含服务器地址。
},
{
proto: "http", // 应用于 http 或 https 网站地址。
value: "https://tinode.co", // 网站实际地址。
}, ...
],
bday: { // 对象,人物生日。
y: 1970, // 整数,年
m: 1, // 整数,月 1..12
d: 15 // 整数,日 1..31
},
}
```
所有字段都是可选的。Tinode 客户端目前只使用 `fn`、`photo`、`org`、`note`、`comm` 字段。如果将来需要其他字段,将从相应的 [vCard](https://www.rfc-editor.org/rfc/rfc6350.txt) 字段采用。