php对接飞书自定义机器人发送消息功能

这篇具有很好参考价值的文章主要介绍了php对接飞书自定义机器人发送消息功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天收到一个需求,需要定时去监控业务是否正常稳定,并将错误信息发送到飞书,之前接入过钉钉机器人都比较顺利,但是今天接入飞书居然卡了半天,特此分享给大家,避免踩坑

1,首先创建飞书机器人

php 企业机器人发送信息,php,php,飞书,机器人

php 企业机器人发送信息,php,php,飞书,机器人

2.创建完成之后,获取机器人对应的 webhook 地址 格式如下:

https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxxx

3.下面提供了三种接入方式

php 企业机器人发送信息,php,php,飞书,机器人

4.一般都选签名校验,安全性高

php 企业机器人发送信息,php,php,飞书,机器人
重点来了,这一步之后获取到秘钥,等下签名需要用到,但是官方文档是这样写的

设置签名校验后,向 webhook 发送请求需要签名校验来保障来源可信。所校验的签名需要通过时间戳与秘钥进行算法
加密,即将timestamp + "\n" + 密钥当做签名字符串,使用 HmacSHA256 算法计算签名,再进行 Base64 编码。其中,
timestamp是指距当前时间不超过 1 小时(3600 秒)的时间戳,时间单位:s。例如,1599360473。

按照他的要求,写好代码之后调试,一直报错:{“code”:19021,“data”:{},“msg”:“sign match fail or
timestamp is not within one hour from current time”},官方文档提示错误原因,可能是
1》所使用的时间戳距离发送请求的时间已间隔 1 小时以上,签名已过期。
2》服务器时间与标准时间有较大偏差,导致签名过期。请注意检查、校准你的服务器时间。
3》签名不匹配导致的校验不通过,将返回以下信息。
1和2原因是我打印之后百分百排除了,那么问题一定是签名不一致,后来发现是因为这一句
php 企业机器人发送信息,php,php,飞书,机器人
因为下面示例代码只有java,go,python,大致一看,以为和钉钉机器人接入方式一样,可能有些同学会跟我一样遇到这个问题,直接将最终代码贴出来:文章来源地址https://www.toymoban.com/news/detail-844894.html

		这是钉钉机器人代码:
 		$times = time() * 1000;
        $sign_key = self::Sign_key;
        $sign = urlencode(base64_encode(hash_hmac('sha256', $times . "\n" . $sign_key, $sign_key, true)));
        $webhook_url = self::Web_hook . "&timestamp={$times}&sign={$sign}";
        $data = array('msgtype' => 'text', 'text' => array('content' => $msg));
        $data_string = json_encode($data);
        $result = self::posturl($webhook_url, $data_string);

		飞书机器人代码:
		$timestamp = time();
        $stringToSign = $timestamp . "\n" . self::api_key;
        $sign = base64_encode(hash_hmac('sha256', '', $stringToSign, true));
        $client = new Client();

        $data = array(
            'sign' => $sign,
            'timestamp' => $timestamp,
            'msg_type' => 'text',
            'content' => array('text' => "<at user_id=\"all\">所有人</at>{$msg}")
        );
        $response = $client->request('POST', self::api_url, [
            'headers' => [
                'Content-Type' => 'application/json'
            ],
            'json' => $data,
        ]);
        $result = json_decode($response->getBody()->getContents(), true);
看到区别了吗,就是hash_hmac的加密的时候,第二个参数为空
最后终结原因,没理解清楚官方文档的说法,第二对php hash_hmac 函数的用法模糊不清,这里特此记录一下,
希望同样能对你有所帮助。

到了这里,关于php对接飞书自定义机器人发送消息功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • php对接飞书机器人

    php对接飞书机器人

    有同事接到对接飞书机器人任务,开发中遇到响应错误: 意思应该就是签名错误或者时间戳不在有效范围内等,官方文档解释: 时间戳是取的实时的,也确认过了没问题,那基本确认就是签名错误了。 按照文档尝试调试了一下还是一样的结果,如果把后台安全设置那个签名

    2024年02月07日
    浏览(6)
  • zabbix对接飞书机器人告警

    zabbix对接飞书机器人告警

    一、zabbix后台配置 1. 创建报警媒介类型 2. 导入脚本 目录在/usr/lib/zabbix/alertscripts/feishu.py 二、安装python3.8 1. 安装依赖项: 2. 下载Python 3.8: 3. 解压文件并进入目录: 4. 配置: 5. 编译并安装: 6. 验证安装: 如果输出结果为Python 3.8.0,则表示安装成功。 注意:安装过程可能需

    2024年02月05日
    浏览(4)
  • 使用飞书机器人发送消息与文件

    使用飞书机器人发送消息与文件

    本文默认你已拥有一个机器人,如果没有请点击以下链接创建机器人 检查机器人权限 如果需要跨部门发送消息,检查是否开通跨部门权限 在发布版本时选择作用范围为所有员工 机器人发送消息需要获取以下权限: 通过手机号或邮箱获取用户 ID 查看、评论和下载云空间中所

    2024年04月10日
    浏览(8)
  • python调用飞书机器人发送文件

    python调用飞书机器人发送文件

    当前飞书webhook机器人还不支持发送文件类型的群消息,可以申请创建一个机器人应用来实现群发送文件消息。 创建机器人后,需要开通一系列权限,然后发布。由管理员审核通过后,才可使用。 包括如下的权限,可以获取群的chat_id。 开通权限发布应用后,可以取到两个重

    2024年02月06日
    浏览(12)
  • 【Postman】调用飞书机器人接口发送消息

    【Postman】调用飞书机器人接口发送消息

    1、进入飞书,新建一个群组,添加机器人 2、点击该机器人,复制webhook地址 3、打开postman,在url中输入该webhook地址,输入需要请求的json内容,点击发送 内容例如: 4、飞书就会收到对应的消息推送了 5、请求内容的格式参见飞书机器人文档 自定义机器人指南

    2024年02月13日
    浏览(6)
  • ElastAlert通过飞书机器人发送报警通知

    ElastAlert通过飞书机器人发送报警通知

    公司采用ELK架构搜集业务系统的运行日志,以前开发人员只有在业务出现问题的时候,才会去kibana上进行日志搜索操作,每次都是被用户告知系统出问题了,这简直是被啪啪打脸~ 于是痛定思痛,决定主动出击,查阅了许多资料,发现ElastAlert这个服务能够对elasticsearch的索引按

    2024年02月07日
    浏览(13)
  • 企业微信、飞书、钉钉机器人消息发送工具类

    其实你也可以使用RestTemplate,我这里主要是用到了webflux框架,所以需要实例化客户端请求对象

    2024年02月10日
    浏览(10)
  • Jenkins+Allure测试报告+飞书机器人发送通知

    Jenkins+Allure测试报告+飞书机器人发送通知

    本篇讲述在jenkins构建成功后,如何生成测试报告,以及推送飞书(因为我公司用的是飞书,所以是发送到飞书机器人)。 本次实践搞了一天,踩了一些坑,其中有2个坑可参考如下: 1、关于jenkins生成allure报告是空的:https://blog.csdn.net/qq_37159446/article/details/122233467 2、如遇到构

    2024年02月04日
    浏览(8)
  • python飞书群机器人通过webhook发送消息

    python飞书群机器人通过webhook发送消息

    2024年02月06日
    浏览(13)
  • 【Linux】+【Jenkins】+【飞书机器人】发送通知(带签名)

    【Linux】+【Jenkins】+【飞书机器人】发送通知(带签名)

    自定义机器人使用指南飞书官网https://open.feishu.cn/document/client-docs/bot-v3/add-custom-bot 我这个设置了签名的,具体怎么设置签名可以查看飞书官方文档 可以看到上传去是没有执行权限的,一定要记得叫上执行权限 chmod +x sendMsg.py 最后一个参数标识 0 开始构建 1 构建完成 /opt/java/scri

    2024年02月14日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包