From 5184ae157706bb49ae4395f5be815017e16d6f0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=B3=E7=BA=A2=E7=A6=8F?= Date: Wed, 11 Sep 2019 14:50:22 +0800 Subject: [PATCH] doc --- .github/workflows/main.yml | 31 +++++++++++++ README.zh-CN.md | 93 +++++++++++++++++++++++++++++++++++++ entrypoint.js | 67 ++++++++++++++++++++++++-- wechat-work-logo.png | Bin 0 -> 2996 bytes 4 files changed, 186 insertions(+), 5 deletions(-) create mode 100644 README.zh-CN.md create mode 100644 wechat-work-logo.png diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 39bb28a..bb083b1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -5,6 +5,7 @@ jobs: send-msg: runs-on: ubuntu-latest steps: + # 纯文本格式 - name: WeChat Work notification by text uses: chf007/action-wechat-work@master env: @@ -13,3 +14,33 @@ jobs: msgtype: text content: 广州今日天气:29度,大部分多云,降雨概率:60% + # markdown格式 + - name: WeChat Work notification by markdown + uses: chf007/action-wechat-work@master + env: + WECHAT_WORK_BOT_WEBHOOK: ${{secrets.WECHAT_WORK_BOT_WEBHOOK}} + with: + msgtype: markdown + content: "实时新增用户反馈132例,请相关同事注意。\n + >类型:用户反馈 \n + >普通用户反馈:117例 \n + >VIP用户反馈:15例" + + # 图片格式 + - name: WeChat Work notification by image + uses: chf007/action-wechat-work@master + env: + WECHAT_WORK_BOT_WEBHOOK: ${{secrets.WECHAT_WORK_BOT_WEBHOOK}} + with: + msgtype: image + base64: data:image/png;base64,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 + md5: 9c2c8daba00a516c0ff469ca13e0edf0 + + # 图文格式 + - name: WeChat Work notification by news + uses: chf007/action-wechat-work@master + env: + WECHAT_WORK_BOT_WEBHOOK: ${{secrets.WECHAT_WORK_BOT_WEBHOOK}} + with: + msgtype: news + articles: [{"title":"中秋节礼品领取","description":"今年中秋节公司有豪礼相送","url":"URL","picurl":"http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"}] diff --git a/README.zh-CN.md b/README.zh-CN.md new file mode 100644 index 0000000..d1a7556 --- /dev/null +++ b/README.zh-CN.md @@ -0,0 +1,93 @@ +# WeChat Work for GitHub Actions + +通过企业微信机器人发送消息 + +![WeChat Work Logo](wechat-work-logo.png "WeChat Work Logo") + +
+ +## 用法 + +#### 纯文本格式消息 + +![WeChat Work message](action-message.png "WeChat Work message") + +```yaml +- name: WeChat Work notification by text + uses: chf007/action-wechat-work@master + env: + WECHAT_WORK_BOT_WEBHOOK: ${{secrets.WECHAT_WORK_BOT_WEBHOOK}} + with: + msgtype: text + content: 广州今日天气:29度,大部分多云,降雨概率:60% + mentioned_list: '["wangqing","@all"]' + mentioned_mobile_list: '["13800001111","@all"]' +``` + +参数 | 必须 | 说明 +------------ | ------------- | ------------- +msgtype | true | 消息类型,此时固定为text +content | true | 文本内容,最长不超过2048个字节,必须是utf8编码 +mentioned_list | false | userid的列表,提醒群中的指定成员(@某个成员),@all表示提醒所有人,如果开发者获取不到userid,可以使用mentioned_mobile_list,必须是序列化后的JSON字符串 +mentioned_mobile_list | false | 手机号列表,提醒手机号对应的群成员(@某个成员),@all表示提醒所有人,必须是序列化后的JSON字符串 + +#### markdown格式消息 + +```yaml +- name: WeChat Work notification by markdown + uses: chf007/action-wechat-work@master + env: + WECHAT_WORK_BOT_WEBHOOK: ${{secrets.WECHAT_WORK_BOT_WEBHOOK}} + with: + msgtype: markdown + content: "实时新增用户反馈132例,请相关同事注意。\n + >类型:用户反馈 \n + >普通用户反馈:117例 \n + >VIP用户反馈:15例" +``` + +参数 | 必须 | 说明 +------------ | ------------- | ------------- +msgtype | true | 消息类型,此时固定为markdown +content | true | markdown内容,最长不超过4096个字节,必须是utf8编码 支持的格式详见 https://work.weixin.qq.com/api/doc#90000/90136/91770 + +#### 图片格式消息 + +```yaml +- name: WeChat Work notification by image + uses: chf007/action-wechat-work@master + env: + WECHAT_WORK_BOT_WEBHOOK: ${{secrets.WECHAT_WORK_BOT_WEBHOOK}} + with: + msgtype: image + base64: data:image/png;base64,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 + md5: 9c2c8daba00a516c0ff469ca13e0edf0 +``` + +参数 | 必须 | 说明 +------------ | ------------- | ------------- +msgtype | true | 消息类型,此时固定为image +base64 | true | 图片内容的base64编码 +md5 | true | 图片内容(base64编码前)的md5值 + +#### 图文格式消息 + +```yaml +- name: WeChat Work notification by news + uses: chf007/action-wechat-work@master + env: + WECHAT_WORK_BOT_WEBHOOK: ${{secrets.WECHAT_WORK_BOT_WEBHOOK}} + with: + msgtype: news + articles: '[{"title":"中秋节礼品领取","description":"今年中秋节公司有豪礼相送","url":"URL","picurl":"http://res.mail.qq.com/node/ww/wwopenmng/images/independent/doc/test_pic_msg1.png"}]' +``` +参数 | 必须 | 说明 +------------ | ------------- | ------------- +msgtype | true | 消息类型,此时固定为news +articles | true | 图文消息,一个图文消息支持1到8条图文,必须是序列化后的JSON字符串 + +#### 更多详细参数说明,参见 https://work.weixin.qq.com/api/doc#90000/90136/91770 + +## WECHAT_WORK_BOT_WEBHOOK + +* **`WECHAT_WORK_BOT_WEBHOOK`**: 企业微信 Webhook URL (**required**, 参见 https://work.weixin.qq.com/api/doc#90000/90136/91770). diff --git a/entrypoint.js b/entrypoint.js index 69d1601..9cac635 100644 --- a/entrypoint.js +++ b/entrypoint.js @@ -2,12 +2,69 @@ const axios = require('axios'); const _ = require('lodash'); const { argv } = require('yargs'); -const payload = { - msgtype: 'text', - text: { - content: `${process.env.GITHUB_REPOSITORY}/${process.env.GITHUB_WORKFLOW} triggered by ${process.env.GITHUB_ACTOR} (${process.env.GITHUB_EVENT_NAME})`, +const payload = {}; + +if (process.env.INPUT_MSGTYPE === 'text') { + + payload.msgtype = process.env.INPUT_MSGTYPE; + payload.text = { + content: process.env.INPUT_CONTENT, + }; + + if (process.env.INPUT_MENTIONED_LIST) { + let mentioned_list; + try { + mentioned_list = JSON.parse(process.env.INPUT_MENTIONED_LIST); + } catch (error) { + mentioned_list = []; } -}; + payload.text.mentioned_list = mentioned_list; + } + + if (process.env.INPUT_MENTIONED_MOBILE_LIST) { + let mentioned_mobile_list; + try { + mentioned_mobile_list = JSON.parse(process.env.INPUT_MENTIONED_MOBILE_LIST); + } catch (error) { + mentioned_mobile_list = []; + } + payload.text.mentioned_mobile_list = mentioned_mobile_list; + } + +} + +if (process.env.INPUT_MSGTYPE === 'markdown') { + + payload.msgtype = process.env.INPUT_MSGTYPE; + payload.markdown = { + content: process.env.INPUT_CONTENT, + }; + +} + +if (process.env.INPUT_MSGTYPE === 'image') { + + payload.msgtype = process.env.INPUT_MSGTYPE; + payload.base64 = process.env.INPUT_BASE64; + payload.md5 = process.env.INPUT_MD5; + +} + +if (process.env.INPUT_MSGTYPE === 'news') { + + payload.msgtype = process.env.INPUT_MSGTYPE; + + let articles; + try { + articles = JSON.parse(process.env.INPUT_ARTICLES); + } catch (error) { + articles = []; + } + payload.news = { + articles, + }; + +} console.log('The message content in JSON format...'); console.log(JSON.stringify(payload)); diff --git a/wechat-work-logo.png b/wechat-work-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1942b4573fa3b273935da0e3a2438c93c146a5b9 GIT binary patch literal 2996 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