Home > Backend Development > PHP Tutorial > Solution for docking with DingTalk interface to implement attendance and clocking in

Solution for docking with DingTalk interface to implement attendance and clocking in

王林
Release: 2023-07-07 20:26:01
Original
3030 people have browsed it

A solution to realize attendance and punching by docking with DingTalk interface

In modern enterprises, attendance and punching is a very important part. It can ensure that employees attend work on time and provide relevant data for the human resources department to analyze and statistics. As a smart office software, DingTalk provides a wealth of check-in functions. This article will introduce how to implement the attendance and clocking solution by docking with the DingTalk interface.

First, we need to apply for an enterprise application on the DingTalk open platform and obtain the corresponding AppKey and AppSecret. These credentials will be used in subsequent authentications.

Next, we need to write code to communicate with the DingTalk interface. The following is a simple example using Python language to implement the function of docking with the DingTalk interface:

import requests
import hashlib
import time
import base64
import hmac

def get_timestamp():
    return str(int(time.time() * 1000))

def get_signature(url, app_secret, timestamp):
    sign = app_secret.encode("utf-8") + url.encode("utf-8") + timestamp.encode("utf-8")
    hmac_code = hmac.new(app_secret.encode("utf-8"), sign, digestmod=hashlib.sha256).digest()
    signature = base64.urlsafe_b64encode(hmac_code).decode()
    return signature

def dingtalk_clock_in(user_id, app_key, app_secret):
    url = "https://oapi.dingtalk.com/attendance/v1/clock/single/add"
    timestamp = get_timestamp()
    signature = get_signature(url, app_secret, timestamp)

    headers = {
        "Content-Type": "application/json",
        "Authorization": "myAppKey={app_key},timestamp={timestamp},signature={signature}".format(
            app_key=app_key,
            timestamp=timestamp,
            signature=signature
        )
    }

    data = {
        "user_id": user_id,
        "time": timestamp,
        "category": "NORMAL",
        "latitude": "39.908823",
        "longitude": "116.397470",
        "accuracy": "41"
    }

    response = requests.post(url, headers=headers, json=data)
    return response.json()

if __name__ == "__main__":
    user_id = "123456"  # 员工的钉钉用户ID
    app_key = "your_app_key"  # 从钉钉开放平台获取到的AppKey
    app_secret = "your_app_secret"  # 从钉钉开放平台获取到的AppSecret
    result = dingtalk_clock_in(user_id, app_key, app_secret)
    print(result)
Copy after login

In the above code, we defined several functions to obtain timestamps and generate signatures, and wrote a check-in Function dingtalk_clock_in. When calling this function, you need to pass in the employee's DingTalk user ID, AppKey, and AppSecret. This function will send a request to DingTalk's check-in interface and return the response result.

It should be noted that the above example is only the most basic check-in request. In actual development, it may be necessary to handle exceptions in the request and perform corresponding processing based on the returned results.

The attendance and clocking solution implemented by docking with the DingTalk interface can not only improve the efficiency of enterprise attendance management, but also reduce the errors and tediousness of manual operations. At the same time, DingTalk also provides many other interfaces that can be used to query punch records, collect attendance statistics, etc., and can be expanded according to actual needs.

To sum up, the solution to realize attendance and punching through docking with DingTalk interface can not only conveniently record employees’ attendance, but also improve work efficiency and provide more refined data support for enterprise management.

The above is the detailed content of Solution for docking with DingTalk interface to implement attendance and clocking in. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template