1.需求
鉴于需要使用钉钉群机器人回复,人们提出的问题,需要识别提出的问题中的关键词,后端进行处理实现对应的业务逻辑
2.实现方式
用户@群机器人,附带提出的问题,后端接收消息后识别消息内容,读取到关键词进行对应的业务逻辑操作后,机器人获取返回的信息后发消息到群中@到具体的人
官方文档地址:接收消息 - 钉钉开放平台
3.实现流程
创建机器人->配置机器人接收数据地址->开发接收消息后的业务逻辑->上线机器人->添加机器人到群组中
4.具体步骤及代码实现
(1)创建机器人。点击创建应用,填写应用名称、应用描述,创建完成后设置,服务器出口ip你的个任务武器地址,消息接收地址:你的机器人接收消息的接口,即当在群中@机器人时会调用本接口
(2)机器人接收消息的文档。
如图为接收消息接口的传参及参数分别代表的意思。
(3)示例代码
package com.wheel.back.model;
import cn.hutool.json.JSONObject;
import lombok.Data;
@Data
public class DemdITVo {
//姓名
private String senderNick;
//回调的webhook
private String sessionWebhook;
//内容json content
private JSONObject text;
//加密ID 工单机器人
private String chatbotUserId;
//用户加密ID
private String senderId;
//群聊标题
private String conversationTitle;
//用户钉钉UserId
private String senderStaffId;
}
package com.wheel.back.controller;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSON;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.wheel.back.model.DemdITVo;
import com.wheel.back.service.TestService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
/**
* @Description
* @Author Li Qingyang
* @Date 2022-11-08
*/
@Slf4j
@RestController
@RequestMapping("wheelTest")
public class TestController {
@Resource
private TestService testService;
@PostMapping("/test")
public String Test(@RequestBody DemdITVo params){
JSONObject text = params.getText();
Object content = (String)text.get("content");
log.info("请求参数:" + content);
String url = "https://oapi.dingtalk.com/robot/send?access_token=xxxxxx";
Map<String,Object> map1 = new HashMap<>();
map1.put("content","你好是我, 是不一样的烟火"+content);
Map<String,Object> map = new HashMap<>();
map.put("msgtype", "text");
map.put("text",map1);
String post = HttpUtil.post(url, JSONUtil.toJsonPrettyStr(map));
log.info(map.toString());
return "成功!";
}
}
(4)机器人的发布。
编写完成后代码发到自己服务器上运行后,将机器人上线,在自己的群聊中添加该机器人,即可使用
5.结论:
测试结果就不具体展示了就是@机器人后调用你的接口,接口中根据接受的内容进行具体的业务逻辑处理,然后返回到群中