webhook机器人php源码,机器人之钉钉机器人webhook 对接 ThinkPHP3.2 实现Bug告警通知...

本文主要向大家介绍了机器人之钉钉机器人webhook 对接 ThinkPHP3.2 实现Bug告警通知,通过具体的内容向大家展现,希望对大家学习机器人有所帮助。

前言:

为什么写这篇文章?

原因如下:

项目告警多通过SMS、mail 等方式通知到相应的人员,现在钉钉出了个webhook机器人接入,自定义的机器人支持Post 告警消息到群里,支持更多可能性。

详情可以参考钉钉开发官网文档:

https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.Dq3B2b&treeId=257&articleId=105735&docType=1

下面我们来学习下 ThinkPHP3.2中实现 通过钉钉机器人webhook 发送异常信息到 群里。

一、我们新建的第三方类库DingTalk放到Vendor目录下,

在Vendor目录下新建DingTalk目录, 同时在DingTalk目录下新建  Corefunction.php文件(发送异常消息的类文件)和 GetApiData.php文件(钉钉机器人接口公用函数);

Corefunction.php 文件的内容如下:

/* *

* 钉钉机器人接口公用函数

* 详细:该类是请求、通知返回两个文件所调用的公用函数核心处理文件

* 日期:2018-01-16

* 该代码仅供学习使用,只是提供一个参考。

*/

/**

* 远程获取数据,POST模式

* @param $remote_server 机器人对应的Webhook地址

* @param $post_string   发送的内容

* return 远程输出数据

*/

function request_by_curl($remote_server, $post_string) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $remote_server);

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证书验证, 未调通情况可尝试添加该代码

// curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);

// curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);

$data = curl_exec($ch);

curl_close($ch);

return $data;

}

?>

Corefunction.php 文件的内容如下:

/**

* 类名:GetApiData

* 功能:钉钉机器人webhook接口请求提交类

* 该代码仅供学习使用,只是提供一个参考。

**/

class GetApiData {

protected $files = '';

protected $line = '';

protected $message = '';

protected $trace = '';

public function __construct($files, $line, $messag, $trace){

$this->files   = $files;

$this->line    = $line;

$this->message = $message;

$this->trace   = $trace;

}

public function abnormalRemind()  {

$clientIp = getenv('REMOTE_ADDR');

$all_message = "## 某某项目异常提醒\n\n"

."> clientIp: $clientIp \n\n"

."> file: $this->file \n\n"

."> line: $this->line \n\n"

."> message: $this->message \n\n"

."> trace: $this->trace";

$remote_server = C('DING_TALK_API');     # 从config.php 取 Webhook地址(https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx)

$content = json_encode(markdown('异常提醒', $all_message));

request_by_curl($remote_server , $content);

return true;

}

/* *

* 定义消息类型(markdown)及消息数据

*/

protected function markdown($title, $message){

$data = array (

'msgtype' => 'markdown',

'markdown' => array (

'title' => $title,

'text' => $message

)

);

return $data;

}

二、在ThinkPHP系统内置的异常模板在系统目录的 Tpl/think_exception.tpl 中调用异常类,实现 项目异常消息推送到 钉钉群; 在Tpl/think_exception.tpl 下 加入的代码如下所示:

Vendor('DingTalk.GetApiData');

$file = $e['file'];

$line = $e['line'];

$trace = nl2br($e['trace']);

$message = strip_tags($e['message']);

$msg = new \GetApiData($file, $line, $message, $trace);

$msg->abnormalRemind();

?>

三、异常提醒如下图所示:

小结:

钉钉 webhook机器人可以实现消息推送到钉钉群里 , 自定义机器人支持文本(text)、连接(link)、markdown(markdown)三种消息类型。

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标人工智能智能机器人频道!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值