在平常的开发中,找问题时,看日志经常是不可或缺的一件事件。对于错误日志,我们更是希望能够立马悉知,迅速对错误追本溯源,然后对错误进行修正。钉钉机器人的出现,无疑为我们第一时间对错误日志进行响应,提供了绝妙的工具。
自定义钉钉机器人
创建钉钉机器人
钉钉机器人只支持在群聊中创建,因而首先我们需要拥有一个群聊,然后在 “聊天设置” 中,找到 “智能群助手”,点击 “添加更多”,选择 “自定义”:
点击 “添加” 后,设置机器人名称(和头像),便完成了机器人的自定义,然后你会获得一个 webhook:
这个 webhook 是一个 URL,我们可以向这个 URL 发起 POST 请求,从而将我们的日志数据,发送给日志机器人,然后日志机器人产出消息提醒。钉钉支持多种消息类型,包括:text 类型、link 类型、markdown 类型等等,详细可见 钉钉开发平台。对于我们的日志消息来说,一般 text 类型就行。
Text 类型
text 类型的消息的格式如下:
{
"msgtype": "text",
"text": {
"content": "我就是我, 是不一样的烟火@156xxxx8827"
},
"at": {
"atMobiles": [
"156xxxx8827",
"189xxxx8325"
],
"isAtAll": false
}
}
参数
参数类型
必须
说明
msgtype
String
是
消息类型,此时固定为:text
content
String
是
消息内容
atMobiles
Array
否
被@人的手机号
isAtAll
bool
否
@所有人时:true,否则为:false
使用 okHttp 发送消息
下面基于 okHttp 来演示如何发送 text 类型消息。首先我们定义消息的结构:
/**
* 抽象消息类型(方便将来扩展其他类型的消息)
*/
public abstract class BaseMessage {
private List atMobiles;
private boolean atAll;
/**
* 转为 JSON 格式的请求体
*
* @return 当前消息对应的请求体
*/
public abstract String toRequestBody();
public void addAtMobile(String atMobile) {
if (atMobiles == null) {
atMobiles = new ArrayList<>(1);
}
atMobiles.add(atMobile);
}
public void setAtAll(boolean atAll) {
this.atAll = atAll;
}
public List getAtMobiles() {
return atMobiles != null ? atMobiles : Collections.emptyList();
}
public boolean isAtAll() {
return atAll;
}
}
/**
* 文本消息