本文提供DataSDK的接口说明。

API

方法 请求参数 返回值 描述
subscribe Function(IStore Function 监听Store变更,实时得到最新数据
activeConv appCid Promise<Boolean> 激活选中会话
inactiveConv - Boolean 取消激活会话
removeLocalDismissedConv appCid void 移除本地Store中的已经解散的会话
listConversations - Promise<Number> 拉取最近会话列表
listPrevMsgs cursor、count Promise<Number> 拉取历史消息
listNextMsgs cursor、count Promise<Number> 拉取最新消息
updateTypingStatus isTyping、TypingType void 更新正在输入状态
sendTextMessage appCid、text Promise<void> 发送文本消息
sendCustomMessage appCid、CustomContentModel Promise<void> 发送自定义消息
sendPhotoMessage appCid、File Promise<void> 发送图片消息。 File:浏览器File对象,请参见File
sendLinkMessage appCid、LinkContentModel Promise<void> 发送链接消息
sendAtMessage appCid、ElementModel[] Promise<void> 发送@人消息
sendStructMessage appCid、StructContentModel Promise<void> 发送结构化消息
sendFileMessage appCid、File Promise<void> 发送文件消息。 File:浏览器File对象,请参见File

参数类型

名称 是否必选 类型 介绍
cursor String Store中的cursor
count Number 分页数
表 1. IStore
名称 是否必选 类型 介绍
appCid String 当前会话的会话ID
convIdList String[] 会话ID列表。按更新时间排序
convMap {[key: string]: UserConversationModel} 会话ID对应会话数据的Map
msgIdList String[] 消息ID列表,按发送时间排序
msgMap {[key: string]: UserMessageModel} 消息ID对应消息数据的Map
msgNextHasMore Boolean 是否有更新的消息可以加载
msgPrevHasMore Boolean 是否有历史消息可加载
msgNextCursor Boolean 加载新消息的cursor
msgPrevCursor Boolean 加载历史消息的cursor
msgLoading Boolean 是否正在加载消息列表数据
convLoading Boolean 是否正在加载会话列表数据
typingStatusMap { [cid: string]: TypingType } 当前会话是否正在输入
表 2. TypingType
枚举key 描述
text 0 文本
audio 1 音频
image 2 图片

代码示例

react-hooks

// hook 
import React from 'react'
import { DataSDk, initStore } from '../AIM'

export const useStore = () => {

    const [store, setStore] = React.useState(initStore)

    React.useEffect(function DidMount() {
        const storeUnsubscribe = dataSDk.subscribe((store) => {
            setStore(store)
        })
        DataSDk.listConversations(0, 20) // 默认拉取首屏
        return () => {
            storeUnsubscribe()
        }
    }, [])

    return [store, dataSDk]
}
// Chat 登录成功后渲染
import React, { useState, useCallback, FunctionComponent, useEffect } from 'react'

export const Chat: FunctionComponent<{}> = React.memo(() => {
    const [store, DataSDk] = useStore()
    // DataSDk.activeConv(cid) 激活会话
    return (
        <div id="chat">{JSON.stringify(store)}</div>
    )
 });