企业内部应用机器人在人与机器人单聊场景中的使用
开发前准备
机器人发送消息、查询消息是否已读、撤回机器人消息
1.
2.
3.
4.
推荐用法
1.
2.
机器人接收消息
HTTP模式

Stream模式

JAVA SDK接入
pom.xml
文件或下载对应的jar包,最新的 SDK 版本可以在这里查看和下载。<dependency>
<groupId>com.dingtalk.open</groupId>
<artifactId>app-stream-client</artifactId>
<version>{sdk-version}</version>
</dependency>
public class BotExample {
public static void main(String[] args) {
OpenDingTalkClient client = OpenDingTalkStreamClientBuilder
.custom()
.credential(new AuthClientCredential("${clientId}", "${clientSecret}"))
.registerCallbackListener("${topic}", new RobotMsgCallbackConsumer())
.build();
client.start();
}
public static class RobotMsgCallbackConsumer implements OpenDingTalkCallbackListener<JSONObject, JSONObject> {
/*
* @param request
* @return
*/
@Override
public JSONObject execute(JSONObject request) {
try {
JSONObject text = request.getJSONObject("text");
if (text != null) {
String msg = text.getString("content").trim();
String openConversationId = request.getString("conversationId");
}
} catch (Exception e) {
log.error("receive group message by robot error:" +e.getMessage(), e);
}
return new JSONObject();
}
}
}
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
clientId | 是 | String | 应用appkey。 |
clientSecret | 是 | String | 应用appSecret。 |
topic | 是 | String | 固定值 ,/v1.0/im/bot/messages/get 。 |
接收消息格式
HTTP header
{
"Content-Type": "application/json; charset=utf-8",
"timestamp": "1577262236757",
"sign":"xxxxxxxxxx"
}
参数 | 说明 |
---|---|
timestamp | 消息发送的时间戳,单位是毫秒。 |
sign | 签名值。 |
消息体
{
"conversationId": "xxx",
"atUsers": [
{
"dingtalkId": "xxx",
"staffId":"xxx"
}
],
"chatbotCorpId": "dinge8a565xxxx",
"chatbotUserId": "$:LWCP_v1:$Cxxxxx",
"msgId": "msg0xxxxx",
"senderNick": "杨xx",
"isAdmin": true,
"senderStaffId": "user123",
"sessionWebhookExpiredTime": 1613635652738,
"createAt": 1613630252678,
"senderCorpId": "dinge8a565xxxx",
"conversationType": "2",
"senderId": "$:LWCP_v1:$Ff09GIxxxxx",
"conversationTitle": "机器人测试-TEST",
"isInAtList": true,
"sessionWebhook": "https://oapi.dingtalk.com/robot/sendBySession?session=xxxxx",
"text": {
"content": " 你好"
},
"msgtype": "text"
}
消息体参数说明
参数 | 是否必填 | 类型 | 说明 |
---|---|---|---|
msgtype | 是 | String | 消息类型。 |
content | 是 | String | 消息文本。 |
msgId | 是 | String | 加密的消息ID,暂无使用场景,可忽略。 |
createAt | 是 | String | 消息的时间戳,单位毫秒。 |
conversationType | 是 | String | 1:单聊2:群聊 |
conversationId | 是 | String | 会话ID。 |
conversationTitle | 否 | String | 群聊时才有的会话标题。 |
senderId | 是 | String | 加密的发送者ID。说明使用senderStaffId,作为发送者userid值。 |
senderNick | 是 | String | 发送者昵称。 |
senderCorpId | 否 | String | 企业内部群有的发送者当前群的企业corpId。 |
sessionWebhook | 是 | String | 当前会话的Webhook地址。 |
sessionWebhookExpiredTime | 是 | Long | 当前会话的Webhook地址过期时间。 |
isAdmin | 否 | boolean | 是否为管理员。说明机器人发布上线后生效。 |
chatbotCorpId | 否 | String | 机器人所在的企业corpId。 |
isInAtList | 否 | boolean | 是否在@列表中。 |
senderStaffId | 否 | String | 企业内部群中@该机器人的成员userid。说明该字段在机器人发布线上版本后,才会返回。 |
chatbotUserId | 是 | String | 加密的机器人ID,暂无使用场景,可忽略。 |
atUsers | 否 | Array | 被@人的信息。dingtalkId:加密的发送者ID。staffId:企业内部群有的发送者在企业内的userid。 |
机器人可接收的消息类型说明
消息类型 | 消息体 | 说明 |
---|---|---|
文本消息 | 123456{ "msgtype": "text", "text": { "content": "你好" }} | 无 |
图片消息 | 123456{ "msgtype": "picture", "content": { "downloadCode": "mIofN681YE3f/+m+**********8rs4RGdQAwyVs3B75N7boKf8ep0FBB122u9YY/novFAM9BQrirm4/+avZaCV+6nnZ0Zk=" }} | 机器人接收的消息内downloadCode字段,可调用下载机器人接收消息的文件内容接口执行下载。 |
富文本消息 | 1234567891011121314{ "msgtype": "richText", "content": { "richText": [ { "text": "你好" }, { "downloadCode": "mIofN681YE3f*************JkVBG2vhj4Q9TsmsNCHy0Phdd2tn/t6XxjaB6U8oEst1JVnFR2QRaLqsGyuWPhEvzhIDEpfQYEvexbwdKCCpMOVnYYbn1aMT/n3JFgb4i64X3TFXxXCdaH1+NLRM/B6kGWxJPR/egKS8syvGzaZpzVI+hHQbCjLOO/FYLor2Q==", "type": "picture" } ] }} | 机器人接收的消息内downloadCode字段,可调用下载机器人接收消息的文件内容接口执行下载。 |
语音消息 | 12345678{ "msgtype": "audio", "content": { "duration": 4000, "downloadCode": "mIofN681YE3f/+m+Nn***********geqPd7xpJF/9NbOAORDnadz0WbSwWTiYvByBeYDjbg2ecUdno/RGtZ/sqzdvoh00EWw1U6xNqLC3Bk51U+i", "recognition": "钉钉,让进步发生" }} | 机器人接收的消息内downloadCode字段,可调用下载机器人接收消息的文件内容接口执行下载。 |
视频消息 | 12345678{ "msgtype": "video", "content": { "duration": 4000, "downloadCode": "mIofN681YE3f/****************OAORDnadz0WbSwWTiYvByBeYDjbg2ecUdno/RGtZ/sqzdvoh00EWw1U6xNqLC3Bk51U+i", "videoType": "mp4" }} | 机器人接收的消息内downloadCode字段,可调用下载机器人接收消息的文件内容接口执行下载。 |
文件消息 | 1234567{ "msgtype": "file", "content": { "downloadCode": "mIofN681YE3f*************pJF/9NbOAORDnadz0WbSwWTiYvByBeYDjbg2ecUdno/RGtZ/sqzdvoh00EWw1U6xNqLC3Bk51U+i", "fileName": "钉钉让进步发生.pdf" }} | 机器人接收的消息内downloadCode字段,可调用下载机器人接收消息的文件内容接口执行下载。 |
机器人响应消息
修改于 2024-01-09 09:41:29