Skip to content

mycolorway/wework

Repository files navigation

Wechat Work 「企业微信」

Wework is a ruby API wrapper for wechat work「企业微信」.

企业微信 API 文档

CircleCI Gem Version

Installation

Add this line to your application's Gemfile:

gem 'wework'

And then execute:

$ bundle

Or install it yourself as:

$ gem install wework

Usage

初始化

Wework.configure do |config|
  config.redis = Redis.new(host: ENV['REDIS_HOST'], port: ENV['REDIS_PORT'], db: ENV['REDIS_CACHE_DB'])   # redis
  config.http_timeout_options = {write: 15, read: 15, connect: 10}                                        # 请求超时
  config.expired_shift_seconds = 180                                                                      # access token 有效期偏移量 (时间有效期 - 偏移量)
end

第三方应用

1). 初始化套件接口 Wework::Api::Suite

$wework_suite = Wework::Api::Suite.new(
  corp_id: ENV['WEWORK_CORPID'],                            # 应用服务商 CorpID
  suite_id: ENV['WEWORK_SUITE_ID'],                         # SuiteID
  encoding_aes_key: ENV['WEWORK_SUITE_ENCODING_AES_KEY'],   # EncodingAESKey
  suite_token: ENV['WEWORK_SUITE_TOKEN'],                   # Token
  suite_secret: ENV['WEWORK_SUITE_SECRET']                  # Secret
)

2). 获取第三方应用接口 Wework::Api::Agent

agent_api = $wework_suite.corp(
              corp_id,                                      # 授权企业 CorpID
              permanent_code                                # 永久授权码
            ).agent(agent_id)

3). 第三方应用回调协议

获取加密数据

encrypt_str = if params[:xml].present?
                params[:xml]['Encrypt']
              else
                Hash.from_xml(request.raw_post)['xml']['Encrypt']
              end

#首次校验接口 encrpt_str = params[:echostr]

消息签名

$wework_suite.signature(timestamp, nonce, encrypt_str)

消息解密

$wework_suite.msg_decrypt(encrypt_data)

自建应用

初始化接口 Wework::Api::Agent

$agent_api = Wework::Api::Agent.new(
  corp_id: ENV['WEWORK_CORPID'],                            # 企业 CorpID
  agent_id: ENV['WEWORK_APPID'],                            # AgentId
  secret: ENV['DEMO_APP_SECRET']                            # Secret
)

通讯录同步

初始化接口 Wework::Api::Contact

$contact_api = Wework::Api::Contact.new(
  corp_id: ENV['WEWORK_CORPID'],                            # 企业 CorpID
  secret: ENV['DEMO_APP_SECRET']                            # 通讯录同步 Secret
)

应用服务商接口

初始化

$provider_api = Wework::Api::Provider.new(
  corp_id: ENV['WEWORK_PROVIDER_CORPID'],                     # 应用服务商 CorpID
  secret: ENV['WEWORK_PROVIDER_SECRET'],                      # Secret
  token: ENV['WEWORK_PROVIDER_TOKEN'],
  encoding_aes_key: ENV['WEWORK_PROVIDER_ENCODING_AES_KEY']
)

回调接口消息加解密参考「第三方应用回调协议」

小程序 encryptedData 解密

require "openssl"
CIPHER = 'AES-128-CBC'.freeze

cipher = OpenSSL::Cipher.new(CIPHER)
cipher.decrypt
cipher.key = Base64.decode64(session_key)
cipher.iv = Base64.decode64(iv)
encrypted = Base64.decode64(encryptedData)
data = cipher.update(encrypted) + cipher.final
values = JSON.parse data

已实现接口列表

Wework::Api::Methods::Agent

Wework::Api::Methods::User

Wework::Api::Methods::Tag

Wework::Api::Methods::Department

Wework::Api::Methods::Message

Wework::Api::Methods::Appchat

Wework::Api::Methods::Media

Wework::Api::Methods::Menu

Wework::Api::Methods::Approval

Wework::Api::Methods::Checkin

Wework::Api::Methods::Batch

Wework::Api::Methods::Provider

Wework::Api::Methods::Service

Contributing

  • Fork Wework on GitHub
  • Make your changes
  • Ensure all tests pass (bundle exec rake)
  • Send a pull request
  • If we like them we'll merge them
  • If we've accepted a patch, feel free to ask for commit access!

License

Copyright (c) 2018 MyColorway. See LICENSE.txt for further details.

About

Wework is ruby API wrapper for wechat work「企业微信」.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published