aardio 钉钉机器人范例
1.企业内部机器人(群内@机器人可进行交互)
无来源验证
import wsock.tcp.simpleHttpServer;
import console;
var server = wsock.tcp.simpleHttpServer("127.0.0.1",8080);
console.setTitle("web服务器已启动");
console.log("web服务器运行中")
console.log( server.getUrl() )
server.run(
function(response,request){
import web.json
var msg =
{
"sessionWebhook": "https://oapi.dingtalk.com/robot/sendBySession?session="+request.sessionId,
"text": {
"content": "reply 你好"
},
"msgtype": "text"
}
response.write(msg)
}
)
注意:
- 钉钉机器人设定处为关键字回复。
- 该代码仅演示原理,并未进行来源校验。
有来源验证的
import wsock.tcp.simpleHttpServer;
import console;
var server = wsock.tcp.simpleHttpServer("127.0.0.1",8080);
console.setTitle("web服务器已启动");
console.log("web服务器运行中")
console.log( server.getUrl() )
server.run(
function(response,request){
function getSecretKey(timestamp){
import crypt.hmac
import crypt.bin;
var appSecret = "机器人的appSecret"
var stringToSign = timestamp + '\n'+ appSecret;
var hmacData = crypt.hmac.sha256(appSecret,stringToSign).getValue()
hmacData = crypt.bin.encodeBase64( hmacData );
return hmacData;
}
var sign = request.headers.sign
var timestamp = request.headers.timestamp
var tm = time()
var timeStr = tonumber(tm)*1000 + ::Kernel32.GetSystemTime(tm)
if( getSecretKey(timestamp) == sign && timestamp - timeStr < 3600000)
{
import web.json
var msg =
{
"sessionWebhook": "https://oapi.dingtalk.com/robot/sendBySession?session="+request.sessionId,
"text": {
"content": "reply 你好"
},
"msgtype": "text"
}
msg = web.json.stringify(msg)
response.write(msg)
}
}
)
按照官方文档要求,对sign进行比对和timestamp限制,才属于安全的合法请求。
具体文档参考:https://developers.dingtalk.com/document/robots/enterprise-created-chatbot
2.通过URL发送消息给群机器人
import web.json
import inet.http;
var msg =
{
"at":{
"isAtAll": true
},
"text": {
"content":mainForm.edit.text
},
"msgtype": "text"
}
msg = web.json.stringify(msg)
var http = inet.http();
var html,err,errCode = http.post("https://oapi.dingtalk.com/robot/send?access_token=410c807fcad8f03688cd293c56ff8ec8f4766b3ae9aa2f75f*****************"
,msg);
http.close();
if( html ){
var json = web.json.parse(html);
if(json.errcode == 0 ){
//完成
}else{
//错误
}
应用场景:程序执行完成,通过URL将完成/错误消息发至钉钉群内。
结语
通过钉钉提供的ding-pireced,可以很容易的将个人电脑设置为服务器。完成小业务足矣。
配合anydesk,管理也十分方便。


本文档介绍了如何使用aardio创建钉钉机器人,包括无来源验证的企业内部群交互和有来源验证的安全请求方式,同时展示了通过URL向群机器人发送消息的应用场景。

357

被折叠的 条评论
为什么被折叠?



