1.需求
鉴于需要使用钉钉群机器人回复,人们提出的问题,需要识别提出的问题中的关键词,后端进行处理实现对应的业务逻辑
2.实现方式
用户@群机器人,附带提出的问题,后端接收消息后识别消息内容,读取到关键词进行对应的业务逻辑操作后,机器人获取返回的信息后发消息到群中@到具体的人
官方文档地址:接收消息 - 钉钉开放平台
3.实现流程
创建机器人->配置机器人接收数据地址->开发接收消息后的业务逻辑->上线机器人->添加机器人到群组中
4.具体步骤及代码实现
(1)创建机器人。点击创建应用,填写应用名称、应用描述,创建完成后设置,服务器出口ip你的个任务武器地址,消息接收地址:你的机器人接收消息的接口,即当在群中@机器人时会调用本接口
(2)机器人接收消息的文档。
如图为接收消息接口的传参及参数分别代表的意义。
(3)机器人发送消息的文档。
机器人发送消息的类型就比较多了,可以发送图片、文本等,包括@人回复消息,结合上面的机器人接收消息就可以实现对应的智能对话。 文档地址:机器人发送消息的类型 - 钉钉开放平台
(4)示例代码
package com.wheel.back.model;import cn.hutool.json.JSONObject;
import lombok.Data;@Data
public class DemdITVo {//姓名private String senderNick;//回调的webhookprivate String sessionWebhook;//内容json contentprivate JSONObject text;//加密ID 工单机器人private String chatbotUserId;//用户加密IDprivate String senderId;//群聊标题private String conversationTitle;//用户钉钉UserIdprivate 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 {@Resourceprivate 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 "成功!";}
}
(5)机器人的发布。
编写完成后代码发到自己服务器上运行后,将机器人上线,在自己的群聊中添加该机器人,即可使用
5.结论
测试结果就不具体展示了就是@机器人后调用你的接口,接口中根据接受的内容进行具体的业务逻辑处理,然后返回到群中。
扩展:除了对于指定命令自定义回答,群聊机器人也可用于对一些服务的预警功能及定时通知功能等,可以结合使用的场景进行对应的灵活组合开发。