自定义消息

TUIKit 默认实现了文本、图片、语音、视频、文件等基本消息类型的发送和展示,如果这些消息类型满足不了您的需求,您可以新增自定义消息类型。

基本消息类型

消息类型
显示效果图
文本类消息



图片类消息



语音类消息



视频类消息



文件类消息




自定义消息

如果基本消息类型不能满足您的需求,您可以根据实际业务需求自定义消息。
自定义消息预设样式
显示效果图
超文本类消息

评价类消息

订单类消息


下文以发送一条可跳转至浏览器的超文本作为自定义消息为例,帮助您快速了解实现流程。

1. 思考需要自定义的数据

对于一条可以跳转至其他网站的消息,需要一段描述文字和一个 url 链接。
import { TUIChatService } from "@tencentcloud/chat-uikit-engine";

const sendCustomMessageParams = {
payload: {
data: JSON.stringify({
text: '欢迎加入腾讯云大家庭',
url: 'https://cloud.tencent.com/document/product/269'
}),
description: "text_with_link",
extension: "text_with_link"
},
};

// 模拟发送一条自定义消息
TUIChatService.sendCustomMessage(sendCustomMessageParams)
.catch(err => { /** */ });
发送自定义消息,具体请参考 ChatEngine 接口文档

2. 创建可以解析自定义数据的组件

这里创建一个 CustomMessage 组件,当消息的类型是自定义消息且消息的扩展字段等于上面定义的 text_with_link 时,我们可以自定义渲染内容;如果是其他类型的消息,使用默认的 Message 组件进行渲染。
import { TUIChatService, TUIChatEngine } from '@tencentcloud/chat-uikit-engine';
import { UIKitProvider, Message } from '@tencentcloud/chat-uikit-react';

function CustomMessage(props: React.ComponentProps<typeof Message>) {
if (props.message.type === TUIChatEngine.TYPES.MSG_CUSTOM) {
const { data, extension } = props.message.payload;
if (data && extension === 'text_with_link') {
const { text, url } = JSON.parse(data);
return (
<div style={{
backgroundColor: 'lightblue',
padding: '10px',
borderRadius: '10px',
}}
>
<div>{text}</div>
<a href={url} target="_blank" rel="noopener noreferrer">
Jump to
</a>
</div>
);
}
}
return <Message {...props} />;
}

function ChatApp() {
return (
<UIKitProvider language="auto" theme="light">
<div style={{ display: 'flex', height: '100vh' }}>
<ConversationList />
<MessageList Message={CustomMessage} />
</div>
</UIKitProvider>
);
}

export default ChatApp;