飞书自定义机器人

似乎是抄钉钉的。sign的生成方法删减了一点

飞书@的是user_id并不是手机号或者邮箱,user_id的获取方法可参考我的这个文章获取飞书的user_id_卖烤冷面的郭师傅的博客-CSDN博客飞书的user_id隐藏的极深。。。找了半天找不到,最后是询问客服后才知道的。1、点击头像——设置——关于飞书:连续点击飞书版本号五次2、点击头像——右键头像——点击copy_user_id即可获得自己的user_id...https://blog.csdn.net/qq_37172634/article/details/123996775

<?php

define('WEBHOOK_URL', "https://open.feishu.cn/open-apis/bot/v2/hook/");

class Feishu
{
    private $config;

    public function __construct($access_token = '', $secret = '')
    {
        if (!empty($access_token) && !empty($secret)) {
            $this->config = array(
                "token" => $access_token,
                "secret" => $secret
            );
        } else {
            $this->config = array(
                "token" => "a259e46c-2c1b-45a2-985e-36f094356451",
                "secret" => "FpB4tOaspHDpf4AnfZdljd"
            );
        }
    }

    public function send($msgtype = 'text', $msg = array(), $isAtAll = false, $atUids = array())
    {
        if (empty($msg)) {
            return "msgtype can't be empty.";
        }
        if ($msgtype == 'text') {
            $at = '';
            if (!empty($atUids)) {
                foreach ($atUids as $v) {
                    $at .= ('<at user_id="' . $v . '">test</at>');
                }
            }
            //如果是atall就都重置掉
            if ($isAtAll) {
                $at = ('<at user_id="all">所有人</at>');
            }
            if(!empty($at)){
                $msg = ($at . " " . $msg);
            }
        }
        $post = array(
            "msg_type" => $msgtype,
            "content" => array(
                $msgtype => $msg
            )
        );
        $post['timestamp'] = time();
        $str = $post['timestamp'] . "\n" . $this->config['secret'];
        $post['sign'] = base64_encode(hash_hmac('sha256', '', $str, true));
        $post_string = json_encode($post);
        return $this->requestByCurl($post_string);
    }

    private function requestByCurl($post_string)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, WEBHOOK_URL . $this->config['token']);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json;charset=utf-8'));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        $data = curl_exec($ch);
        if (curl_getinfo($ch, CURLINFO_HTTP_CODE) >= 400) {
            return curl_getinfo($ch);
        }
        curl_close($ch);
        return $data;
    }


    public function sendText($msg, $atAll = false, $atUids = array())
    {
        return $this->send("text", $msg, $atAll, $atUids);
    }
}

和钉钉的机器人对比不能说一模一样,只能说完全一致😆😆

### 实现飞书机器人定时发送消息 为了实现飞书机器人的定时发送消息功能,需先完成基础设置并集成调度工具。按照以下部分介绍的方式操作: #### 设置自定义机器人 创建和添加自定义机器人前,访问飞书开发者平台获取应用凭证与密钥等必要信息[^1]。确保已阅读官方文档中的《自定义机器人使用指南》以理解整个流程。 #### 签名校验的安全措施 对于安全性考虑,在配置过程中应启用签名校验机制。这一步骤能有效防止未经授权的消息被发送到聊天组内。具体的实施细节可参照飞书提供的安全指引文件。 #### 编写Python脚本执行定时任务 利用`schedule`库配合其他必要的HTTP请求模块(如`requests`),编写一段能够周期性触发并向指定频道发布内容的小程序。下面是一个简单的例子展示如何安排每日固定时间点自动推送特定文本给群聊成员: ```python import schedule import time import requests def send_message(): url = "https://open.feishu.cn/open-apis/bot/v2/hook/your-hook-id" headers = { 'Content-Type': 'application/json' } payload = {"msg_type": "text", "content": {"text": "这是今天的定时提醒"}} response = requests.post(url, json=payload, headers=headers) print(response.json()) # 设定每天上午9点运行send_message函数 schedule.every().day.at("09:00").do(send_message) while True: schedule.run_pending() time.sleep(1) ``` 上述代码片段展示了基本框架;实际部署时可能还需要处理异常情况以及优化性能等方面的工作。值得注意的是,这里假设读者已经具备一定的编程经验,并且环境中安装好了所需的依赖包。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值