wechat

描述

微信服务器模块,多网站共享微信模块,获取 ACCESS_TOKEN 微信访问令牌,并存入数据库,其它服务器可通过 messagerdb 远程连接到本数据库获取微信扫码、关注、付款等交互通知。


OnceOA 企业流程驱动引擎可与微信深度整合,可采用混和云,分布式的方式,实现企业局域网内应用的微信登录、注册、接收流程通知、支付、手机审批、办公等功能。

OnceOA 微信流程消息通知依赖 wechat/ wechat-sign 两个模块。

wechat 模块

微信服务器模块,多网站共享微信模块,获取 ACCESS_TOKEN 微信访问令牌,并存入数据库,其它服务器可通过 messagerdb 远程连接到本数据库获取微信扫码、关注、付款等交互通知。

wechat-sign 模块

微信绑定,扫码登录,注册,发送客服消息模块。通过 ONCEDB_MESSAGER 获取 微信 ACCESS_TOKEN 和微信事件回调。

系统架构

wechat 和 wechat-sign 的系统架构图如下。因微信的消息只能设置一个回调地址。因此需要一种消息分发机制和传递机制,来实现多个企业应用统一在一个微信公众号下。
在 OnceOA 是通过 messengerdb 来实现的。

flow_5.png

如果您仅有一台服务器,只需要安装 wechat/ wechat-sign 两个模块到一台服务器即可,系统会自动通过 oncedb 默认数据来传递消息。

微信服务器端配置

wechat 模块主要为连接公众号后台,刷新 access_token 访问令牌。向 messengerdb 广播微信回调。该模块需要部署到公有云服务器上。微信提醒需要开通微信公众号并完成微信认证。

创建微信模板

OnceOA 要使用邮件消息模板来发送,因此需要创建一个邮件模板。

登陆微信公众号,点击模板消息,添加邮件模板,如下图所示。

创建后记住模板ID(TemplateID)备用。

msg_6.png

配置微信接口

点击公众号平台最下方找的 开发-》基本配置,记录以下信息:

开发者ID(AppID)
开发者密码(AppSecret)
令牌(Token)

服务器地址(URL) 填入您的网址回调地址:
这里为域名 + /wechat-auth/api 固定网址, 如
http://onceoa.com/wechat-auth/api
因为我们使用明文模式,因此不需要填写消息加解密密钥。

msg_7.png

配置OnceOA云服务器

安装微信模块

在云服务器端安装 wechat 和 wechat-sign 两个模块。
在其他服务器上只安装 wechat-sign 模块。

如果云服务器上没有微信登陆、绑定等功能,可只安装 wechat 模块。

修改配置文件

打开 /onceai/oncedoc/config.js 配置文件,找到 WEIXIN_AUTH_CONFIG 部分,将上文记录的公众号信息,写入到配置文件中:

var WEIXIN_AUTH_CONFIG = {
    AppID       : 'wx7eXXXXXXX1aec7'
  , AppSecret   : '9ecfa1aXXXXXXXXX75e8b6d14'
  , MchID       : 140XXXX02
  , TemplateID  : 'zLo4j7XPXXXXXXXXXbbloMuirPE'
  , token       : 'daXXXXXXXXXXXXXlk8643'
  , fileFormat  : 'yyyy-mm'
}

MchID 为开通微信支付的商户号,没有使用到支付功能可不填。
至此完成微信服务器的配置,重启后,如果您只仅使用一台云服务器,重启后即可自动推送微信消息通知。

配置OnceOA本地服务器

假设我们在公有云服务器上部署了 OnceOA 应用,域名为 cn.oncedoc.com,该应用安装了 wechat 微信模块,并连接了公众号后台。

我们在其他服务器也部署了 OnceOA 应用,希望使用统一的微信公众号,有两种方法可实现该功能。

1. 连接同一 OnceDB 数据库

修改 /onceai/oncedoc/config.js 中的 ONCEDB_CONFIG 配置, 连接到 cn.oncedoc.com 的 OnceDB 数据库。即多个应用连接到同一 OnceDB, 实现分布式部署。这样也会自动接收到微信的回调消息。

还需要在 WEIXIN_AUTH_CONFIG 添加一条 disable: true 属性,防止多个应用同时刷新公众号后台,造成混乱,微信配置的其它属性保持不变。也可在其它服务器上禁用 wechat 服务端模块。

var WEIXIN_AUTH_CONFIG = {
    ...
  , disabled    : true
}

var ONCEDB_MESSAGER = {
    port    : 6400
  , host    : 'cn.oncedoc.com'
  , auth    : 'dXXXXXXXXXXXXXXXXXXXXXX00'
  , select  : 1
}

连接前首先要确保 cn.oncedoc.com 上的 OnceDB 数据库是允许外网访问的。

将 /onceai/oncedb/oncedb.conf 中的 bind 127.0.0.1 只允许本机访问注释掉,并设置 requirepass 访问密码即可。

#bind 127.0.0.1
requirepass dXXXXXXXXXXXXXXXXXXXXXX00

2. 设置 ONCEDB_MESSAGER 消息服务器

有时侯我们可能并不希望多个应用共用远程数据库,而是希望使用本地数据库,来提高访问速度或独立的帐号系统。

此时可修改 config.js 中的 ONCEDB_MESSAGER 配置,连接公有云上的 OnceDB 数据库,如下图所示:

msg_8.png

OnceOA 还可通过 messagerdb 实现多个 OnceOA 进程间的相互通信、消息传递和事件推送。

测试微信流程通知

微信集成后,可通过 OnceOA 流程通知来测试,

假设我们使用 OnceOA 设计了一套公章使用系统, 在编辑数据库扩展的"流程管理"时,可勾选“发送通知”选项。

  1. 选中要发送邮件和微信通知的流程结点
  2. 在“组织、团队”中,选择 “市场部”作为处理人
  3. 这里选择组管理员来审批

为防止滥发信息,这里只会对当前选中的处理人组织/团队发送流程通知,而不会通知父级或子级成员。

msg_1.png

有时侯,我们可能并不希望提交申请表时就发送通知,此时可以添加一个“提交申请”的空结点,效果如下。

msg_2.png

这样,当用户创建完数据后,只有点了“提交审批“才会通知下个流程的处理人。

触发邮件、微信通知

以上文中的例子,从管理桌面的开始菜单点击 “OnceOA 数据管理“ 找到刚才修改的的公章申请表,并添加一条新数据。

  1. 点击保存后,会出现流程处理按钮
  2. 再点击“提交审批”

msg_9.png

此时会触发邮信和微信的流程消息提醒:

msg_11.png