准备
参考官方文档
- 已经完成成为钉钉开发者流程。
- 已经完成创建应用流程。
- 已经完成添加应用能力流程
企业内部需要企业管理员开通权限,我自己创建了一个组织,用自己的组织创建机器人就方便很多,很多权限无需单独去申请了。
创建机器人
进入钉钉开放平台,页面创建机器人,发布即可:
获取appKey, appSecret

获取access_token
python代码:
python
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import sys
from typing import List
from alibabacloud_dingtalk.oauth2_1_0.client import Client as dingtalkoauth2_1_0Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dingtalk.oauth2_1_0 import models as dingtalkoauth_2__1__0_models
from alibabacloud_tea_util.client import Client as UtilClient
class Sample:
def __init__(self):
pass
@staticmethod
def create_client() -> dingtalkoauth2_1_0Client:
"""
使用 Token 初始化账号Client
@return: Client
@throws Exception
"""
config = open_api_models.Config()
config.protocol = 'https'
config.region_id = 'central'
return dingtalkoauth2_1_0Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
client = Sample.create_client()
get_access_token_request = dingtalkoauth_2__1__0_models.GetAccessTokenRequest(
app_key='<your appKey>',
app_secret='<your appSecret>'
)
try:
client.get_access_token(get_access_token_request)
return res.body.access_token
except Exception as err:
if not UtilClient.empty(err.code) and not UtilClient.empty(err.message):
# err 中含有 code 和 message 属性,可帮助开发定位问题
pass
return ''
if __name__ == '__main__':
Sample.main(sys.argv[1:])
注意:access token每次获取后2h内有效,不能频繁请求,需要做缓存
获取userId
除了上面鉴权的token,还需要userId信息,给具体的人员发机器人消息。我是管理员,给自己发消息,直接在中查看:
发送机器人消息
python代码
python
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import sys
from typing import List
from alibabacloud_dingtalk.robot_1_0.client import Client as dingtalkrobot_1_0Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dingtalk.robot_1_0 import models as dingtalkrobot__1__0_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient
class Sample:
def __init__(self):
pass
@staticmethod
def create_client() -> dingtalkrobot_1_0Client:
"""
使用 Token 初始化账号Client
@return: Client
@throws Exception
"""
config = open_api_models.Config()
config.protocol = 'https'
config.region_id = 'central'
return dingtalkrobot_1_0Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
client = Sample.create_client()
batch_send_otoheaders = dingtalkrobot__1__0_models.BatchSendOTOHeaders()
batch_send_otoheaders.x_acs_dingtalk_access_token = '<your access token>'
batch_send_otorequest = dingtalkrobot__1__0_models.BatchSendOTORequest(
robot_code='<your appKey>',
user_ids=[
'<your user id>'
],
msg_key='sampleMarkdown',
msg_param='{"text": "hello text","title": "hello title"}'
)
try:
client.batch_send_otowith_options(batch_send_otorequest, batch_send_otoheaders, util_models.RuntimeOptions())
except Exception as err:
if not UtilClient.empty(err.code) and not UtilClient.empty(err.message):
# err 中含有 code 和 message 属性,可帮助开发定位问题
pass
if __name__ == '__main__':
Sample.main(sys.argv[1:])
效果
