php对接钉钉_php实现钉钉业务报警机器人
使用场景,服务器报异常错误,想要及时收到报警信息并处理
环境介绍,本博使用yaf框架+php,仅仅提供思路,参考,具体根据自己实际情况进行编写
1,每十分钟执行一次任务脚本
# 每10分钟执行一次的任务
if [ "0" -eq "$(($minute % 10))" ]; then
php -f ${pathRoot}public/index.php 'request_uri=/error/dingdingLog'
fi
/**
* error action
*
* @return bool
* @throws Exception
*/
public function errorAction()
{
$req = $this->getRequest();
$exception = $req->getException();
//来自接口的错误
if ($exception instanceof ApiException) {
return $this->json($exception->getCode(), $exception->getMessage());
}
//其它异常
if ($this->yafAutoRender) {
$exceptions = [];
if (! $exception instanceof Exception) {
$exception = new Yaf\Exception\LoadFailed('no exception');
}
//add exception
$exceptions[] = $exception;
//show trace
$this->getView()->exceptions = $exceptions;
Yaf\Dispatcher::getInstance()->autoRender(true);
} else {
if ($exception instanceof Yaf\Exception\LoadFailed) { //接口不存在
$this->log($exception, ApiException::NOT_EXISTS);
return $this->json(ApiException::NOT_EXISTS, $exception->getMessage());
}
$this->log($exception);
return $this->json(ApiException::FATAL, $exception->getMessage());
}
}
5,修改框架错误日志log写入方法
/**
* error log
*
* @param Exception $exception
* @param int $error_code 0-正常报错
*/
private function log($exception, $error_code = 0)
{
//log exception
$msg = sprintf("%s:%s. in %s on line %s, trace:%s",
get_class($exception),
$exception->getMessage(),
$exception->getFile(),
$exception->getLine(),
$exception->getTraceAsString()
);
// 排除 404 的报错才推送
// there is not method / not such file or diractory
if ($error_code != ApiException::NOT_EXISTS) {
$this->saveLog($exception->getMessage());
}
LK::log()->error($msg);
}
如上所示,我将一部分日志写入redis
6,保存日志
public function saveLog($msg)
{
$redis = LK::redis('log');
$key = md5($msg);
$saved = $redis->sadd('error_log', $key);
if ($saved) {
$redis->setex($key, 1100, $msg);
}
return $saved;
}
7,读取redis消息,给钉钉推送错误消息
public function dingdingLogAction()
{
$redis = LK::redis('log');
$keys = $redis->sMembers('error_log');
if (count($keys)) {
foreach ($keys as $key) {
if (false != ($msg = $redis->get($key))) {
Func::dingdingLog($msg);
}
}
$redis->del('error_log');
}
}
8,curl上面那个地址,具体信息自行修改
/**
* 钉钉消息推送
* 推到钉钉 php+web 群
* @return bool
*/
public static function dingdingLog($msg)
{
$url = 'https://oapi.dingtalk.com/robot/send?access_token=XXXXXX';
$env = \Yaf\Application::app()->environ();
$fix = 'somi';
$time = date('Y-m-d H:i:s');
$data = [
'msgtype' => 'text',
'text' => [
'content' => "[{$fix}:{$env}:{$time}]:{$msg}",
]
];
$data_string = json_encode($data);
$resp = \Frame\Core\Tools::curl($url, 'POST', $data_string, ['Content-Type: application/json;charset=utf-8']);
$resp = json_decode($resp, true);
if ($resp['errorcode']) {
return false;
}
return true;
}
9,如图是我的报警信息示例
php对接钉钉_php实现钉钉业务报警机器人相关推荐
- 钉钉宜搭邵磊:钉钉宜搭低代码加速业务互联 让改变发生
简介:近日,在2021"低代码技术发展与应用线上研讨会"上,钉钉宜搭产品总监邵磊带来了"钉钉宜搭低代码加速业务互联 让改变发生"的主题演讲,详细介绍了钉钉宜搭低 ...
- 钉钉密聊安不安全 钉钉密聊别人能看到吗
钉钉app现在很多企业都在使用,为办公人士提供了很大的帮助.而现在不少人也都在使用密聊功能,但是还是有人会问钉钉密聊安不安全?别人能看到密聊吗?下文一一介解答. 钉钉密聊安不安全 钉钉密聊别人能看到吗 ...
- 钉钉应用云开发之钉钉开放平台接入
钉钉应用云开发之钉钉开放平台接入 简介:介绍服务端API及开发工具的使用,使用创建用户接口新建一个用户. 1.首先,我们在钉钉开放平台创建应用https://open-dev.dingtalk.com ...
- 钉钉邮箱登录入口_钉邮的使用攻略①
一.钉邮的账号是什么? 钉邮是由"[钉钉号]+@dingtalk.com"组成的: 手机端:[头像]-点击头像-右上角[-]-[我的信息]-[钉钉号]进行设置,钉邮名不能和他人重复 ...
- 鸿蒙钉钉app,钉钉鸿蒙版下载_钉钉手机鸿蒙版下载_玩游戏网
<钉钉鸿蒙版>App是企业必备的办公通讯软件,具备智能办公.协同办公等多种服务,考勤打卡.OA审批.图文语音交流.文件传输.群共享等海量办公实用功能十分的全面,为企业高管与员工提供快捷方便 ...
- php钉钉微应用开发,基于钉钉的移动办公微应用的设计与实现.PDF
基于钉钉的移动办公微应用的设计与实现 2017 年 软 件 2017, Vol. 38, No . 4 第 3 8 卷 第 4 期 COMPUTER ENGINEERING & SOFTWAR ...
- 钉钉扫码免登-钉钉应用内免登的实现(附仓库及Demo)
新版钉钉扫码免登及钉钉应用内免登的一次实现 (附仓库及Demo) Vue2, JDK1.8, SpringBoot2.x.x, 钉钉模块, 钉钉模块Demo, 钉钉开放平台 目录 新版钉钉扫码免登及钉 ...
- 钉钉app显示服务器出错,钉钉一直正在重连是怎么回事 钉钉打不开怎么办
在今天8月30号下午很多网友出现钉钉显示一直重连的情况,网友一直发不出消息,然后在PC上和手机上钉钉都重新登录不上,登录上了也发不了消息,所有小编猜测可能是钉钉服务器崩溃导致. 钉钉打不开怎么办 在2 ...
- 钉钉小程序生态5—钉钉群机器人消息通知和钉钉工作通知
文章导航 钉钉小程序生态1-区分企业内部应用.第三方企业应用.第三方个人应用 钉钉小程序生态2-区分小程序和H5微应用 钉钉小程序生态3-钉钉扫码登录PC端网站 钉钉小程序生态4-钉钉小程序三方企业应 ...
最新文章
- 梯度倒谱matlab程序,MFCC梅尔倒谱参数及matlab代码
- 计算机辅助教学导学设计研究,《计算机辅助教学》实验报告
- 洛谷——P1002 过河卒||codevs——T1010 过河卒
- .net动态控件的使用(listview ,treeview,tabControl)
- python中的下标索引
- vb datatable转二维数组_一次稀疏数组的实现过程(附解答思路)
- php 访问url curl,推荐PHP一个用CURL访问URL的函数
- C++——unique()和unique_copy()
- linux下PowerDNS不完全配置
- OpenMP和Pthread比较
- Webmin远程命令执行漏洞(CVE-2019-15107 )复现
- RK3228开发之gc2145芯片手册分析
- Guava Cache 过期回源
- 5G发展困难,贪婪的手机企业不愿降价,运营商无奈再开4G价格战
- 如何查看wifi密码
- Windows下Python的安装
- 浅谈大数据任务调度平台
- 计算机附录的相关文件,计算机化系统附录与计算机文件编制验证实际操作2.pptx...
- Golang相关面试题
- java map tostring_Map转为String
热门文章
- BZOJ2948 : [Poi2001]绿色游戏
- 3d照片环效果(修改版--添加了x轴y轴双向转动和修复模糊度的bug)
- ImageView及其子类
- Python Interview Question and Answers
- delphi下实现ribbon界面的方法(一)
- WinCE 5.0 WIFI 无线网卡的配置和建立连接(转)
- C++编绎器编绎C语言的问题
- googlenet网络结构_CNN网络结构的发展
- 有关计算机组成原理知识的论文,关于计算机组成原理的论文_计算机组成原理_图灵机的组成...
- microsoft office 卸载不了