从零开始构建报警中心:part05 钉钉消息-工作通知
  qdp7fV9qUjiK 2023年11月19日 16 0

上篇提到了使用webhook方式发送消息。这个有一定的局限性,只能在群里发。

钉钉还提供了使用工作通知账号发送钉钉消息的方法,可以直接发送消息给统一组织内的指定账号。

实现使用工作通知发送消息需要以下几步

创建企业内部应用

登录开发者后台,创建企业内部应用。

  • 应用类型:选择H5微应用。
  • 开发方式:选择企业自主开发。


从零开始构建报警中心:part05 钉钉消息-工作通知_钉钉

获取AppKey和AppSecret

单击基础信息 > 应用信息,获取应用AppKey和AppSecret。

从零开始构建报警中心:part05 钉钉消息-工作通知_钉钉_02


调用API发送消息

生成token

使用上文中申请的AppKey和AppSecret生成token。

def get_token():
    """
    获取token
    :return:
    """

    api_rul = "https://oapi.dingtalk.com/gettoken"
    try:
        params = {"appkey": "xxxxxx",
                  "appsecret": "yyyyyy"
                  }
        r = requests.get(api_rul, params=params)
        result = r.json()
        if result["errcode"] == 0 and result["errmsg"] == "ok":
            token = result["access_token"]
            return {'success': True, 'msg': token}
        else:
            return {'success': False, 'msg': "Requests Fail"}

    except Exception as e:
        print(e)
        return {'success': False, 'msg': str(e)}

调用API

根据token调用工作通知发送信息,演示的是发送markdown格式消息,如果是普通消息或者其他格式消息,可以通过修改文中msg_dic来实现,具体格式参见钉钉文档工作通知 - 钉钉开放平台 (dingtalk.com)

下文中的useridlist是用户的钉钉id,这个id可以通过钉钉SDK来获取。


def user_msg(token,useridlist, msg):
    """
    :parma token: 钉钉token
    :param useridlist: 用户钉钉账号的id list 元素为str
    :param msg: 字典,{"msgtype": "text", "text": {"content": "群消息测试"}}
    https://open.dingtalk.com/document/isvapp-server/message-types-and-data-format
    :return:
    """
    api = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2"
    msg_dict = {
        "msgtype": "markdown",
        "markdown": {
            "title": "markdown type",
            "text": msg
        },
    }
    msg_data = json.dumps(msg_dict)
    data = {
        "agent_id": self.agentid,
        "userid_list": ','.join(useridlist),
        "msg": msg_data
    }
    params = {"access_token": token}
    try:
        r = requests.post(api, params=params, data=data).json()
        print(r)
    except Exception as E:
        return {'success': False, 'msg': str(E)}
    if r['errcode'] == 0:
        return {"success": True, "msg": json.dumps(r)}
    else:
        return {"success": False, "msg": r}

将两部分代码合并起来就可以实现向指定账号的工作通知发送通知了。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

qdp7fV9qUjiK