返回

零点准时传递新春祝福

后端

如何使用 Webhook 在飞书和企业微信上实现零点准时发送新春祝福语

引言

新春佳节临近,我们自然少不了给同事和客户送上真诚的新春祝福。为了在第一时间送达祝福,我们可以利用飞书和企业微信中的 Webhook 功能,在零点准时发送我们的祝福语。

什么是 Webhook?

Webhook 是一种允许应用程序在不与服务器建立持久连接的情况下接收消息或数据的 HTTP 回调。当特定事件发生时,服务器会向应用程序发送一个 HTTP 请求。

利用 Webhook 实现零点准时发送祝福语

我们可以使用 Webhook 功能来实现零点准时发送新春祝福语。具体步骤如下:

  1. 创建机器人: 在飞书或企业微信上创建一个机器人。
  2. 获取 Webhook URL: 在机器人设置中获取机器人的 Webhook URL。
  3. 创建定时任务: 在服务器上创建一个定时任务,并在零点时向 Webhook URL 发送一个 HTTP 请求。
  4. 发送祝福语: 在 HTTP 请求中包含新春祝福语。

代码示例

Python

import requests
import schedule
import time

# 创建机器人并获取 Webhook URL
robot_url = "https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxx"

# 设置定时任务
schedule.every().day.at("00:00").do(send_blessing)

# 发送祝福语
def send_blessing():
    data = {"msg_type": "text", "content": {"text": "新年快乐!"}}
    headers = {"Content-Type": "application/json"}
    requests.post(robot_url, data=data, headers=headers)

# 运行定时任务
while True:
    schedule.run_pending()
    time.sleep(1)

Java

import com.alibaba.fastjson.JSONObject;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class SendBlessing {

    private static final String ROBOT_URL = "https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxx";
    private static final HttpClient CLIENT = HttpClient.newHttpClient();

    public static void main(String[] args) {
        // 计算距离零点还有多久
        LocalDateTime now = LocalDateTime.now();
        LocalDateTime zero = LocalDateTime.of(now.getYear(), now.getMonth(), now.getDayOfMonth(), 0, 0, 0);
        long delay = ChronoUnit.MILLIS.between(now, zero);

        // 创建定时任务,在零点时发送祝福语
        ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
        executor.schedule(() -> {
            sendBlessing();
        }, delay, TimeUnit.MILLISECONDS);
    }

    private static void sendBlessing() {
        // 创建请求体
        JSONObject data = new JSONObject();
        data.put("msg_type", "text");
        JSONObject content = new JSONObject();
        content.put("text", "新年快乐!");
        data.put("content", content);

        // 发送请求
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(ROBOT_URL))
                .POST(HttpRequest.BodyPublishers.ofString(data.toJSONString()))
                .header("Content-Type", "application/json")
                .build();
        try {
            HttpResponse<String> response = CLIENT.send(request, HttpResponse.BodyHandlers.ofString());
            if (response.statusCode() == 200) {
                System.out.println("祝福语发送成功!");
            } else {
                System.out.println("祝福语发送失败!");
            }
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

常见问题解答

1. 如何获取机器人的 Webhook URL?
答:在机器人设置中,可以找到机器人的 Webhook URL。

2. 如何在服务器上创建定时任务?
答:可以使用 crontab 命令或第三方调度库来创建定时任务。

3. 在 HTTP 请求中如何包含祝福语?
答:可以使用 JSON 格式将祝福语包含在请求体中。

4. 如何处理发送失败的情况?
答:可以使用重试机制或者日志记录来处理发送失败的情况。

5. 是否可以在多个机器人上发送祝福语?
答:是的,可以通过创建多个定时任务和使用不同的 Webhook URL 来实现。

总结

利用 Webhook 功能,我们可以轻松实现零点准时发送新春祝福语,为同事和客户送上最诚挚的新年祝福。希望本文能够帮助大家在新年伊始传递一份喜悦与温暖。