掘金 后端 ( ) • 2024-04-16 15:09

序言

近期本人参与了关于创建和使用扣子相关活动的经验分享,在此之前,对这项技术的理解尚显肤浅,仅草草地搭建了一个基础模型,并未深入探索其高级特性,如插件开发、知识库构建、工作流程设计等。然而,随着实践的不断深入,我意识到在实际工作场景中,这些功能具有极高的应用价值。因此,本次活动我将致力于探讨如何利用扣子平台实现更为实用的功能,例如,如何通过发送钉钉消息来提高工作效率。

创建插件

扣子平台为广大开发者提供了丰富多样的插件开发方式,若您对此感兴趣,可参阅官方文档以获取更多详细信息:https://www.coze.cn/docs/guides/plugin_example。作为一名 Python 程序员,我通常采用 Coze IDE + Python 的组合来进行插件开发。 如果您日常工作中经常使用钉钉,那么这个插件将能很好地满足您的需求;而如果您使用的是飞书或企业微信,同样可以参照上述方法进行类比实现。

步骤

首先,请访问扣子官网 www.coze.cn,登录个人账户后,依次点击“插件”→“创建插件”,如图所示: image.png 接着,填写插件名称、插件描述,并根据需要选择创建方式及编程语言,如图所示:

image.png

随后,点击“确定”按钮,进入插件详情页面,再点击“在 IDE 中创建工具”选项,如图所示:

image.png 在弹出的对话框中,填写工具名称及简介,如图所示: image.png

最后,点击“确定”按钮,进入代码编写界面,如图所示

image.png

温馨提示:

  • 请务必保留模板中的 handler 方法,以免影响插件正常运行。
  • 返回值应为 JSON 格式的数据。

代码核心

接下来,便是编写插件的核心代码部分。以下仅简要概述实现思路,完整代码较长,故此处不再赘述,如需深入了解,欢迎留言讨论。

class DingtalkChatbot(object):
    """
    钉钉群自定义机器人,支持文本(text)、连接(link)、markdown三种消息类型!
    """
    def __init__(self, webhook, secret=None, pc_slide=False, fail_notice=False):
        """
        机器人初始化
        """
        pass
            
    def update_webhook(self):
        """
        更新签名
        """
        pass
​
    def msg_open_type(self, url):
        """
        消息链接的打开方式
        """
        pass   
​
    def send_text(self, msg, is_at_all=False, at_mobiles=[], at_dingtalk_ids=[], is_auto_at=True):
        """
        text类型
        """
        pass
​
    def send_image(self, pic_url):
        """
        image类型
        """
        pass
​
    def send_link(self, title, text, message_url, pic_url=''):
        """
        link类型
​
        """
        pass
​
    def send_markdown(self, title, text, is_at_all=False, at_mobiles=[], at_dingtalk_ids=[], is_auto_at=True):
        """
        markdown类型
        """
        pass
​
​
    def post(self, data):
        """
        发送消息(内容UTF-8编码)
        """
        pass
​

以上即为核心方法,主要实现以下功能:

  • 支持发送Text消息
  • 支持发送Link消息
  • 支持发送image表情消息
  • 支持发送Markdown消息
  • 支持发送消息失败时自动通知
  • 支持发送消息链接打开方式
  • 支持发送消息频率限制
  • 支持发送消息

然后,我们定义输入参数,如图所示:

image.png

至此,插件开发已基本完成。接下来,让我们测试一下插件的实际效果:

设定消息类型为:Text,如图所示

image.png

点击“运行”按钮,钉钉将接收并显示文本消息,如图所示

image.png

设定消息类型为:Link,如图所示

image.png

点击“运行”按钮,钉钉将接收并显示该消息,如图所示:

image.png

设定消息类型为:Image,如图所示

image.png

点击“运行”按钮,钉钉将接收并显示该消息,如图所示:

image.png

设定消息类型为:MarkDown,如图所示

image.png 点击“运行”按钮,钉钉将接收并显示该消息,如图所示:

image.png

测试通过之后,我们发布插件,便于在bot中使用。

点击发布,确认信息后,确认即可发布成功。

生成您的专属 bot

这款由我精心打造的 bot 旨在能够迅速、精确地向钉钉群发送特定类型的消息。为了体现其独特性,我们赋予它一个极具意义的名字——“钉钉信使”。

个性化的设定和智能化的应答逻辑

经过反复调试和测试,我认为以下的配置设置可以非常好地适配我开发的插件,详情如下

# 角色
你是一个具备信息聚合及自动同步能力的智能助手,可将指定信息准确无误地发送至钉钉群。
​
## 技能
### 技能 1: 精准发送信息至钉钉群
1. 依据用户提供的 Webhook、secret 和消息类型,自动将信息同步至指定的钉钉群。
​
### 技能 2: 高效信息筛选与整理
1. 能够对聚合的信息进行有效筛选和整理,剔除冗余及无效内容。
2. 保证传至钉钉群的信息精准、有价值。
​
### 技能 3: 告诉用户支持消息类型
1. Text、Link、Image、MarkDown
​
### 技能 4: 告诉用户不同类型如何传参数
1. Text:需要text参数
2. Link:需要text、title、message_url、pic_url参数
3. Image:需要pic_url参数
4. MarkDown:序言text、title参数
​
### 技能5: 给用户提供基本模版
1. {
​
  "webhook": "",
​
  "secret": "",
​
  "message_type": "MarkDown",
​
  "text": "我就是小助手,发送MarkDown消息!",
​
  "title": "我是标题",
​
  "message_url": "",
​
  "pic_url": ""
​
}
​
## 限制
- 严格遵循钉钉群的相关规定与限制。
- 对于无法支持的信息类型,及时向用户反馈。
- 指定消息类型为:Text、Link、Image、MarkDown

集成自定义插件

在插件中,添加已经定义好的钉钉消息插件,截图所示 image.png

设置开场白以及预置问题

预设问题的设计初衷是为了让您更加便捷、快速地使用插件。我们相信,通过预设问题,您可以轻松地将消息发送至钉钉群。具体设置方法如下:

image.png

接下来,让我们一起来体验一下这个 bot 的实际效果吧:

image.png

image.png

image.png

最后

经过不断的努力和钻研,成功研发出了自有的钉钉消息插件,并将其应用于钉钉信使机器人之中,实现了技术与业务的深度融合。

bot:

最后

经过不断的努力和钻研,成功研发出了自有的钉钉消息插件,并将其应用于钉钉信使机器人之中,实现了技术与业务的深度融合。

BotID: 7358335622786154531 https://www.coze.cn/store/bot/7358335622786154531?bot_id=true