準備
參考官方文檔
- 已經完成成為釘釘開發者流程。
- 已經完成創建應用流程。
- 已經完成添加應用能力流程
企業內部需要企業管理員開通權限,我自己創建了一個組織,用自己的組織創建機器人就方便很多,很多權限無需單獨去申請了。
創建機器人
進入釘釘開放平臺,頁面創建機器人,發布即可:
獲取appKey, appSecret
獲取access_token
官方文檔:獲取企業內部應用的accessToken
python代碼:
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import sysfrom typing import Listfrom 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 UtilClientclass Sample:def __init__(self):pass@staticmethoddef 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)@staticmethoddef 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_tokenexcept Exception as err:if not UtilClient.empty(err.code) and not UtilClient.empty(err.message):# err 中含有 code 和 message 屬性,可幫助開發定位問題passreturn ''if __name__ == '__main__':Sample.main(sys.argv[1:])
注意:access token每次獲取后2h內有效,不能頻繁請求,需要做緩存
獲取userId
除了上面鑒權的token,還需要userId信息,給具體的人員發機器人消息。我是管理員,給自己發消息,直接在中查看:
發送機器人消息
官方文檔:批量發送人與機器人會話中機器人消息
python代碼
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import sysfrom typing import Listfrom 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 UtilClientclass Sample:def __init__(self):pass@staticmethoddef 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)@staticmethoddef 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 屬性,可幫助開發定位問題passif __name__ == '__main__':Sample.main(sys.argv[1:])
效果
消息格式
官方文檔:企業機器人發送消息的消息類型