对接企业微信应答: https://github.com/lanrion/qy_wechat
(对应公众号 gem:https://github.com/lanrion/weixin_rails_middleware)
目前只有 Master 稳定版本,务必通过:
gem 'qy_wechat', git: 'https://github.com/lanrion/qy_wechat.git'
安装。
示例:https://github.com/lanrion/qy_wechat_example
rails g qy_wechat:install
rails g qy_wechat:migration QyApp # QyAapp 你保存企业号应用的Model
分别会产生:
配置保存企业微信账号的 Model:
qy_wechat_example/config/initializers/qy_wechat_config.rb
这里实现你的业务逻辑:
qy_wechat_example/app/decorators/controllers/qy_wechat/qy_wechat_controller_decorator.rb
同时添加以下 4 个字段:
特别注意: 由于一个企业号,可以对应多个应用,可以根据 corp_id
关联你保存对应的企业号应用。
最后在你的 QyApp 中添加如下代码生成你的 qy_secret_key:
class QyApp < ActiveRecord::Base
before_create :init_qy_secret_key
private
def init_qy_secret_key
self.qy_secret_key = SecureRandom.hex(8)
end
end
qy_wechat_engine.qy_verify_url(qy_app.qy_secret_key)
欢迎提交使用中的 bug,或者改进意见:https://github.com/lanrion/qy_wechat/issues/new
企业微信高级 API
https://rubygems.org/gems/qy_wechat_api
企业号对应多个管理组,请前往 设置
=> 权限管理
任意创建一个管理组,在管理组最下角即可获取 CorpID Secret
有问题请及时提 issue
gem "qy_wechat_api", git: "https://github.com/lanrion/qy_wechat_api.git"
如果你是单个企业号,建议使用这个方案,无需任何配置即可使用。
redis = Redis.new(host: "127.0.0.1", port: "6379")
namespace = "qy_wechat_api:redis_storage"
# cleanup keys in the current namespace when restart server everytime.
exist_keys = redis.keys("#{namespace}:*")
exist_keys.each{|key|redis.del(key)}
redis_with_ns = Redis::Namespace.new("#{namespace}", redis: redis)
QyWechatApi.configure do |config|
config.redis = redis_with_ns
end
请务必结合:http://qydev.weixin.qq.com/wiki/index.php 理解以下 API 参数使用。
group_client = QyWechatApi::Client.new(corpid, corpsecret)
# 为了确保用户输入的corpid, corpsecret是准确的,请务必执行:
group_client.is_valid?
group_client.department.create(name, parent_id, order=nil)
group_client.department.update(id, name, parent_id, order=nil)
group_client.department.delete(id)
group_client.department.list
group_client.user.create(user_id, name, options={})
group_client.user.update(user_id, options={})
group_client.user.delete(user_id)
group_client.user.get(user_id)
group_client.user.simple_list(department_id, fetch_child=nil, status=nil)
group_client.tag.create(name)
group_client.tag.update(id, name)
group_client.tag.delete(id)
group_client.tag.get(id)
group_client.tag.add_tag_users(id, user_ids)
group_client.tag.delete_tag_users(id, user_ids)
group_client.tag.list
menu_json 的生成方法请参考: https://github.com/lanrion/weixin_rails_middleware/wiki/DIY-menu
group_client.menu.create(menu_json, app_id)
group_client.menu.delete(app_id)
group_client.menu.get(app_id)
先要配置你应用的 可信域名 2458023e.ngrok.com
state 为开发者自定义参数,可选
# 生成授权url
group_client.oauth.authorize_url("http://2458023e.ngrok.com", "state")
# 获取code后,获取用户信息
# app_id: 跳转链接时所在的企业应用ID
group_client.oauth.get_user_info("code", "app_id")
# params: (users, parties, tags, agent_id, content, safe=0)
# users, parties, tags 如果是多个用户,传数组,如果是全部,则直接传 "@all"
group_client.message.send_text("@all", "@all", "@all", app_id, text_message)
其他发送消息方法请查看 api/message.rb
# params: media, media_type
group_client.media.upload(image_jpg_file, "image")
# 获取下载链接
# 返回一个URL,请开发者自行使用此url下载
group_client.media.get_media_by_id(media_id)
有问题可以前往:微信开发论坛:http://weixin-dev.com/