美文网首页
钉钉自定义机器人 iOS 实现

钉钉自定义机器人 iOS 实现

作者: 山水域 | 来源:发表于2017-03-17 16:32 被阅读1686次

项目展示

Snip20170317_19.png
Snip20170317_20.png
Snip20170317_21.png
Snip20170317_22.png

钉钉上添加自定义机器人

在机器人管理页面选择“自定义”机器人,输入机器人名字并选择要发送消息的群。如果需要的话,可以为机器人设置一个头像。点击“完成添加”。

群主才能添加机器人
群主才能添加机器人

点击“复制”按钮,即可获得这个机器人对应的Webhook地址,其格式如下
https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx

使用自定义机器人

获取到Webhook地址后,用户可以使用任何方式向这个地址发起HTTP POST 请求,即可实现给该群组发送消息。注意,发起POST请求时,必须将字符集编码设置成UTF-8。
当前自定义机器人支持文本(text)、连接(link)、markdown(markdown)三种消息类型,大家可以根据自己的使用场景选择合适的消息类型,达到最好的展示样式。具体的消息类型参考下一节内容。
自定义机器人发送消息时,可以通过手机号码指定“被@人列表”。在“被@人列表”里面的人员,在收到该消息时,会有@消息提醒(免打扰会话仍然通知提醒,首屏出现“有人@你”)

消息类型及数据格式(数据以字典形式存储)

text类型

{
"msgtype": "text", 
"text": {
    "content": "我就是我, 是不一样的烟火"
}, 
"at": {
    "atMobiles": [
        "156xxxx8827", 
        "189xxxx8325"
    ], 
    "isAtAll": false
}
}
参数 参数类型 必须 说明
msgtype String 消息类型,此时固定为:text
content String 消息内容
atMobiles Array 被@人的手机号
isAtAll bool @所有人时:true,否则为:false

link类型

{
    "msgtype": "link", 
    "link": {
        "text": "这个即将发布的新版本,创始人陈航(花名“无招”)称它为“红树林”。
而在此之前,每当面临重大升级,产品经理们都会取一个应景的代号,这一次,为什么是“红树林”?", 
        "title": "时代的火车向前开", 
        "picUrl": "", 
        "messageUrl": "https://mp.weixin.qq.com/s?__biz=MzA4NjMwMTA2Ng==&mid=2650316842&idx=1&sn=60da3ea2b29f1dcc43a7c8e4a7c97a16&scene=2&srcid=09189AnRJEdIiWVaKltFzNTw&from=timeline&isappinstalled=0&key=&ascene=2&uin=&devicetype=android-23&version=26031933&nettype=WIFI"
    }
}
参数 参数类型 必须 说明
msgtype String 消息类型,此时固定为:link
title String 消息标题
text String 消息内容。如果太长只会部分展示
messageUrl String 点击消息跳转的URL
picUrl String 图片URL

markdown类型

{
     "msgtype": "markdown",
     "markdown": {
         "title":"杭州天气",
         "text": "#### 杭州天气\n" +
                 "> 9度,西北风1级,空气良89,相对温度73%\n\n" +
                 "> ![screenshot](http://image.jpg)\n"  +
                 "> ###### 10点20分发布 [天气](http://www.thinkpage.cn/) \n"
     }
 }
参数 参数类型 必须 说明
msgtype true string 此消息类型为固定markdown
title true string 首屏会话透出的展示内容
text true string markdown格式的消息

说明:目前只支持md语法的子集,具体支持的元素如下:

标题
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题
 
引用
> A man who stands for nothing will fall for anything.
 
文字加粗、斜体
**bold**
*italic*
 
链接
[this is a link](http://name.com)
 
图片
![](http://name.com/pic.jpg)
 
无序列表
- item1
- item2
 
有序列表
1. item1
2. item2

iOS 代码实现(以text类型为例子)

这里需要注意的是创建请求对象后需要设置HTTPHeaderField,否则会请求报错。

 [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

POST同步请求

    // 1.设置请求路径
    NSURL *URL=[NSURL URLWithString:kAccessToken];//不需要传递参数
    
    //    2.创建请求对象
    NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:URL];//默认为get请求
    request.timeoutInterval=5.0;//设置请求超时为5秒
    request.HTTPMethod=@"POST";//设置请求方法
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    //设置请求体
    NSMutableDictionary *contentDic = [[NSMutableDictionary alloc] init];
    [contentDic setObject:[NSString stringWithFormat:@"%@",self.contentTextView.text] forKey:@"content"];
    
    [self.infoDic setObject:@"text" forKey:@"msgtype"];
    [self.infoDic setObject:contentDic forKey:@"text"];
    if (self.switchAllPeople.on) {
        [self.infoDic setObject:[NSDictionary dictionaryWithObjectsAndKeys:@"true",@"isAtAll", nil] forKey:@"at"];
    }else {
        [self.infoDic setObject:[NSDictionary dictionaryWithObjectsAndKeys:@"false",@"isAtAll", nil] forKey:@"at"];
    }
    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self.infoDic options:NSJSONWritingPrettyPrinted error:&error];
    //把拼接后的字符串转换为data,设置请求体
    request.HTTPBody=jsonData;
    
    //第三步,连接服务器
        NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
        NSString *str1 = [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding];
        NSLog(@"error = %@  \n 返回信息 = %@",error,str1);

POST 异步请求

NSMutableDictionary *contentDic = [[NSMutableDictionary alloc] init];
    [contentDic setObject:[NSString stringWithFormat:@"%@",self.contentTextView.text] forKey:@"content"];
    [self.infoDic setObject:@"text" forKey:@"msgtype"];
    [self.infoDic setObject:contentDic forKey:@"text"];
    if (self.switchAllPeople.on) {
        [self.infoDic setObject:[NSDictionary dictionaryWithObjectsAndKeys:@"true",@"isAtAll", nil] forKey:@"at"];
    }else {
        [self.infoDic setObject:[NSDictionary dictionaryWithObjectsAndKeys:@"false",@"isAtAll", nil] forKey:@"at"];
    }
    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self.infoDic options:NSJSONWritingPrettyPrinted error:&error];

    
    NSURL *url = [NSURL URLWithString:kAccessToken];
    NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:url];
    [req setHTTPMethod:@"POST"];
    [req setHTTPBody:jsonData];
    [req setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [NSURLConnection connectionWithRequest:req delegate:self];

工程完整实现text类型、link类型、markdown类型等信息的发送
码云项目工程下载
Github工程项目下载

相关文章

  • Rboot 文档--钉钉消息转接器

    简介 钉钉提供了自定义的webhook机器人和企业机器人,钉钉消息转接器就是通过这两个功能实现的。 请确保你已经了...

  • Prometheus Operator配置钉钉告警

    配置钉钉告警 1、注册钉钉账号->机器人管理->自定义(通过webhook接入自定义服务)->添加->复制webh...

  • 钉钉机器人加签

    钉钉自定义机器人加签 钉钉自定义机器人安全设置为加签模式,把timestamp+"\n"+密钥当做签名字符串,使用...

  • Python_钉钉机器人

    一、打开钉钉群,添加自定义机器人,记住创建机器人的webhook即可。二、发送消息到钉钉群: 发送的消息类型参见钉...

  • 钉钉机器人消息Python封装(开源)

    一、钉钉自定义机器人介绍 钉钉机器人是钉钉群的一个高级扩展功能,但使用起来却非常简单,只需要注册一个钉钉账号,就可...

  • 钉钉自定义机器人 iOS 实现

    项目展示 钉钉上添加自定义机器人 在机器人管理页面选择“自定义”机器人,输入机器人名字并选择要发送消息的群。如果需...

  • 钉钉机器人开发

    钉钉机器人开发文档API 一,先创建一个钉钉群 二,添加自定义机器人 三,安全设置(3选1) 四, 复制webho...

  • Zabbix5.0 钉钉报警配置

    一、创建钉钉机器人 1.1 步骤:智能群助手--->添加机器人--->自定义--->添加 1.2 进行机器人设置 ...

  • iOS自动化构建 - fastlane持续集成(蒲公英、钉钉)

    本文主要使用 fastlane 配置 iOS 的持续集成,一行命令实现, 自动编译、打包、上传蒲公英、钉钉机器人通...

  • Python3发送钉钉消息

    钉钉自定义机器人 API 官方文档 一、自定义机器人 郑重警告⚠️ 每个机器人每分钟只可以发送 20 条信息,多了...

网友评论

      本文标题:钉钉自定义机器人 iOS 实现

      本文链接:https://www.haomeiwen.com/subject/gpienttx.html