Skip to content

[Feature]: Dify+LangBot+企业微信智能机器人场景:Dify知识库返回的markdown格式” ![image](url) ”图片链接(不带图片后缀)能在手机端企业微信可以渲染显示成图片,但是在电脑端企业微信不能渲染显示成图片内容,能否进行优化 #1856

@6mvp6

Description

@6mvp6

这是一个?

现有功能优化

详细描述

Docker部署、LangBot v4.6.3、Ubuntu、python 3.12.7
Dify+LangBot+企业微信智能机器人场景:测试基于官方 LangBot v4.6.3 代码,docx文档的图片上传到知识库显示为 ![image](https://域名:端口/files/2dabb1f0-80ac-4b1e-8a17-536aafb97adc/file-preview) markdown格式,对企业微信机器人进行提问,电脑端企业微信机器人返回Dify知识库图片内容为:[图片](https://域名:端口/files/2dabb1f0-80ac-4b1e-8a17-536aafb97adc/file-preview?timestamp=1765421851&nonce=97a180b300ff057d0254d85e585f9903&sign=wZdJ4hiq4S0KxQwS_VKG9tpvJG5j4z9lNRf0w7CyRQ0=)手机端企业微信机器人能够成功渲染显示成图片。
观察 ./LangBot/src/langbot/libs/wecom_ai_bot_api/api.py 代码 _build_stream_payload 函数打包成企业微信JOSN格式为:

return {
            'msgtype': 'stream',
            'stream': {
                'id': stream_id,
                'finish': finish,
                'content': content,
            },
          }

'content' 字段内容为:Dify知识库返回的markdown格式图片内容[图片](https://域名:端口/files/xxx/file-preview?timestamp=xxx&nonce=xxx&sign=xxx)与文本组合成字符串

我参考企业微信开发者中心-服务端API-智能机器人-被动回复消息-流式消息回复文档:
企业微信开发者中心-服务端API-智能机器人-被动回复消息-流式消息回复文档

企业微信开发者中心文档的智能机器人-被动回复消息-流式消息回复JOSN格式为:

{
    "msgtype": "stream",
    "stream": {
        "id": "STREAMID",
        "finish": false,
        "content": "**广州**今日天气:29度,大部分多云,降雨概率:60%",
        "msg_item": [
            {
                "msgtype": "image",
                "image": {
                    "base64": "BASE64",
                    "md5": "MD5"
                }
            }
        ],
        "feedback": {
            "id": "FEEDBACKID"
        }
    }
}

其中的注意事项如下:

流式消息回复内容content字段支持常见的markdown格式
若content中包含思考过程标签,客户端会展示思考过程。
若回复内容包含图片,仅支持在最后一次回复时,即finish=true时支持包含msgtype为image的msg_item。

询问技术人员说:“若回复内容包含图片,仅支持在最后一次回复时,即finish=true时支持包含msgtype为image的msg_item”。我尝试修改markdown图片格式转换为base64和md5,组合成 msg_item 字段,成功在电脑端企业微信当文本回复完成后,将markdown图片格式渲染显示图片,相关修改代码如下所示,由于担心 LangBot 版本更新太快,不知道修改的代码会不会影响LangBot其他功能,所以提出这个需求看看能否进行优化。
LangBot 相关修改代码:
基于官方 LangBot v4.6.3 修改后的 difysvapi.py 代码
基于官方 LangBot v4.6.3 修改后的 wecombot.py 代码
基于官方 LangBot v4.6.3 修改后的 api.py 代码

我还询问了企业微信技术人员:如果不采用将markdown格式图片转换msgtype为image的msg_item形式,电脑端企业微信要怎么显示 ![image](url) markdown格式图片?回复:“图片链接需要有格式后缀”;但是Dify返回的markdown格式图片内容 ![image](https://域名:端口/files/xxx/file-preview?timestamp=xxx&nonce=xxx&sign=xxx),目前尝试能否在Dify返回知识库的markdown图片格式时,在LangBot回复到企业微信机器人之前增加图片链接后缀? 但图片后缀有 .jpg, .png, .gif 等多种格式,目前还在尝试能否解决。

Metadata

Metadata

Assignees

No one assigned

    Labels

    IM: wecom企业微信 适配器相关 / WeCom and WeComCS adapter relatedeh: Improveenhance: 现有功能的改进 / improve current featuresm: Session会话和消息模块 / Sessions management

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions