扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
零、前言
成都创新互联是专业的西城网站建设公司,西城接单;提供成都网站建设、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行西城网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!上一次做消息推送,是微信公众号的定时消息通知。
由于自己当时的水平不够,加上企鹅家的开发文档普遍不太友好,导致根本看不懂文档在写什么,不得不去看第三方博客来学习公众号的开发。
这次就不一样了,昨天刚看了一下,阿里的开发文档比鹅厂要清晰的多,而且在同一功能上,使用了多种语言作为示例代码,可以说很友好了。可能这就是阿里和鹅厂的区别吧...辣鸡文档和好文档的区别...
本着“授之以渔”的态度,写了这篇文章,作为官方文档的补充。
一、在群里添加机器人
在群设置的智能群助手中添加自定义机器人,它长这个样子:
比较关键的一步,是进行安全设置。
加密方式一共有三种,既可以选择一种也可以使用多种方式组合:
各种加密方式的介绍,详见官网:https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
为了让博客起到效果,我们选择相对安全、也比较难的加签方式。
选择加签之后,把密钥复制出来,然后就可以点确定了。
二、构建请求地址和内容
先看看官方文档怎么描述加签的:
第一步,把timestamp+"\n"+密钥当做签名字符串,使用HmacSHA256算法计算签名,然后进行Base64 encode,最后再把签名参数再进行urlEncode,得到最终的签名(需要使用UTF-8字符集)。
第二步,把 timestamp和第一步得到的签名值拼接到URL中。
官方的解释很高大上,其实原理很简单,就是把机器人密钥加密后,放在URL的参数中,所以我们需要分别获取时间戳和密钥,组合一下,加密一下,再拼接一下就好了,如图:
I have a Pen,I have an Apple,Oh~ Applepen~
官方给出了这样的示例代码:
import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; import java.net.URLEncoder; public class Test { public static void main(String[] args) throws Exception { Long timestamp = System.currentTimeMillis(); String secret = "this is secret"; String stringToSign = timestamp + "\n" + secret; Mac mac = Mac.getInstance("HmacSHA256"); mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256")); byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8")); String sign = URLEncoder.encode(new String(Base64.encodeBase64(signData)),"UTF-8"); System.out.println(sign); } }
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流