场景介绍
企业内部有较多系统支撑着公司的核心业务流程,譬如CRM系统、交易系统、监控报警系统等等。通过钉钉的自定义机器人,可以将这些系统事件同步到钉钉的聊天群。
说明
当前机器人尚不支持应答机制,该机制指的是群里成员在聊天@机器人的时候,钉钉回调指定的服务地址,即Outgoing机器人。
步骤一:获取自定义机器人Webhook
-
选择需要添加机器人的群聊,然后依次单击群设置 > 智能群助手。
<p style="text-align:center"><img alt="群助手" id="img-ud2-5tt-oy2" isbindedload="true" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5f0774b0cb874cc98ce3bb8bb779f31d~tplv-k3u1fbpfcp-zoom-1.image" /></p> </li> <li id="li-y0d-mtf-8a6"> <p id="p-1wb-7he-16e">在机器人管理页面选择<strong>自定义</strong>机器人,输入机器人名字并选择要发送消息的群,同时可以为机器人设置机器人头像。</p> <p style="text-align:center"><img alt="屏幕快照 2019-10-25 下午1.50.45.png" id="img-26r-nai-s8i" isbindedload="true" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a64c50a5df3f416080cc91f03b5baabd~tplv-k3u1fbpfcp-zoom-1.image" /></p> </li> <li id="li-77u-zo5-4va"> <p id="p-uce-bdx-5eu">完成必要的<a data-link-icon="https://csdnimg.cn/release/blog_editor_html/release1.9.2/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=L9C2" data-link-title="安全设置" href="https://developers.dingtalk.com/document/robots/customize-robot-security-settings#topic-2101465" id="a-rlt-c49-xb0" title="安全设置">安全设置</a>,勾选<strong>我已阅读并同意《自定义机器人服务及免责条款</strong>》,然后单击<strong>完成</strong>。</p> <p style="text-align:center"><img alt="image.png" id="img-6x8-b5o-gd3" isbindedload="true" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2393330ef8ae4209acc59a2a696bf9ef~tplv-k3u1fbpfcp-zoom-1.image" /></p> </li> <li id="li-gvk-klu-om9"> <p id="p-jp9-yt1-u9l">完成安全设置后,复制出机器人的Webhook地址,可用于向这个群发送消息,格式如下:</p> <pre id="codeblock-93v-t64-3lh">oapi.dingtalk.com/robot/send?…注意<p id="p-zkx-08o-ujd">请保管好此Webhook 地址,不要公布在外部网站上,泄露后有安全风险。</p> </li>
步骤二:使用自定义机器人
获取到Webhook地址后,用户可以向这个地址发起HTTP POST 请求,即可实现给该钉钉群发送消息。
注意
-
发起POST请求时,必须将字符集编码设置成UTF-8。
-
每个机器人每分钟最多发送20条。消息发送太频繁会严重影响群成员的使用体验,大量发消息的场景 (譬如系统监控报警) 可以将这些信息进行整合,通过markdown消息以摘要的形式发送到群里。
当前自定义机器人支持文本 (text)、链接 (link)、markdown(markdown)、ActionCard、FeedCard消息类型,请根据自己的使用场景选择合适的消息类型,达到最好的展示样式。详情参考:消息类型及数据格式。
自定义机器人发送消息时,可以通过手机号码指定“被@人列表”。在“被@人列表”里面的人员收到该消息时,会有@消息提醒。免打扰会话仍然通知提醒,首屏出现“有人@你”。
步骤三:测试自定义机器人
通过以下方法,可以快速验证自定义机器人是否可以正常工作:
使用命令行工具curl。
说明
为避免出错,将以下命令逐行复制到命令行,需要将xxxxxxxx替换为真实access_token;若测试出错,请检查复制的命令是否和测试命令一致,多特殊字符会报错。
curl 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx' \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text","text": {"content":"我就是我, 是不一样的烟火"}}'
SDK请求示例(Java)
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/robot/send?access_token=566cc69da782ec******");
OapiRobotSendRequest request = new OapiRobotSendRequest();
request.setMsgtype("text");
OapiRobotSendRequest.Text text = new OapiRobotSendRequest.Text();
text.setContent("测试文本消息");
request.setText(text);
OapiRobotSendRequest.At at = new OapiRobotSendRequest.At();
at.setAtMobiles(Arrays.asList("132xxxxxxxx"));
// isAtAll类型如果不为Boolean,请升级至最新SDK
at.setIsAtAll(true);
at.setAtUserIds(Arrays.asList("109929","32099"));
request.setAt(at);
request.setMsgtype("link");
OapiRobotSendRequest.Link link = new OapiRobotSendRequest.Link();
link.setMessageUrl("https://www.dingtalk.com/");
link.setPicUrl("");
link.setTitle("时代的火车向前开");
link.setText("这个即将发布的新版本,创始人xx称它为红树林。而在此之前,每当面临重大升级,产品经理们都会取一个应景的代号,这一次,为什么是红树林");
request.setLink(link);
request.setMsgtype("markdown");
OapiRobotSendRequest.Markdown markdown = new OapiRobotSendRequest.Markdown();
markdown.setTitle("杭州天气");
markdown.setText("#### 杭州天气 @156xxxx8827\n" +
"> 9度,西北风1级,空气良89,相对温度73%\n\n" +
"> \n" +
"> ###### 10点20分发布 [天气](http://www.thinkpage.cn/) \n");
request.setMarkdown(markdown);
OapiRobotSendResponse response = client.execute(request);
PHP程序测试
<?php
function request_by_curl($remote_server, $post_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $remote_server);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_HTTPHEADER, array ('Content-Type: application/json;charset=utf-8'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 线下环境不用开启curl证书验证, 未调通情况可尝试添加该代码
// curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
// curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$webhook = "https://oapi.dingtalk.com/robot/send?access_token=xxxxxx";
$message="我就是我, 是不一样的烟火";
$data = array ('msgtype' => 'text','text' => array ('content' => $message));
$data_string = json_encode($data);
$result = request_by_curl($webhook, $data_string);
echo $result;
?>
消息类型及数据格式
-
text类型
<pre id="codeblock-65h-qdr-1ts">{ "at": { "atMobiles":[ "180xxxxxx" ], "atUserIds":[ "user123" ], "isAtAll": false }, "text": { "content":"我就是我, @XXX 是不一样的烟火" }, "msgtype":"text" }<table id="table-qdq-lvz-5vf"> <thead id="thead-c6i-vs6-87b"> <tr id="tr-l6o-kwd-0lh"> <th id="td-tx2-sr0-jg2"> <p id="p-9n6-94a-k17"><strong>参数</strong></p> </th> <th id="td-o22-hsb-jmu"> <p id="p-yt8-d0l-ez5"><strong>参数类型</strong></p> </th> <th id="td-cyo-ixm-z1x"> <p id="p-zse-udd-0ne"><strong>是否必填</strong></p> </th> <th id="td-tq4-c4h-mk0"> <p id="p-fx2-0rk-ktt"><strong>必须</strong></p> </th> </tr> </thead> <tbody id="tbody-1e0-t7l-bbp"> <tr id="tr-eyx-s59-35b"> <td id="td-3d7-kvc-mhu"> <p id="p-9r1-d2w-gil">msgtype</p> </td> <td id="td-hl4-ffn-pqt"> <p id="p-87u-0tj-x3j">String</p> </td> <td id="td-8i0-qgh-5cr"> <p id="p-k90-t0l-nro">是</p> </td> <td id="td-0au-ael-igv"> <p id="p-02n-e32-983">消息类型,此时固定为:text。</p> </td> </tr> <tr id="tr-qs4-3mm-f0r"> <td id="td-5ij-wv9-b82"> <p id="p-lu0-dj4-1vi">content</p> </td> <td id="td-6t4-xn5-rbe"> <p id="p-qo8-hcx-u1d">String</p> </td> <td id="td-e3y-06s-jga"> <p id="p-tnn-13f-gox">是</p> </td> <td id="td-7hr-4gb-w4c"> <p id="p-fpx-nkx-qku">消息内容。</p> </td> </tr> <tr id="tr-uor-fzz-83r"> <td id="td-kck-nv4-6gw"> <p id="p-56w-33l-cd0">atMobiles</p> </td> <td id="td-twz-7dk-fyv"> <p id="p-du4-za0-lr3">Array</p> </td> <td id="td-t1k-ti9-ji8"> <p id="p-bvx-py1-d2u">否</p> </td> <td id="td-sbe-glw-9dj"> <p id="p-4zo-anu-qis">被@人的手机号。</p> <strong>注意 </strong> <p id="p-x2m-9ia-m2o">在content里添加@人的手机号,且只有在群内的成员才可被@,非群内成员手机号会被脱敏。</p> </td> </tr> <tr id="tr-1ly-wur-hp3"> <td id="td-2ky-4tp-txi"> <p id="p-2ix-axc-7kd">atUserIds</p> </td> <td id="td-x47-ee1-7x6"> <p id="p-tvn-gen-vwk">Array</p> </td> <td id="td-nzn-npl-342"> <p id="p-f8o-fgy-lfb">否</p> </td> <td id="td-xid-i8r-1hp"> <p id="p-lfh-edz-5rh">被@人的用户userid。</p> <strong>注意 </strong> <p id="p-6os-fms-gxq">在content里添加@人的userid。</p> </td> </tr> <tr id="tr-5sg-t2v-x7f"> <td id="td-f58-t2c-chh"> <p id="p-n7x-yqy-sd1">isAtAll</p> </td> <td id="td-1zc-1oh-lxb"> <p id="p-wlh-ygu-a6t">Boolean</p> </td> <td id="td-810-hjw-1fu"> <p id="p-7fr-jg7-kzy">否</p> </td> <td id="td-zfd-482-kfm"> <p id="p-182-054-d5i">是否@所有人。</p> </td> </tr> </tbody> </table> <p style="text-align:center"><img alt="777.png" id="img-nc4-vq6-50r" isbindedload="true" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e7d7de47bde045c9bca510ee2d888cc6~tplv-k3u1fbpfcp-zoom-1.image" /></p> </li> <li id="li-bfk-6jm-ttg"> <p id="p-43a-j5u-fjt"><strong>link类型</strong></p> <pre id="codeblock-2f3-jst-jka">{ "msgtype": "link", "link": { "text": "这个即将发布的新版本,创始人xx称它为红树林。而在此之前,每当面临重大升级,产品经理们都会取一个应景的代号,这一次,为什么是红树林", "title": "时代的火车向前开", "picUrl": "", "messageUrl": "www.dingtalk.com/s?__biz=MzA…" } }<table id="table-0vu-l8a-jvw"> <thead id="thead-g0k-cyt-c15"> <tr id="tr-ful-bjo-2b6"> <th id="td-ene-fes-as0"> <p id="p-6f0-0lf-jfz"><strong>参数</strong></p> </th> <th id="td-ry6-zb6-qf7"> <p id="p-ud9-fqg-u98"><strong>参数类型</strong></p> </th> <th id="td-xvp-q3u-kq1"> <p id="p-uwu-c2x-b5a">是否必填</p> </th> <th id="td-qcf-etd-tme"> <p id="p-ugz-uep-zno"><strong>说明</strong></p> </th> </tr> </thead> <tbody id="tbody-gh8-2zg-480"> <tr id="tr-pcc-g2r-isx"> <td id="td-n95-yl6-q3e"> <p id="p-tlt-fjj-m4q">msgtype</p> </td> <td id="td-cn6-0rw-l7e"> <p id="p-i7n-2vi-5jb">String</p> </td> <td id="td-0kh-tfe-yjf"> <p id="p-jkl-2eo-4vt">是</p> </td> <td id="td-fka-16w-bs8"> <p id="p-79k-chf-nng">消息类型,此时固定为:link。</p> </td> </tr> <tr id="tr-t3c-1t4-iak"> <td id="td-mc8-gk2-cul"> <p id="p-pep-6iz-y0f">title</p> </td> <td id="td-ylk-fs6-35v"> <p id="p-soq-gxy-grm">String</p> </td> <td id="td-dk0-w8j-y8p"> <p id="p-a9o-tx8-emf">是</p> </td> <td id="td-wmf-t1b-ayf"> <p id="p-uv6-a1z-bd3">消息标题。</p> </td> </tr> <tr id="tr-qss-mmy-hut"> <td id="td-bit-p1t-gc9"> <p id="p-rnw-tbg-0no">text</p> </td> <td id="td-ben-b8n-f2e"> <p id="p-ga5-obl-mhx">String</p> </td> <td id="td-50h-u9e-d3c"> <p id="p-k23-e5e-2j0">是</p> </td> <td id="td-bub-jcg-3gv"> <p id="p-niw-10l-sl7">消息内容。如果太长只会部分展示。</p> </td> </tr> <tr id="tr-5uu-f7t-jif"> <td id="td-0yq-1vz-hml"> <p id="p-g53-ysd-d6f">messageUrl</p> </td> <td id="td-lar-51v-5z4"> <p id="p-9rq-54i-tkd">String</p> </td> <td id="td-eoa-wu3-fl9"> <p id="p-pp8-bjo-ie9">是</p> </td> <td id="td-onv-7lb-8l7"> <p id="p-scl-xix-oq0">点击消息跳转的URL。</p> </td> </tr> <tr id="tr-vbf-mqj-7at"> <td id="td-ofu-t5z-ccf"> <p id="p-h0y-meg-jnq">picUrl</p> </td> <td id="td-4g8-ovp-1jt"> <p id="p-b67-q91-b9y">String</p> </td> <td id="td-30g-n2r-bkn"> <p id="p-wtf-uv3-7ho">否</p> </td> <td id="td-okw-z1y-1p8"> <p id="p-b2s-icx-577">图片URL。</p> </td> </tr> </tbody> </table> <p style="text-align:center"><img alt="image.png" id="img-p38-afv-sdn" isbindedload="true" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9f80fb25c5a94a4dafa3390ce3696041~tplv-k3u1fbpfcp-zoom-1.image" /></p> </li> <li id="li-p7l-mkl-y1g"> <p id="p-67v-1uj-ina"><strong>markdown类型</strong></p> <pre id="codeblock-zq5-4wd-tq7">{ "msgtype": "markdown", "markdown": { "title":"杭州天气", "text": "#### 杭州天气 @150XXXXXXXX \n > 9度,西北风1级,空气良89,相对温度73%\n >
\n > ###### 10点20分发布 天气 \n"
},
"at": {
"atMobiles": [
"150XXXXXXXX"
],
"atUserIds": [
"user123"
],
"isAtAll": false
}
}<table id="table-whj-lqa-bgp"> <thead id="thead-0ng-b82-b2j"> <tr id="tr-ibe-98n-kdj"> <th id="td-n18-fog-3tz"> <p id="p-ma3-xrl-uvm"><strong>参数</strong></p> </th> <th id="td-w1c-u1y-v4r"> <p id="p-wsk-l3a-n11"><strong>类型</strong></p> </th> <th id="td-3jr-9g0-s2s"> <p id="p-dfv-d4m-omi">是否必填</p> </th> <th id="td-uma-kdw-r54"> <p id="p-m59-z0o-1od"><strong>说明</strong></p> </th> </tr> </thead> <tbody id="tbody-ei9-khf-l8r"> <tr id="tr-lil-62a-nzl"> <td id="td-akd-g54-o5f"> <p id="p-mnk-sig-t2p">msgtype</p> </td> <td id="td-8dj-6aj-gb9"> <p id="p-pjm-usm-55r">String</p> </td> <td id="td-6j3-ou7-q79"> <p id="p-mjz-2ut-hc1">是</p> </td> <td id="td-9ks-akt-ky2"> <p id="p-8nb-up4-sw2">消息类型,此时固定为:markdown。</p> </td> </tr> <tr id="tr-1z8-cv3-9ud"> <td id="td-aq1-076-95r"> <p id="p-3c8-tgh-b21">title</p> </td> <td id="td-fof-2zp-kkl"> <p id="p-s2x-p0g-6wb">String</p> </td> <td id="td-yi9-1ys-lqo"> <p id="p-to5-qi4-9do">是</p> </td> <td id="td-zsy-ekn-8di"> <p id="p-vqe-mlf-yi9">首屏会话透出的展示内容。</p> </td> </tr> <tr id="tr-fo4-4i3-4ur"> <td id="td-8yd-sik-8yo"> <p id="p-m2v-b7w-mic">text</p> </td> <td id="td-4rk-z8d-jio"> <p id="p-mw4-u0j-v09">String</p> </td> <td id="td-gji-mde-ske"> <p id="p-xjn-zat-zwv">是</p> </td> <td id="td-xlx-c6x-vfh"> <p id="p-ofx-a2b-249">markdown格式的消息。</p> </td> </tr> <tr id="tr-jdz-4kl-gjz"> <td id="td-20v-902-r8a"> <p id="p-vo3-9u7-aqp">atMobiles</p> </td> <td id="td-id2-hl3-k3j"> <p id="p-0lg-atn-6z2">Array</p> </td> <td id="td-csv-x2g-rb2"> <p id="p-6yn-4ms-147">否</p> </td> <td id="td-szt-wcx-ayy"> <p id="p-4mf-hw5-f4k">被@人的手机号。</p> <strong>注意 </strong> <p id="p-zp4-uti-m6d">在text内容里要有@人的手机号,只有在群内的成员才可被@,非群内成员手机号会被脱敏。</p> </td> </tr> <tr id="tr-ut1-yrm-jan"> <td id="td-ryw-jga-qo4"> <p id="p-oew-cs8-1g8">atUserIds</p> </td> <td id="td-0l2-qpq-1ib"> <p id="p-hji-toh-nui">Array</p> </td> <td id="td-bbl-l0c-rfo"> <p id="p-me0-ibi-2jr">否</p> </td> <td id="td-pci-mvj-5ki"> <p id="p-qo2-2b9-bxe">被@人的用户userid。</p> <strong>注意 </strong> <p id="p-vn6-zf0-tat">在content里添加@人的userid。</p> </td> </tr> <tr id="tr-2j4-txv-dox"> <td id="td-0t7-43a-g3l"> <p id="p-sp0-i3n-h36">isAtAll</p> </td> <td id="td-1q5-6dj-v6m"> <p id="p-y1k-iul-ydv">Boolean</p> </td> <td id="td-w08-26p-8q3"> <p id="p-jju-dme-mng">否</p> </td> <td id="td-86m-226-atg"> <p id="p-y4a-ycb-s3u">是否@所有人。</p> </td> </tr> </tbody> </table> <p style="text-align:center"><img alt="image.png" id="img-eq6-n3z-sf9" isbindedload="true" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1508edfb69b343868291c895a87e2124~tplv-k3u1fbpfcp-zoom-1.image" /></p> <p id="p-zj0-f49-vfa">目前只支持markdown语法的子集,具体支持的元素如下:</p> <pre id="codeblock-cfg-fs8-o88">标题一级标题
二级标题
三级标题
四级标题
五级标题
六级标题
引用 > A man who stands for nothing will fall for anything.
文字加粗、斜体 bold italic
图片

无序列表
- item1
- item2
有序列表
-
item1
item2-
整体跳转ActionCard类型
{ "actionCard": { "title": "乔布斯 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身", "text": "
乔布斯 20 年前想打造的苹果咖啡厅
Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划", "btnOrientation": "0", "singleTitle" : "阅读全文", "singleURL" : "www.dingtalk.com/" }, "msgtype": "actionCard" }<table id="table-kux-aua-s91"> <thead id="thead-30x-pos-w5m"> <tr id="tr-1jd-h2k-rr4"> <th id="td-xrv-4ur-6gv"> <p id="p-2q7-f4b-38h"><strong>参数</strong></p> </th> <th id="td-j78-xz4-qar"> <p id="p-k5p-gbj-004"><strong>类型</strong></p> </th> <th id="td-v2b-1u6-smg"> <p id="p-duu-0k8-v0g"><strong>是否必填</strong></p> </th> <th id="td-zum-wl1-t3w"> <p id="p-mh8-7nv-qyy"><strong>说明</strong></p> </th> </tr> </thead> <tbody id="tbody-gbt-jqj-330"> <tr id="tr-os2-3ka-xqz"> <td id="td-wpy-mix-bth"> <p id="p-fdu-l5z-2kn">msgtype</p> </td> <td id="td-my6-2xt-3ny"> <p id="p-cue-gdl-0xw">String</p> </td> <td id="td-2dk-0t7-ld6"> <p id="p-d7c-f3m-csw">是</p> </td> <td id="td-1dd-enc-rj0"> <p id="p-zoe-43p-7jc">消息类型,此时固定为:actionCard。</p> </td> </tr> <tr id="tr-g9j-95x-1l3"> <td id="td-vkv-4rv-r1e"> <p id="p-o70-4fb-7lf">title</p> </td> <td id="td-1dl-lsx-yyd"> <p id="p-pel-zyu-o08">String</p> </td> <td id="td-gux-194-sjt"> <p id="p-m6b-w9i-ixa">是</p> </td> <td id="td-md8-5kl-o8a"> <p id="p-4n1-nga-x9i">首屏会话透出的展示内容。</p> </td> </tr> <tr id="tr-q4m-hkt-dxs"> <td id="td-mqr-xly-j7j"> <p id="p-iq5-w32-d92">text</p> </td> <td id="td-3f5-el2-989"> <p id="p-uz8-0i1-eav">String</p> </td> <td id="td-o82-twd-wrj"> <p id="p-rbi-5fr-vu3">是</p> </td> <td id="td-oid-1o3-ie7"> <p id="p-zgl-bqk-85c">markdown格式的消息。</p> </td> </tr> <tr id="tr-h09-us5-vqi"> <td id="td-235-6ce-956"> <p id="p-4dk-tlx-oca">singleTitle</p> </td> <td id="td-wbd-jha-phr"> <p id="p-sra-02y-12u">String</p> </td> <td id="td-jp2-rtd-lvr"> <p id="p-ymy-hni-6a1">是</p> </td> <td id="td-dny-hfy-28g"> <p id="p-8rn-z95-u6k">单个按钮的标题。</p> <strong>注意 </strong> <p id="p-aai-ss6-up0">设置此项和singleURL后,btns无效。</p> </td> </tr> <tr id="tr-y8w-rro-zzi"> <td id="td-m9r-c6x-xrt"> <p id="p-7jj-aef-mu5">singleURL</p> </td> <td id="td-5yr-5ep-jud"> <p id="p-igr-afk-w6l">String</p> </td> <td id="td-7ga-43s-zmg"> <p id="p-nif-dgj-856">是</p> </td> <td id="td-sgo-e84-3nw"> <p id="p-xur-yc8-0yv">点击singleTitle按钮触发的URL。</p> </td> </tr> <tr id="tr-55n-nxj-1h7"> <td id="td-zt4-yd3-1jq"> <p id="p-ezz-354-18z">btnOrientation</p> </td> <td id="td-bdq-fwk-4mf"> <p id="p-n3k-lrc-zzz">String</p> </td> <td id="td-feb-1gs-1ib"> <p id="p-r1p-ule-x8m">否</p> </td> <td id="td-9k2-tx5-t6u"> <p id="p-lpc-kz3-kiv">0:按钮竖直排列</p> <p id="p-9ev-fhc-95e">1:按钮横向排列</p> </td> </tr> </tbody> </table> <p id="p-ocs-rc8-3nx">通过整体跳转ActionCard类型消息发出的消息样式如下:</p> <p style="text-align:center"><img alt="image.png" id="img-57k-avd-o9t" isbindedload="true" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6f2b094a45794592911bdd62c42d81e2~tplv-k3u1fbpfcp-zoom-1.image" /></p> </li> <li id="li-c9r-3a2-q4c"> <p id="p-f7b-4cv-pqn"><strong>独立跳转ActionCard类型</strong></p> <pre id="codeblock-f54-zyv-vnu">{ "msgtype": "actionCard", "actionCard": { "title": "我 20 年前想打造一间苹果咖啡厅,而它正是 Apple Store 的前身", "text": "
\n\n #### 乔布斯 20 年前想打造的苹果咖啡厅 \n\n Apple Store 的设计正从原来满满的科技感走向生活化,而其生活化的走向其实可以追溯到 20 年前苹果一个建立咖啡馆的计划",
"btnOrientation": "0",
"btns": [
{
"title": "内容不错",
"actionURL": "www.dingtalk.com/"
},
{
"title": "不感兴趣",
"actionURL": "www.dingtalk.com/"
}
]
}
}<table id="table-hzc-cx3-vne"> <thead id="thead-zzf-gwy-r05"> <tr id="tr-peo-en9-3rc"> <th id="td-frj-y39-q7u"> <p id="p-i24-dm1-foz"><strong>参数</strong></p> </th> <th id="td-odt-f1w-nri"> <p id="p-zum-ryn-qvt"><strong>类型</strong></p> </th> <th id="td-4lo-z62-yme"> <p id="p-h4t-7aw-bui">是否必填</p> </th> <th id="td-nox-nxx-oz0"> <p id="p-lbk-huh-rcd">说明</p> </th> </tr> </thead> <tbody id="tbody-j87-dnz-6l0"> <tr id="tr-qx6-9rm-45f"> <td id="td-aah-gct-yyk"> <p id="p-2ve-zas-2qa">msgtype</p> </td> <td id="td-cpu-9r7-s12"> <p id="p-vi5-m3f-z28">String</p> </td> <td id="td-e3j-hzo-899"> <p id="p-ha7-b41-li6">是</p> </td> <td id="td-zpu-ceu-kcm"> <p id="p-h8w-fqw-ij7">此消息类型为固定actionCard。</p> </td> </tr> <tr id="tr-f8c-4vp-5l7"> <td id="td-uf6-e9z-eps"> <p id="p-8ux-t76-4i5">title</p> </td> <td id="td-6y2-loa-2l8"> <p id="p-v9a-3wb-1ro">String</p> </td> <td id="td-57g-2p9-uty"> <p id="p-kux-0ju-3xh">是</p> </td> <td id="td-57w-2jc-bx9"> <p id="p-m3p-s4y-p1o">首屏会话透出的展示内容。</p> </td> </tr> <tr id="tr-mz7-3xw-5u7"> <td id="td-t6r-4e0-q2r"> <p id="p-sqr-6h9-xnv">text</p> </td> <td id="td-zhc-epy-gpu"> <p id="p-nkz-w2f-59j">String</p> </td> <td id="td-c5j-q74-cvb"> <p id="p-7t2-r80-3cd">是</p> </td> <td id="td-fs9-m44-gt5"> <p id="p-3sa-er6-mox">markdown格式的消息。</p> </td> </tr> <tr id="tr-v8w-wn4-d3a"> <td id="td-5zg-fbj-h0j"> <p id="p-hsj-kf0-0ry">btns</p> </td> <td id="td-ff7-fp4-uty"> <p id="p-0mj-i8g-hzb">Array</p> </td> <td id="td-n4b-ry8-oc6"> <p id="p-3hm-tcg-kl8">是</p> </td> <td id="td-m6c-5re-z6v"> <p id="p-35c-g7v-x7y">按钮。</p> </td> </tr> <tr id="tr-hay-gjc-i5o"> <td id="td-rlq-rbr-c9y"> <p id="p-p7d-af6-n10">title</p> </td> <td id="td-41k-3x3-gnx"> <p id="p-eat-kz7-h1e">String</p> </td> <td id="td-j8h-jy5-hd6"> <p id="p-76i-nsj-uwk">是</p> </td> <td id="td-h3g-1zm-9av"> <p id="p-wo9-smk-glm">按钮标题。</p> </td> </tr> <tr id="tr-wfe-ty6-88i"> <td id="td-l6y-8pw-0m5"> <p id="p-tj8-oam-snx">actionURL</p> </td> <td id="td-3lk-o0p-gn9"> <p id="p-i47-n45-enh">String</p> </td> <td id="td-uaz-4lf-361"> <p id="p-ocp-tzt-3p2">是</p> </td> <td id="td-9ky-1zh-pp9"> <p id="p-jxn-ddx-fjt">点击按钮触发的URL。</p> </td> </tr> <tr id="tr-x7b-ox4-zsk"> <td id="td-yrr-4ro-6yq"> <p id="p-tpd-l0l-tv1">btnOrientation</p> </td> <td id="td-i75-11i-vcx"> <p id="p-mdx-3st-e8v">String</p> </td> <td id="td-499-yoh-b15"> <p id="p-hto-6kl-l7f">否</p> </td> <td id="td-ygr-z7b-3ri"> <p id="p-ita-n7y-qxe">0:按钮竖直排列</p> <p id="p-3y3-ak5-yv7">1:按钮横向排列</p> </td> </tr> </tbody> </table> <p id="p-42i-wpb-emj">通过独立跳转ActionCard类型消息发出的消息样式如下:</p> <p style="text-align:center"><img alt="屏幕快照 2019-12-25 下午8.27.52.png" id="img-mzy-l6o-4hb" isbindedload="true" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5fc2274093284b4e8efa8b5bd66586ae~tplv-k3u1fbpfcp-zoom-1.image" /></p> </li> <li id="li-m4j-gyd-8pk"> <p id="p-nnx-e6k-3el"><strong>FeedCard类型</strong></p> <pre id="codeblock-156-irs-p4c">{ "msgtype":"feedCard", "feedCard": { "links": [ { "title": "时代的火车向前开1", "messageURL": "www.dingtalk.com/", "picURL": "img.alicdn.com/tfs/TB1NwmB…" }, { "title": "时代的火车向前开2", "messageURL": "www.dingtalk.com/", "picURL": "img.alicdn.com/tfs/TB1NwmB…" } ] } }<table id="table-zm7-ds2-5s0"> <thead id="thead-ye8-g6a-3sd"> <tr id="tr-xrk-slh-2x0"> <th id="td-14k-tez-th5"> <p id="p-awf-i8l-ctu"><strong>参数</strong></p> </th> <th id="td-kdt-4tm-0or"> <p id="p-1sj-rsw-vc3"><strong>类型</strong></p> </th> <th id="td-cio-m84-u2x"> <p id="p-uab-2ju-pi5">是否必填</p> </th> <th id="td-ldk-x5c-kpd"> <p id="p-ix8-09h-fc5"><strong>说明</strong></p> </th> </tr> </thead> <tbody id="tbody-zv1-l72-u9w"> <tr id="tr-i8a-dpj-74b"> <td id="td-f7q-0q8-18v"> <p id="p-z1n-wbl-gdv">msgtype</p> </td> <td id="td-0n3-dch-ls2"> <p id="p-itm-0ed-dye">String</p> </td> <td id="td-wlj-qlv-g6e"> <p id="p-457-wfp-8gx">是</p> </td> <td id="td-1eq-v2e-dc9"> <p id="p-ok9-cpo-234">此消息类型为固定feedCard。</p> </td> </tr> <tr id="tr-b8k-h6p-bz7"> <td id="td-sws-ufe-vze"> <p id="p-bsq-5w7-duf">title</p> </td> <td id="td-ll1-4sk-yua"> <p id="p-3ae-efy-w3h">String</p> </td> <td id="td-l4s-0eb-mm8"> <p id="p-0pw-vt9-e0y">是</p> </td> <td id="td-0m5-4k6-ws0"> <p id="p-s0q-jbq-46h">单条信息文本。</p> </td> </tr> <tr id="tr-xa9-544-73p"> <td id="td-z81-880-532"> <p id="p-qe0-5t2-rps">messageURL</p> </td> <td id="td-oya-q0s-sjj"> <p id="p-zg7-jet-ps1">String</p> </td> <td id="td-vmr-2by-kxa"> <p id="p-tpv-ypv-oge">是</p> </td> <td id="td-eq7-gzw-s3y"> <p id="p-slx-z8i-d2w">点击单条信息到跳转链接。</p> </td> </tr> <tr id="tr-e88-0yt-9uw"> <td id="td-nwb-gfo-jcy"> <p id="p-2e2-jph-w4r">picURL</p> </td> <td id="td-ye7-24z-ane"> <p id="p-qz6-2jh-j2b">String</p> </td> <td id="td-a9o-19m-gd7"> <p id="p-873-zfc-5c0">是</p> </td> <td id="td-bs7-w34-d9v"> <p id="p-ibn-9nk-bmn">单条信息后面图片的URL。</p> </td> </tr> </tbody> </table> <p id="p-ym8-eh5-is1">通过FeedCard类型消息发出的消息样式如下:</p> <p style="text-align:center"><img alt="屏幕快照 2019-12-25 下午8.29.45.png" id="img-h6q-8i1-14f" isbindedload="true" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0fde29cde2254bf3adbeeedf39c218a5~tplv-k3u1fbpfcp-zoom-1.image" /></p> </li>
常见问题
-
当出现以下错误时,表示消息校验未通过,请查看机器人的安全设置。
<pre id="codeblock-5i5-cuf-2jx">// 消息内容中不包含任何关键词 { "errcode":310000, "errmsg":"keywords not in content" }// timestamp 无效 { "errcode":310000, "errmsg":"invalid timestamp" }
// 签名不匹配 { "errcode":310000, "errmsg":"sign not match" }
// IP地址不在白名单 { "errcode":310000, "errmsg":"ip X.X.X.X not in whitelist" }