
之前给大家介绍过关于网页链接!收到不好小伙伴的好评。今天也做过聊天记录写入飞书的功能。网页链接。今天带大家把这个工作流做一下整合另外再结合一下企业微信。实现一个AI绘画生成写入飞书做记录存储,同时把图片生成发送到企业微信里面。下面我们给大家看一下实现的效果:
dify工作流界面:

写入飞书存储:

企业微信:

话不多说下面带大家手把手教会这个工作流的搭建。
这个开始节点还是接受用户输入的提示词,所以我们有一个提示词输入参数。


这块服用之前的即梦AI 逆向接口。关于这块逆向接口可以看我上期文章全网首发!即梦AI+dify工作流,带你领略AI绘画的无限魅力! 里面涉及到逆向接口的部署和使用,这里就不做详细展开。
我们使用同样的HTTP请求接口,接口地址https://jimeng.duckcloud.fun/v1/images/generations 请求方式post
body 是一个json请求参数
{
"model":"jimeng-2.1",
"prompt":"{{#1738645729564.prompt#}}",
"negativePrompt":"",
"width":1024,
"height":1024,
"sample_strength":0.5
}

接下来我们这里做了2个分支,一个是让它输出返回值并发送企业微信,另外一个分组是写入飞书保存数据。我们先看第一个分支代码执行
我们在添加节点中拖拽一个代码执行节点。

输入参数 arg1 这个参数值是http请求body返回

代码
def main(arg1: str) -> str:
import json
# 解析输入的 JSON 数据
try:
data = json.loads(arg1)
except json.JSONDecodeError:
return "输入的字符串不是有效的 JSON 格式,请检查输入数据。"
# 确保解析后的数据包含 'data' 键
if not isinstance(data, dict) or 'data' not in data:
return "输入的数据格式不正确,请确保输入是一个包含 'data' 键的 JSON 对象。"
# 获取 'data' 键对应的数组数据
image_data = data.get('data', [])
# 确保 'data' 键的值是一个列表
if not isinstance(image_data, list):
return "输入的数据中 'data' 键的值不是一个数组,请确保其值是一个 JSON 数组对象。"
# 初始化结果字符串
markdown_result = ""
# 遍历每条图片数据
for index, item in enumerate(image_data, start=1):
# 检查每条数据是否是字典,并且包含 'url' 字段
if not isinstance(item, dict) or 'url' not in item:
markdown_result += f"图片第{index}条内容:无法提取 URL(缺少 'url' 字段)\n"
continue
# 提取 URL 并生成 Markdown 格式的图片链接
url = item['url']
markdown_result += f"\n"
# 返回最终的 Markdown 字符串
return {"result": markdown_result} 这个代码的逻辑就是出来即梦AI 返回的4个图片URL地址 组织成markdown_result 返回。
返回值result 返回类型 string

这里为了在工作流测试方便直接给返回一个自己回复。结果是上个节点result

这个地方我们需要添加一个企业微信发送去消息组件。

那么这个发现群消息有3个参数。
第一个参数输入变量,这里我们输入resutl 和上面直接回复节点一样。
第二个参数群机器人WEBHOOK的KEY ,这个企业微信微信机器人KEY
第三个参数群机器人WEBHOOK的消息类型,这个是发送微信时候应该输入txt 和markdown格式。(我这里选择markdown)
配置图可以参考下面的

那么小伙伴可能问文这个WEBHOOK的KEY 从哪里来呢。
我们打开企业微信群聊信息。

我们可以点击添加机器人


创建完整后我们在聊天窗口下面就可以看到添加好的机器人了

点开机器人URL 地址 我们会看到一个webhook地址。其中链接地址 key=XXXXXX 这串值就是上面WEBHOOK的KEY

以上配置完成企业微信就能收到消息了。
接下来我们回到http请求下面的分支代码中。目前这请求2个参数
参数1 arg1 这个和上面一样也是http body请求的信息
参数2 arg2 这个就是用户输入的提示词,我们把它做为参数输入,后面方便些到飞书里面

处理代码
def main(arg1: str,arg2: str) -> dict:
import json
# 解析输入的 JSON 数据
try:
data = json.loads(arg1)
except json.JSONDecodeError:
return {"result": "输入的字符串不是有效的 JSON 格式,请检查输入数据。"}
# 确保解析后的数据包含 'data' 键
if not isinstance(data, dict) or 'data' not in data:
return {"result": "输入的数据格式不正确,请确保输入是一个包含 'data' 键的 JSON 对象。"}
# 获取 'data' 键对应的数组数据
image_data = data.get('data', [])
# 确保 'data' 键的值是一个列表
if not isinstance(image_data, list):
return {"result": "输入的数据中 'data' 键的值不是一个数组,请确保其值是一个 JSON 数组对象。"}
# 初始化结果字符串
strn = ""
# 遍历每条图片数据
for index, item in enumerate(image_data, start=1):
# 检查每条数据是否是字典,并且包含 'url' 字段
if not isinstance(item, dict) or 'url' not in item:
strn += f"图片第{index}条内容:无法提取 URL(缺少 'url' 字段)\n"
continue
# 提取 URL 并生成 Markdown 格式的图片链接
url = item['url']
strn += url + "\n"
# 将输入字符串转换为表格格式
str2 = strn
table = [[arg2, str2, "", "", ""]]
# 将表格转换为字符串形式的嵌套列表,并添加转义字符
result_str = str(table).replace("'", '"') # 将单引号替换为双引号
# 返回结果
return {
"result": result_str,
}
上述代码主要的逻辑就是出来返回url地址信息和输入参数 组装成飞书文档输入需要的数组内容信息table = [[arg2, str2, "", "", ""]]
目前我这个数组有2个值,后面几个都是空值。这样写入飞书就会保存到文档第一列和第二列

输出变量result 返回类型string

这里我们需要在组件添加飞书表格(新增多行至工作表最后)

这里我们添加一个环境变量保存飞书的表格问答URL.

这个飞书URL链接从哪来呢?回到飞书表格。

复制这个表格的URL链接,这个链接就是我们上面参数设置的值。
这个表格里面有3个值我们需要传入,第一个是 电子表格 token 也就是我们刚才环境变量的URL 值;第二个是上个流程节点输出;
第三个是要增加行数,这里我就填写1.

以上步骤我就完成了表格的设置。

关于飞书表格的权限开通这里我们就不详细展开,大家可以参考我上期文章网页链接
以上步骤完成整个工作流的制作。工作流截图如下

我们可以将这个工作流分享出去,分享的链接地址:https://dify.duckcloud.fun/chat/gFkYQJvCEgPVqnG0


看一下企业微信

在看一下飞书

以上我们就完成了工作流的测试。
相关资料和文档可以看我开源的项目 https://github.com/wwwzhouhui/dify-for-dsl
今天主要带大家实现了 AI 绘画生成写入飞书做记录存储,同时把图片生成发送到企业微信的功能。详细介绍了整个工作流的实现步骤,包括工作流开始节点接受用户输入的提示词,使用 HTTP 请求调用即梦 AI 逆向接口进行绘画生成,接着将流程分为两个分支:一个分支通过代码执行节点处理即梦 AI 返回的图片 URL 地址,将其组织成 Markdown 格式的字符串,经直接回复节点后利用企业微信群消息组件发送到企业微信,还讲解了企业微信机器人 WEBHOOK 的 KEY 的获取方法;另一个分支同样通过代码执行节点处理图片 URL 地址和用户输入的提示词,将其组装成飞书文档输入需要的数组内容信息,以便写入飞书保存数据。
本次工作流整体有点一点复杂,需要把前面的内容学习和消化掉。感兴趣的小伙伴可以动手尝试,今天的分享就到这里结束了,我们下一篇文章见。