如何使用羣機器人
- 在終端某個羣組添加機器人之後,可以獲取到webhook地址,然後開發者用戶按以下說明構造post data向這個地址發起HTTP POST 請求,即可實現給該羣組發送消息。下面舉個簡單的例子.
假設webhook是:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa
特別特別要注意:一定要保護好機器人的webhook地址,避免泄漏!不要分享到github、博客等可被公開查閱的地方,否則壞人就可以用你的機器人來發垃圾消息了。
以下是用curl工具往羣組推送文本消息的示例(注意要將url替換成你的機器人webhook地址,content必須是utf8編碼):
curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=693axxx6-7aoc-4bc4-97a0-0ec2sifa5aaa' \
-H 'Content-Type: application/json' \
-d '
{
"msgtype": "text",
"text": {
"content": "hello world"
}
}'
- 當前自定義機器人支持文本(text)、markdown(markdown)、圖片(image)、圖文(news)四種消息類型。
- 機器人的text/markdown類型消息支持在content中使用<@userid>擴展語法來@羣成員
消息類型及數據格式
文本類型
{
"msgtype": "text",
"text": {
"content": "廣州今日天氣:29度,大部分多雲,降雨概率:60%",
"mentioned_list":["wangqing","@all"],
"mentioned_mobile_list":["13800001111","@all"]
}
}
參數 | 是否必填 | 說明 |
---|---|---|
msgtype | 是 | 消息類型,此時固定爲text |
content | 是 | 文本內容,最長不超過2048個字節,必須是utf8編碼 |
mentioned_list | 否 | userid的列表,提醒羣中的指定成員(@某個成員),@all表示提醒所有人,如果開發者獲取不到userid,可以使用mentioned_mobile_list |
mentioned_mobile_list | 否 | 手機號列表,提醒手機號對應的羣成員(@某個成員),@all表示提醒所有人 |
markdown類型
-
{ "msgtype": "markdown", "markdown": { "content": "實時新增用戶反饋<font color=\"warning\">132例</font>,請相關同事注意。\n >類型:<font color=\"comment\">用戶反饋</font> >普通用戶反饋:<font color=\"comment\">117例</font> >VIP用戶反饋:<font color=\"comment\">15例</font>" } }
參數 | 是否必填 | 說明 |
---|---|---|
msgtype | 是 | 消息類型,此時固定爲markdown |
content | 是 | markdown內容,最長不超過4096個字節,必須是utf8編碼 |
目前支持的markdown語法是如下的子集:
- 標題 (支持1至6級標題,注意#與文字中間要有空格)
# 標題一 ## 標題二 ### 標題三 #### 標題四 ##### 標題五 ###### 標題六
- 加粗
**bold**
- 鏈接
[這是一個鏈接](http://work.weixin.qq.com/api/doc)
- 行內代碼段(暫不支持跨行)
`code`
- 引用
> 引用文字
- 字體顏色(只支持3種內置顏色)
<font color="info">綠色</font> <font color="comment">灰色</font> <font color="warning">橙紅色</font>
圖片類型
-
{ "msgtype": "image", "image": { "base64": "DATA", "md5": "MD5" } }
參數 | 是否必填 | 說明 |
---|---|---|
msgtype | 是 | 消息類型,此時固定爲image |
base64 | 是 | 圖片內容的base64編碼 |
md5 | 是 | 圖片內容(base64編碼前)的md5值 |
注:圖片(base64編碼前)最大不能超過2M,支持JPG,PNG格式
圖文類型
-
{ "msgtype": "news", "news": { "articles" : [ { "title" : "中秋節禮品領取", "description" : "今年中秋節公司有豪禮相送", "url" : "www.qq.com", "picurl" : "http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png" } ] } }
參數 | 是否必填 | 說明 |
---|---|---|
msgtype | 是 | 消息類型,此時固定爲news |
articles | 是 | 圖文消息,一個圖文消息支持1到8條圖文 |
title | 是 | 標題,不超過128個字節,超過會自動截斷 |
description | 否 | 描述,不超過512個字節,超過會自動截斷 |
url | 是 | 點擊後跳轉的鏈接。 |
picurl | 否 | 圖文消息的圖片鏈接,支持JPG、PNG格式,較好的效果爲大圖 1068*455,小圖150*150。 |
文件類型
-
{ "msgtype": "file", "file": { "media_id": "3a8asd892asd8asd" } }
參數 | 是否必填 | 說明 |
---|---|---|
msgtype | 是 | 消息類型,此時固定爲file |
media_id | 是 | 文件id,通過下文的文件上傳接口獲取 |
消息發送頻率限制
每個機器人發送的消息不能超過20條/分鐘。
文件上傳接口
素材上傳得到media_id,該media_id僅三天內有效
media_id在同一企業內應用之間可以共享
請求方式:POST(HTTPS)
請求地址:https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=KEY&type=TYPE
使用multipart/form-data POST上傳文件, 文件標識名爲”media”
參數說明:
參數 | 必須 | 說明 |
---|---|---|
key | 是 | 調用接口憑證, 機器人webhookurl中的key參數 |
type | 是 | 固定傳file |
POST的請求包中,form-data中媒體文件標識,應包含有 filename、filelength、content-type等信息
filename標識文件展示的名稱。比如,使用該media_id發消息時,展示的文件名由該字段控制
請求示例:
-
POST https://qyapi.weixin.qq.com/cgi-bin/webhook/upload_media?key=693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa&type=file HTTP/1.1 Content-Type: multipart/form-data; boundary=-------------------------acebdf13572468 Content-Length: 220 ---------------------------acebdf13572468 Content-Disposition: form-data; name="media";filename="wework.txt"; filelength=6 Content-Type: application/octet-stream mytext ---------------------------acebdf13572468--
返回數據:
-
{ "errcode": 0, "errmsg": "ok", "type": "file", "media_id": "1G6nrLmr5EC3MMb_-zK1dDdzmd0p7cNliYu9V5w7o8K0", "created_at": "1380000000" }
參數說明:
參數 | 說明 |
---|---|
type | 媒體文件類型,分別有圖片(image)、語音(voice)、視頻(video),普通文件(file) |
media_id | 媒體文件上傳後獲取的唯一標識,3天內有效 |
created_at | 媒體文件上傳時間戳 |
上傳的文件限制:
- 要求文件大小在5B~20M之間