django实现钉钉接口调用,读取钉钉上填写的表单信息

@TOdjango实现钉钉接口调用,读取钉钉上填写的表单信息C

在公司实习,需要调用钉钉上面的某个表单信息在自己的网站上显示。主要难点在如何获取这些表单数据信息。

企业的话,需要企业钉钉管理员账号,或者让管理员给你开放权限:开发者模式。

实现流程:

(1)在获取开发者权限后,进入钉钉开放平台创建应用,直接百度搜索“钉钉开放平台”就行。
django实现钉钉接口调用,读取钉钉上填写的表单信息
(2)登录后,切换到应用开发,因为我这里上网站与钉钉的结合,所以我这里选择的企业内部开放–H5微应用,其他应用的博主们,可以查看钉钉API文档具体操作。
django实现钉钉接口调用,读取钉钉上填写的表单信息

(3)创建应用,输入应用名称等信息,选择开发方式为企业自助开发。
django实现钉钉接口调用,读取钉钉上填写的表单信息

(4)创建成功后,打开该应用,可以看到一些基本信息,包括AgentId,AppKey,AppSecret等。这些信息需要在网站中用到。
django实现钉钉接口调用,读取钉钉上填写的表单信息

(5)切换到开发管理页面,设置服务器IP,网站首页地址等信息。前两个必填项。
django实现钉钉接口调用,读取钉钉上填写的表单信息
(6)切换到权限管理,添加接口权限。将钉钉前端的一接口权限写入,我这里的应用是放在OA审批里面的,也就是你在钉钉页面填表的位置。所以,需要将工作流-审批加入权限。到此钉钉这边设置完成。
django实现钉钉接口调用,读取钉钉上填写的表单信息
(7)进入钉钉管理后台界面,创建表单,地址:https://oa.dingtalk.com/#/login
django实现钉钉接口调用,读取钉钉上填写的表单信息
(8)我这里是在钉钉工作台里面的OA审批里面创建的表单,所以找到OA审批,点击进入以后,创建新表单,根据需要创建是否需要审批的表单就行了。
django实现钉钉接口调用,读取钉钉上填写的表单信息
django实现钉钉接口调用,读取钉钉上填写的表单信息
(9)输入表单的名称,并设计表单的样式,这时,关注浏览器的地址栏,有一个processCode,很重要,这个信息后面会用到,记得复制下来,这个是你当前设计的表单的单号。
django实现钉钉接口调用,读取钉钉上填写的表单信息
(9)表单设计完成后,提交完成就可以在手机钉钉的OA审批页面看到你创建的这个应用了。

以上配置完钉钉的开发,现在开始在Django 中获取数据。

(1)在django中获取access_token,不定时的刷新,所以需要动态的获取,代码如下:

#1.获取access_token
def get_token(api_url):
    res = requests.get(api_url)
    if res.status_code == 200:
        str_res = res.text
        token = (json.loads(str_res)).get('access_token')
        return token

(2)发送请求,获取需要的信息:

#2.发送请求,获取需要的信息
def SDKList(api_url,process_code):
    dt = '2021-02-06 00:00:00' #表示当前获取的数据开始时间
    time.strptime(dt, '%Y-%m-%d %H:%M:%S')
    time1 = int(time.mktime(time.strptime(dt, '%Y-%m-%d %H:%M:%S')))
    time1 = str(time1) +'000' #对时间戳进行转换
    url = 'https://oapi.dingtalk.com/topapi/processinstance/list?access_token={}&process_code={}'\
        .format(get_token(api_url),process_code)
    print(url)
    data = {'process_code': process_code,
            'start_time': time1,
            }

    data1 = json.dumps(data).encode(encoding='UTF8')

    result = requests.post(url=url, data=data1,headers={"Content-Type": "application/json", "Charset": "UTF-8"})
    ret = json.loads(result.text)
    #print("ret:",ret)
    sdk_info = ret.get('result').get('list')
    dingding_number=[]
    result = []
    for dingding_info in sdk_info:
        dingding_number.append(dingding_info.get('business_id'))
        result.append(dingding_info.get('status'))
    # print(sdk_info)
    # print(dingding_number,result)

    return sdk_info,dingding_number,result

(3)调用这两个函数,放在网站合适的位置就行,这里就需要传入前面在钉钉应用里面的一些参数了,即第(4)步。

appkey = '写自己的'
appsecret = '写自己的'
api_url = "https://oapi.dingtalk.com/gettoken?appkey=%s&appsecret=%s" % (appkey, appsecret)
processCode = 'PROC-D389C93F-AEC9-4988-83DB-504E49B330F1'  # 这个是你在钉钉上创建的表单的单号。类似于我们html里面的form表单。以PROC开头的

sdk_info,dingding_number,result_status= SDKList(api_url, processCode) #获取钉钉提交的表单信息,特别是钉钉单号和审批状态

这样就完成了钉钉表单数据的调用,其他代码有兴趣欢迎大家交流。

上一篇:最大公约数--最小公倍数--Java实现


下一篇:zabbix钉钉报警