項目展示
釘釘上添加自定義機器人
在機器人管理頁面選擇“自定義”機器人,輸入機器人名字并選擇要發(fā)送消息的群。如果需要的話椭懊,可以為機器人設(shè)置一個頭像宇立。點擊“完成添加”踪宠。
點擊“復(fù)制”按鈕,即可獲得這個機器人對應(yīng)的Webhook地址妈嘹,其格式如下
https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxx
使用自定義機器人
獲取到Webhook地址后柳琢,用戶可以使用任何方式向這個地址發(fā)起HTTP POST 請求,即可實現(xiàn)給該群組發(fā)送消息润脸。注意柬脸,發(fā)起POST請求時,必須將字符集編碼設(shè)置成UTF-8毙驯。
當(dāng)前自定義機器人支持文本(text)肖粮、連接(link)、markdown(markdown)三種消息類型尔苦,大家可以根據(jù)自己的使用場景選擇合適的消息類型涩馆,達到最好的展示樣式。具體的消息類型參考下一節(jié)內(nèi)容允坚。
自定義機器人發(fā)送消息時魂那,可以通過手機號碼指定“被@人列表”。在“被@人列表”里面的人員稠项,在收到該消息時涯雅,會有@消息提醒(免打擾會話仍然通知提醒,首屏出現(xiàn)“有人@你”)
消息類型及數(shù)據(jù)格式(數(shù)據(jù)以字典形式存儲)
text類型
{
"msgtype": "text",
"text": {
"content": "我就是我, 是不一樣的煙火"
},
"at": {
"atMobiles": [
"156xxxx8827",
"189xxxx8325"
],
"isAtAll": false
}
}
參數(shù) | 參數(shù)類型 | 必須 | 說明 |
---|---|---|---|
msgtype | String | 是 | 消息類型展运,此時固定為:text |
content | String | 是 | 消息內(nèi)容 |
atMobiles | Array | 否 | 被@人的手機號 |
isAtAll | bool | 否 | @所有人時:true,否則為:false |
link類型
{
"msgtype": "link",
"link": {
"text": "這個即將發(fā)布的新版本活逆,創(chuàng)始人陳航(花名“無招”)稱它為“紅樹林”精刷。
而在此之前,每當(dāng)面臨重大升級蔗候,產(chǎn)品經(jīng)理們都會取一個應(yīng)景的代號怒允,這一次,為什么是“紅樹林”锈遥?",
"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"
}
}
參數(shù) | 參數(shù)類型 | 必須 | 說明 |
---|---|---|---|
msgtype | String | 是 | 消息類型纫事,此時固定為:link |
title | String | 是 | 消息標(biāo)題 |
text | String | 是 | 消息內(nèi)容。如果太長只會部分展示 |
messageUrl | String | 是 | 點擊消息跳轉(zhuǎn)的URL |
picUrl | String | 否 | 圖片URL |
markdown類型
{
"msgtype": "markdown",
"markdown": {
"title":"杭州天氣",
"text": "#### 杭州天氣\n" +
"> 9度所灸,西北風(fēng)1級丽惶,空氣良89,相對溫度73%\n\n" +
"> ![screenshot](http://image.jpg)\n" +
"> ###### 10點20分發(fā)布 [天氣](http://www.thinkpage.cn/) \n"
}
}
參數(shù) | 參數(shù)類型 | 必須 | 說明 |
---|---|---|---|
msgtype | true | string | 此消息類型為固定markdown |
title | true | string | 首屏?xí)捦赋龅恼故緝?nèi)容 |
text | true | string | markdown格式的消息 |
說明:目前只支持md語法的子集爬立,具體支持的元素如下:
標(biāo)題
# 一級標(biāo)題
## 二級標(biāo)題
### 三級標(biāo)題
#### 四級標(biāo)題
##### 五級標(biāo)題
###### 六級標(biāo)題
引用
> 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 代碼實現(xiàn)(以text類型為例子)
這里需要注意的是創(chuàng)建請求對象后需要設(shè)置HTTPHeaderField
,否則會請求報錯侠驯。
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
POST同步請求
// 1.設(shè)置請求路徑
NSURL *URL=[NSURL URLWithString:kAccessToken];//不需要傳遞參數(shù)
// 2.創(chuàng)建請求對象
NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:URL];//默認為get請求
request.timeoutInterval=5.0;//設(shè)置請求超時為5秒
request.HTTPMethod=@"POST";//設(shè)置請求方法
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
//設(shè)置請求體
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];
//把拼接后的字符串轉(zhuǎn)換為data抡秆,設(shè)置請求體
request.HTTPBody=jsonData;
//第三步,連接服務(wù)器
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];
工程完整實現(xiàn)text類型陵霉、link類型琅轧、markdown類型等信息的發(fā)送
碼云項目工程下載
Github工程項目下載