Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/renyijiu/ding_hook
a gem build for use the dingding webhook convenient and happy
https://github.com/renyijiu/ding_hook
dingding dingding-bot gem ruby
Last synced: 9 days ago
JSON representation
a gem build for use the dingding webhook convenient and happy
- Host: GitHub
- URL: https://github.com/renyijiu/ding_hook
- Owner: renyijiu
- Created: 2018-12-02T12:44:23.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2018-12-02T12:59:32.000Z (almost 6 years ago)
- Last Synced: 2024-10-07T12:10:47.809Z (about 1 month ago)
- Topics: dingding, dingding-bot, gem, ruby
- Language: Ruby
- Homepage:
- Size: 16.6 KB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# DingHook
钉钉群机器人中自定义机器人的webhook封装版本,更方便在项目中的使用。[钉钉文档地址](https://open-doc.dingtalk.com/docs/doc.htm?treeId=257&articleId=105735&docType=1)
![robot.png](https://i.loli.net/2018/12/02/5c03c363974b1.png)
## 安装如果需要在项目中使用,把下面代码增加到你的Gemfile中:
```ruby
gem 'ding_hook'
```然后执行下列命令:
$ bundle
或者是直接安装对应的gem包使用:
$ gem install ding_hook
## 配置
### 文件配置
1. 在 Rails 项目中使用时,默认会读取`config`目录下的`dinghook.yml`文件
2. 非 Rails 项目中,默认读取当前目录中`config`目录下的`dinghook.yml`文件;若不存在,则读取当前用户主目录下的`.ding_hook.yml`文件配置格式:
```yaml
default: access_token # 默认机器人
dev: dev_group_access_token # example, 不同分组机器人
alarm: alarm_group_access_token # example, 不同分组机器人
```### 代码配置
当然也可以在代码中去配置对应的`access_token`, 当前配置会覆盖文件中的相同配置项```ruby
DingHook.configure do |config|
config[:default] = 'access_token'
config[:dev] = 'dev_group_access_token'
config[:alarm] = 'alarm_group_access_token'
end
```可以通过下列命令查看已配置的信息:
```ruby
DingHook.config
```## 项目使用
在项目中使用时,提供了下列的方法调用:### 文本类型消息
```ruby
# 必需的参数
text = '消息内容' # 文本信息# 可选参数
options = {
at_mobiles: [12345678901], # 数组,被@人的手机号码
is_at_all: false # Boolean, 是否 @所有人
}accounts = [:default, :dev] # 数组,配置的key值,支持多机器人同时发送
# 方法调用
DingHook.send_text_msg(text, options = {}, accounts = [:default])
```或者是
```ruby
params = {
text: '消息内容',
at_mobiles: [],
is_at_all: true
}DingHook.send_msg(params, :text, accounts)
```### link类型消息
```ruby
# 必需参数
text = '消息内容。如果太长只会部分展示'
title = '消息标题'
msg_url = '点击消息跳转的URL'# 可选参数
options = {
pic_url: '图片链接'
}DingHook.send_link_msg(title, text, msg_url, options = {}, accounts = [:default])
```或者是
```ruby
params = {
text: '消息内容。如果太长只会部分展示',
title: '消息标题',
message_url: '点击消息跳转的URL',
pic_url: '图片链接'
}DingHook.send_msg(params, :link, accounts)
```### markdown类型消息
```ruby
# 必需参数
title = '首屏会话透出的展示内容'
text = 'markdown格式的消息'# 可选参数
options = {
at_mobiles: [],
is_at_all: false
}# 调用方法
DingHook.send_markdown_msg(title, text, options = {}, accounts = [:default])
```
或者是```ruby
params = {
text: 'markdown格式的消息',
title: '首屏会话透出的展示内容',
at_mobiles: [],
is_at_all: false
}DingHook.send_msg(params, :markdown, accounts)
```### 发送单个按钮的action_card
````ruby
# 必需参数
title = '首屏会话透出的展示内容'
text = 'markdown格式的消息'
single_title = '按钮提示'
single_url = '点击按钮触发的URL'# 可选参数
options = {
btn_orientation: '按钮排列方式,0:垂直排列,1:横向排列',
hide_avator: '0-正常发消息者头像,1-隐藏发消息者头像'
}# 方法调用
DingHook.send_single_action_card(title, text, single_title, single_url, options = {}, accounts = [:default])
````或者是
```ruby
params = {
title: '首屏会话透出的展示内容',
text: 'markdown格式的消息',
single_title: '按钮提示',
single_url: '点击按钮触发的URL',
btn_orientation: '按钮排列方式,0:垂直排列,1:横向排列',
hide_avator: '0-正常发消息者头像,1-隐藏发消息者头像'
}DingHook.send_msg(params, :action_card, accounts)
```### 发送多个按钮的action_card
```ruby
# 必需参数
text = 'markdown格式的消息'
title = '首屏会话透出的展示内容'
btns = [{
title: '按钮方案',
action_url: '点击按钮触发的URL'
}]# 可选参数
options = {
btn_orientation: '按钮排列方式,0:垂直排列,1:横向排列',
hide_avator: '0-正常发消息者头像,1-隐藏发消息者头像'
}# 方法调用
DingHook.send_btns_action_card(title, text, btns, options = {}, accounts = [:default])
```
或者是
```ruby
params = {
title: '首屏会话透出的展示内容',
text: 'markdown格式的消息',
btns: [{
title: '按钮方案',
action_url: '点击按钮触发的URL',
}],
btn_orientation: '按钮排列方式,0:垂直排列,1:横向排列',
hide_avator: '0-正常发消息者头像,1-隐藏发消息者头像'
}DingHook.send_msg(params, :action_card, accounts)
```### 发送feed_card消息
```ruby
# 必需参数
links = [
{
title: '单条信息文本',
message_url: '点击单条信息到跳转链接',
pic_url: '单条信息后面图片的URL'
}
]# 方法调用
DingHook.send_feed_card(links, accounts = [:default])
```或者是
```ruby
params = {
links: [
{
title: '单条信息文本',
message_url: '点击单条信息到跳转链接',
pic_url: '单条信息后面图片的URL'
}
]
}DingHook.send_msg(params, accounts)
```
### 返回格式
`[true, msg]`
- true: Boolean 消息发送成功;多账号同时发送时,只有全部成功才会返回true
- msg: String 错误消息提示## 命令行使用
```shell
$ bundle exec ding_hook -h
Usage: ding_hook [options]Specific options:
-t, --type TYPE the type of msg to send: text, link, markdown, action_card, feed_card
-a , the accounts that want to send msg
--accounts
-c , the config of accounts
--config
--text TEXT the content of msg
--title TITLE the title of msg
--mobiles
the array of mobiles that want to @
--[no-]all the option is want to @all
--msg-url the message url of msg
--pic-url the picture url of msg
--[no-]btn-vertical Buttons are arranged vertically
--[no-]show-avator show the avator of sender
--btns multi btns for action card
--single-title Single_title the single btn title for action card
--single-url Single_url the single btn url for action card
--links
the links for feed cardCommon options:
-h, --help Show the help message
-v, --version Show version```
⚠️:发送对应类型消息时,请参考上面文档,提供所必须的参数,否则消息会发送失败或出现异常错误
例子:
```shell
$ bundle exec ding_hook -c default,access_token -t action_card -a default --text 我爱你 --title ❤ --btns homepage,https://renyijiu.com --btns blog,htts://blog.renyijiu.com --no-btn-vertical --show-avator```
## 如何贡献
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request欢迎贡献相关代码或是反馈使用时遇到的问题👏,另外请记得为你的代码编写测试。