釘釘自定義機器人 iOS 實現(xiàn)

項目展示

Snip20170317_19.png

Snip20170317_20.png

Snip20170317_21.png

Snip20170317_22.png

釘釘上添加自定義機器人

在機器人管理頁面選擇“自定義”機器人,輸入機器人名字并選擇要發(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工程項目下載

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市踊挠,隨后出現(xiàn)的幾起案子乍桂,更是在濱河造成了極大的恐慌,老刑警劉巖效床,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睹酌,死亡現(xiàn)場離奇詭異,居然都是意外死亡剩檀,警方通過查閱死者的電腦和手機憋沿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沪猴,“玉大人辐啄,你說我怎么就攤上這事≡耸龋” “怎么了壶辜?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長担租。 經(jīng)常有香客問我砸民,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任岭参,我火速辦了婚禮反惕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘演侯。我一直安慰自己姿染,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布蚌本。 她就那樣靜靜地躺著盔粹,像睡著了一般隘梨。 火紅的嫁衣襯著肌膚如雪程癌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天轴猎,我揣著相機與錄音嵌莉,去河邊找鬼。 笑死捻脖,一個胖子當(dāng)著我的面吹牛锐峭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播可婶,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼沿癞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了矛渴?” 一聲冷哼從身側(cè)響起椎扬,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎具温,沒想到半個月后蚕涤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡铣猩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年揖铜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片达皿。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡天吓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出峦椰,到底是詐尸還是另有隱情龄寞,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布们何,位于F島的核電站萄焦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拂封,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一茬射、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冒签,春花似錦在抛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至票唆,卻和暖如春朴读,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背走趋。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工衅金, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人簿煌。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓氮唯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親姨伟。 傳聞我的和親對象是個殘疾皇子惩琉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)夺荒,斷路器瞒渠,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 點擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個完善的 IM 系統(tǒng)...
    layjoy閱讀 13,674評論 0 15
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一種新的協(xié)議。它實...
    香橙柚子閱讀 23,724評論 8 183
  • 你們回家了 好多人一起回的 回家的時候正巧是初雪 石榴樹的花已經(jīng)開過了 花開的時候般堆,我還在 我也要回家了在孝,火車很長...
    蟋蟀王閱讀 176評論 0 4
  • 我熱愛手工私沮,喜歡做可愛的發(fā)飾,喜歡給姑娘做漂亮的衣服和橙,喜歡做姑娘的禮服仔燕!想擁有屬于自己的一間工作室,里面擺滿了架子...
    ad06e9b91f35閱讀 298評論 0 0