mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-06-29 15:31:05 +08:00
feat: support wecom websocket channel (#16175)
Added WeCom chat channel websocket mode alongside the existing webhook mode, plus frontend support for selecting the connection type.
This commit is contained in:
@@ -1 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path fill="#07C160" d="M8.691 2.188C3.891 2.188 0 5.476 0 9.53c0 2.212 1.17 4.203 3.002 5.55a.59.59 0 0 1 .213.665l-.39 1.48c-.019.07-.048.141-.048.213 0 .163.13.295.29.295a.326.326 0 0 0 .167-.054l1.903-1.114a.864.864 0 0 1 .717-.098 10.16 10.16 0 0 0 2.837.403c.276 0 .543-.027.811-.05-.857-2.578.157-4.972 1.932-6.446 1.703-1.415 3.882-1.98 5.853-1.838-.576-3.583-4.196-6.348-8.596-6.348zM5.785 5.991c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 0 1-1.162 1.178A1.17 1.17 0 0 1 4.623 7.17c0-.651.52-1.18 1.162-1.18zm5.813 0c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 0 1-1.162 1.178 1.17 1.17 0 0 1-1.162-1.178c0-.651.52-1.18 1.162-1.18zm5.34 2.867c-1.797-.052-3.746.512-5.28 1.786-1.72 1.428-2.687 3.72-1.78 6.22.942 2.453 3.666 4.229 6.884 4.229.826 0 1.622-.12 2.361-.336a.722.722 0 0 1 .598.082l1.584.926a.272.272 0 0 0 .14.047c.134 0 .24-.111.24-.247 0-.06-.023-.12-.038-.177l-.327-1.233a.582.582 0 0 1-.023-.156.49.49 0 0 1 .201-.398C23.024 18.48 24 16.82 24 14.98c0-3.21-2.931-5.837-6.656-6.088V8.89c-.135-.01-.27-.027-.407-.03zm-2.53 3.274c.535 0 .969.44.969.982a.976.976 0 0 1-.969.983.976.976 0 0 1-.969-.983c0-.542.434-.982.97-.982zm4.844 0c.535 0 .969.44.969.982a.976.976 0 0 1-.969.983.976.976 0 0 1-.969-.983c0-.542.434-.982.969-.982z"/></svg>
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1781754070064" class="icon" viewBox="0 0 1229 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2789" xmlns:xlink="http://www.w3.org/1999/xlink" width="240.0390625" height="200"><path d="M690.8 828.8c-72 28.8-148.8 33.6-225.6 28.8-33.6-4.8-67.2-9.6-100.8-19.2-4.8 0-9.6 0-14.4 4.8-43.2 19.2-86.4 43.2-124.8 62.4-14.4 9.6-28.8 9.6-43.2 0s-14.4-24-14.4-43.2c9.6-33.6 9.6-67.2 14.4-100.8 0-4.8-4.8-9.6-4.8-14.4-48-48-86.4-96-115.2-158.4-48-115.2-38.4-230.4 28.8-336C158 137.6 263.6 75.2 388.4 46.4S633.2 32 748.4 89.6c105.6 52.8 182.4 134.4 216 249.6 14.4 43.2 19.2 86.4 14.4 129.6-24-24-52.8-28.8-81.6-14.4 0-28.8 0-57.6-9.6-86.4-19.2-67.2-57.6-120-105.6-163.2-81.6-67.2-182.4-96-288-96-110.4 9.6-206.4 48-283.2 124.8-62.4 62.4-96 139.2-91.2 230.4 4.8 76.8 38.4 139.2 86.4 192l38.4 38.4c19.2 14.4 24 28.8 14.4 48-4.8 19.2-9.6 43.2-14.4 62.4 0 4.8-4.8 9.6 0 9.6 4.8 4.8 9.6 0 9.6 0 24-14.4 52.8-28.8 76.8-48 14.4-9.6 28.8-9.6 48-4.8 81.6 24 168 24 249.6 0 4.8 0 9.6-4.8 9.6 4.8 9.6 28.8 24 48 52.8 62.4z" fill="#0082EF" p-id="2790"></path><path d="M1170.8 732.8c0 33.6-24 57.6-52.8 62.4-48 9.6-86.4 28.8-120 62.4-9.6 9.6-14.4 9.6-24 4.8-4.8-4.8-4.8-14.4 0-24 33.6-33.6 52.8-76.8 62.4-120 4.8-33.6 38.4-52.8 72-52.8 38.4 4.8 62.4 33.6 62.4 67.2z" fill="#0081EE" p-id="2791"></path><path d="M926 992c-33.6 0-62.4-24-67.2-52.8-4.8-48-28.8-86.4-62.4-115.2-4.8-4.8-9.6-9.6-4.8-19.2 4.8-14.4 14.4-14.4 24-9.6 9.6 4.8 14.4 14.4 19.2 19.2 28.8 24 62.4 38.4 96 43.2 33.6 4.8 57.6 38.4 52.8 72 4.8 33.6-24 62.4-57.6 62.4z" fill="#FA6202" p-id="2792"></path><path d="M671.6 742.4c0-33.6 19.2-57.6 52.8-67.2 48-9.6 86.4-28.8 120-62.4 9.6-9.6 19.2-9.6 24 0 4.8 4.8 4.8 14.4-4.8 24-28.8 28.8-48 62.4-57.6 105.6 0 4.8 0 14.4-4.8 19.2-9.6 33.6-38.4 52.8-72 48-33.6-4.8-57.6-33.6-57.6-67.2z" fill="#FECD00" p-id="2793"></path><path d="M1002.8 574.4c14.4 28.8 28.8 52.8 48 72 9.6 9.6 9.6 19.2 4.8 24-4.8 9.6-14.4 9.6-24 0-24-28.8-57.6-48-91.2-57.6-9.6-4.8-19.2-4.8-28.8-4.8-19.2-4.8-38.4-14.4-43.2-38.4-9.6-24-9.6-48 9.6-67.2 19.2-24 43.2-28.8 67.2-24 24 9.6 43.2 24 48 52.8 0 14.4 4.8 28.8 9.6 43.2z" fill="#2CBD00" p-id="2794"></path></svg>
|
||||
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.2 KiB |
1
web/src/assets/svg/chat-channel/wexin.svg
Normal file
1
web/src/assets/svg/chat-channel/wexin.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path fill="#07C160" d="M8.691 2.188C3.891 2.188 0 5.476 0 9.53c0 2.212 1.17 4.203 3.002 5.55a.59.59 0 0 1 .213.665l-.39 1.48c-.019.07-.048.141-.048.213 0 .163.13.295.29.295a.326.326 0 0 0 .167-.054l1.903-1.114a.864.864 0 0 1 .717-.098 10.16 10.16 0 0 0 2.837.403c.276 0 .543-.027.811-.05-.857-2.578.157-4.972 1.932-6.446 1.703-1.415 3.882-1.98 5.853-1.838-.576-3.583-4.196-6.348-8.596-6.348zM5.785 5.991c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 0 1-1.162 1.178A1.17 1.17 0 0 1 4.623 7.17c0-.651.52-1.18 1.162-1.18zm5.813 0c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 0 1-1.162 1.178 1.17 1.17 0 0 1-1.162-1.178c0-.651.52-1.18 1.162-1.18zm5.34 2.867c-1.797-.052-3.746.512-5.28 1.786-1.72 1.428-2.687 3.72-1.78 6.22.942 2.453 3.666 4.229 6.884 4.229.826 0 1.622-.12 2.361-.336a.722.722 0 0 1 .598.082l1.584.926a.272.272 0 0 0 .14.047c.134 0 .24-.111.24-.247 0-.06-.023-.12-.038-.177l-.327-1.233a.582.582 0 0 1-.023-.156.49.49 0 0 1 .201-.398C23.024 18.48 24 16.82 24 14.98c0-3.21-2.931-5.837-6.656-6.088V8.89c-.135-.01-.27-.027-.407-.03zm-2.53 3.274c.535 0 .969.44.969.982a.976.976 0 0 1-.969.983.976.976 0 0 1-.969-.983c0-.542.434-.982.97-.982zm4.844 0c.535 0 .969.44.969.982a.976.976 0 0 1-.969.983.976.976 0 0 1-.969-.983c0-.542.434-.982.969-.982z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -540,12 +540,41 @@ export const ChatChannelFormFields: Record<ChatChannelKey, FormFieldConfig[]> =
|
||||
},
|
||||
],
|
||||
[ChatChannelKey.WECOM]: [
|
||||
{
|
||||
label: 'Connection Type',
|
||||
name: 'config.credential.connection_type',
|
||||
type: FormFieldType.Select,
|
||||
required: true,
|
||||
defaultValue: 'webhook',
|
||||
options: [
|
||||
{ label: 'Webhook', value: 'webhook' },
|
||||
{ label: 'WebSocket', value: 'websocket' },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: 'Bot ID',
|
||||
name: 'config.credential.bot_id',
|
||||
type: FormFieldType.Text,
|
||||
required: true,
|
||||
placeholder: 'AIBOTID',
|
||||
shouldRender: (values: any) =>
|
||||
values?.config?.credential?.connection_type === 'websocket',
|
||||
},
|
||||
{
|
||||
label: 'Secret',
|
||||
name: 'config.credential.secret',
|
||||
type: FormFieldType.Password,
|
||||
required: true,
|
||||
placeholder: 'App Secret / Long-connection Secret',
|
||||
},
|
||||
{
|
||||
label: 'Corp ID',
|
||||
name: 'config.credential.corp_id',
|
||||
type: FormFieldType.Text,
|
||||
required: true,
|
||||
placeholder: 'ww1234567890abcdef',
|
||||
shouldRender: (values: any) =>
|
||||
values?.config?.credential?.connection_type !== 'websocket',
|
||||
},
|
||||
{
|
||||
label: 'Agent ID',
|
||||
@@ -553,18 +582,16 @@ export const ChatChannelFormFields: Record<ChatChannelKey, FormFieldConfig[]> =
|
||||
type: FormFieldType.Number,
|
||||
required: true,
|
||||
placeholder: '1000001',
|
||||
},
|
||||
{
|
||||
label: 'Secret',
|
||||
name: 'config.credential.secret',
|
||||
type: FormFieldType.Password,
|
||||
required: true,
|
||||
shouldRender: (values: any) =>
|
||||
values?.config?.credential?.connection_type !== 'websocket',
|
||||
},
|
||||
{
|
||||
label: 'Token',
|
||||
name: 'config.credential.token',
|
||||
type: FormFieldType.Password,
|
||||
required: true,
|
||||
shouldRender: (values: any) =>
|
||||
values?.config?.credential?.connection_type !== 'websocket',
|
||||
},
|
||||
{
|
||||
label: 'AES Key',
|
||||
@@ -572,6 +599,8 @@ export const ChatChannelFormFields: Record<ChatChannelKey, FormFieldConfig[]> =
|
||||
type: FormFieldType.Password,
|
||||
required: true,
|
||||
placeholder: '43 chars',
|
||||
shouldRender: (values: any) =>
|
||||
values?.config?.credential?.connection_type !== 'websocket',
|
||||
},
|
||||
],
|
||||
[ChatChannelKey.WHATSAPP]: [],
|
||||
@@ -646,6 +675,9 @@ export const ChatChannelFormDefaultValues: Record<
|
||||
// googlechat carries a non-credential discriminator (auth_mode).
|
||||
ChatChannelFormDefaultValues[ChatChannelKey.GOOGLECHAT].config.auth_mode =
|
||||
'webhook_url';
|
||||
ChatChannelFormDefaultValues[
|
||||
ChatChannelKey.WECOM
|
||||
].config.credential.connection_type = 'webhook';
|
||||
|
||||
export const getChatChannelFields = (
|
||||
key?: ChatChannelKey,
|
||||
|
||||
@@ -64,6 +64,7 @@ const ChatChannel = () => {
|
||||
ChatChannelKey.FEISHU,
|
||||
ChatChannelKey.TELEGRAM,
|
||||
ChatChannelKey.QQBOT,
|
||||
ChatChannelKey.WECOM,
|
||||
].includes(id), // Show only selected chat channels
|
||||
)
|
||||
.map((id) => ({
|
||||
|
||||
Reference in New Issue
Block a user