# API

API 使用文档可以直接参考 [JMessagePlugin.js](../www/JMessagePlugin.js) 中的注释。

这里列出插件中会返回的各对象组成:

```js
UserInfo: {
    type: 'user',
    username: string,           // 用户名。
    appKey: string,             // 用户所属应用的 appKey。可与 username 共同作为用户的唯一标志。
    nickname: string,           // 昵称。
    gender: string,             // 'male' / 'female' / 'unknown'
    avatarThumbPath: string,    // 头像的缩略图地址。
    birthday: number,           // 日期的毫秒数。
    region: string,             // 地区。
    signature: string,          // 个性签名。
    address: string,            // 具体地址。
    noteName: string,           // 备注名。
    noteText: string,           // 备注信息。
    isNoDisturb: boolean,       // 是否免打扰。
    isInBlackList: boolean,     // 是否在黑名单中。
    isFriend:boolean            // 是否为好友。
}
```

```js
GroupInfo: {
    type: 'group',
    id: string,                 // 群组 id,
    name: string,               // 群组名称。
    desc: string,               // 群组描述。
    level: number,              // 群组等级,默认等级 4。
    owner: string,              // 群主的 username。
    ownerAppKey: string,        // 群主的 appKey。
    maxMemberCount: number,     // 最大成员数。
    isNoDisturb: boolean,       // 是否免打扰。
    isBlocked: boolean          // 是否屏蔽群消息。
}
```

```js
Conversation: {
    /**
    *   会话对象标题。
    *   如果为群聊:
    *       - 未设置群名称:自动使用群成员中前五个人的名称拼接成 title。
    *       - 设置了群名称,则显示群名称。
    *   如果为单聊:如果用户有昵称,显示昵称。否则显示 username。
    */
    title: string,
    latestMessage: Message, // 最近的一条消息对象。
    unreadCount: number,    // 未读消息数。
    conversationType: 'single' / 'group',
    target: UserInfo / GroupInfo    // 聊天对象信息。
}
```

## Message

```js
TextMessage: {
    id: string,                     // 消息 id。
    type: 'text',                   // 消息类型。
    from: UserInfo,                 // 消息发送者对象。
    target: UserInfo / GroupInfo,   // 消息接收者对象。可能是用户或群组。
    createTime: number,             // 发送消息时间。
    text: string,                   // 消息内容。
    extras: object                  // 附带的键值对对象。
}
```

```js
ImageMessage: {
    id: string,
    type: 'image',
    from: UserInfo,
    target: UserInfo / GroupInfo,
    extras: object,
    thumbPath: string              // 图片的缩略图路径。要下载原图需要调用 `downloadOriginalImage` 方法。
}
```

```js
VoiceMessage: {
    id: string,
    type: 'image',
    from: UserInfo,
    target: UserInfo / GroupInfo,
    extras: object,
    path: string,                   // 语音文件路径。
    duration: number                // 语音时长
}
```

```js
LocationMessage: {
    id: string,
    type: 'voice',
    from: UserInfo,
    target: UserInfo / GroupInfo,
    extras: object,
    address: string,                // 详细地址。
    longitude: number,              // 经度。
    latitude: number,               // 纬度。
    scale:number                    // 地图缩放比例。
}
```

```js
FileMessage: {
    id: string,
    type: 'file',
    from: UserInfo,
    target: UserInfo / GroupInfo,
    extras: object,
    fileName: string             // 文件名。要下载完整文件需要调用 `downloadFile` 方法。
}
```

```js
CustomMessage: {
    id: string,
    type: 'file',
    from: UserInfo,
    target: UserInfo / GroupInfo,
    extras: object,
    customObject: object         // 自定义键值对对象。
}
```

```js
Event: {
    type: 'event',
    eventType: string,       // 'group_member_added' / 'group_member_removed' / 'group_member_exit'
    usernames: Array         // 该事件涉及到的用户 username 数组。
}
```