外部消息订阅
- 给外部人员(客户或者供应商联系人)发送消息步骤
给外部人员发送消息,仅能通过用户企业自己的公众号对外发布消息。因此需要在系统门户配置公众号信息,然后再相应的系统中引用该公众号。
可以通过数据转换菜单,或者脚本的方式发送消息。
1) 在业务系统中引用系统门户中定义的公众号(若使用拓跋公众号,系统门户中无需定义,这里直接使用即可) ,
在业务系统的微信公众号模块添加记录,必须保证appid与系统门户中配置的appid相同。 其他项目根据需要填写。 (若采用拓跋云公众号发送消息,必须使用拓跋公众号appid”
2) 添加微信消息主题,消息主题是用户希望获得通知的项目,其中主题类型,是系统能够自动生成的单据转换消息类型(数据集中查询的列值确定) ,因具体的业务系统而不同
3)添加微信消息订阅分组,是消息主题的集合,用户通过订阅消息分组,订阅具体的消息主题。 明细中是本分组包含的所有主题。分组中指定了对应的公众号。
4) 在外部人员关联的档案中(客户或者供应商联系人),选择可订阅的消息分组,然后自动生成订阅id,外部人员可以凭借订阅id来订阅消息。
订阅id是,系统识别码+','+分组代码+','+ 用户代码,若修改用户代码,或者分组代码,订阅标识码变化,但是已有的订阅依然有效。
5)引导外部人员订阅消息,
在拓跋云公众号菜单中选择订阅消息,输入订阅id,进入选择主题,订阅说明中输入内容表明自己的身份,作为订阅者的名称保存。
系统中可以关闭分组,关闭主题,关闭订阅,关闭用户操作来停止消息订阅。
- 订阅类型
在WXGROUP.SVR 中定义,用于明确系统中的消息分组类型。 每个分组类型对应一个数据集用于关联订阅者的身份。
也就是说每个订阅者有明确的身份。
<?xml version="1.0" encoding="GB2312"?>
<ATTRIBUTE attributeid="16600" ecode="SVR" createby="模型管理员" createtime="2023-05-23 09:18:33" modifyby="模型管理员" modifytime="2023-06-27 10:15:24" estatus="1" ename="微信消息订阅服务">
<DEF>
<ATTRIBUTE TYPE="DS/PR/PS/LR/LS" PROGID="WXTOPICS" SVRERI="" RELEASE="0~0~0" USERVERSION="1" createby="模型管理员" createtime="2023-05-23 09:18:33" modifyby="模型管理员" modifytime="2023-06-25 11:09:29" estatus="1" ENTITYID="9179" CODE="SVR" NAME="微信消息订阅服务" ID="16600" ENTITYNAME="微信消息分组">
<GROUP TYPE="XS" DATASET=".KHLXR.BROWSEDS" ALIAS="DEFAULT" PARAMNAME="ecode" USERIDFIELD="wxsubuserid"/>
TYPE 分组类型
DATASET ALIAS 消息订阅者数据集
PARAMNAME 订阅者数据集中,订阅用户的代码参数,订阅标识中 (roomtype,groupcode,usercode )的usercod 作为参数值查询
USERIDFIELD 在订阅者数据集中,订阅者id的字段名称
<GROUP TYPE="CG" DATASET=".GYSLXR.BROWSEDS" ALIAS="DEFAULT" PARAMNAME="ecode" USERIDFIELD="wxsubuserid"/>
</ATTRIBUTE></DEF>
<MEMO></MEMO>
</ATTRIBUTE>
- 消息发送单据的转换定义。
1) DATA 属性定义
<?xml version="1.0" encoding="GB2312"?>
<ATTRIBUTE attributeid="16614" ecode="DATA" createby="模型管理员" createtime="2023-05-28 18:12:16" modifyby="模型管理员" modifytime="2023-06-27 10:15:41" estatus="1" ename="数据定义">
<DEF>
<ATTRIBUTE TYPE="PR" PROGID="" SVRERI="_PP.DAT.SVRDAT" RELEASE="0~0~0" USERVERSION="1" createby="模型管理员" createtime="2023-05-28 18:12:16" modifyby="模型管理员" modifytime="2023-06-25 11:09:46" estatus="1" ENTITYID="9180" CODE="DATA" NAME="数据定义" ID="16614" ENTITYNAME="订单进度通知">
<TABLES MAINTABLE="t_ddxxtz">
<TABLE CODE="t_ddxxtz" IDCOL="ddxxtzid"/>
<TABLE CODE="t_ddxxtzlxr" IDCOL="ddxxtzlxrid"/>
</TABLES>
<FIELDSEXP>
<ESTATUS EXPRESSION="FALSE=1~GRAY=7~TRUE=2"/>
<LOCKSTATUS EXPRESSION="TRUE=1~FALSE=0"/>
<CLOSESTATUS EXPRESSION="TRUE=1~FALSE=0"/>
</FIELDSEXP>
<FINALIZE FIELD="t_ddxxtz.trantime" DSERI="..BROWSEDS" FORMAT="DEFAULT" ALIAS="DEFAULT"/>
<COMMENT>
<ENABLE VALUE="TRUE" SET="TRUE"/>
<RESULT VALUE="点评,同意,不同意" SET="TRUE"/>
<DEL VALUE="24" SET="TRUE"/>
</COMMENT>
<TRANSFER ACTION="" INVISIBLE="SEND"></TRANSFER> 定义转换类型的活动
<SCRIPT>
<AUDIT>
<AFT>
/*审核后发送模板消息*/
domain.status(request,'SEND','get',param);
</AFT>
</AUDIT>
</SCRIPT>
</ATTRIBUTE></DEF>
<MEMO></MEMO>
</ATTRIBUTE>
2) 发送活动的定义
<?xml version="1.0" encoding="GB2312"?>
<ACTION actionid="18497" ecode="SEND" createby="模型管理员" createtime="2023-05-28 18:29:13" modifyby="模型管理员" modifytime="2023-06-27 10:15:41" estatus="1" ename="发送消息">
<DEF>
<ACTION DISABLECMDS="" INSTCOMMAND="" FLOW="" REFENTITY="" RIGHT="" ID="18497" CODE="SEND" NAME="发送消息" STATUS="1" createby="模型管理员" createtime="2023-05-28 18:29:13" modifyby="模型管理员" modifytime="2023-06-25 11:09:46" actionright="">
<TRANSFER CODE="SEND" PARAMNAME="ddxxtzid" PARAMVALUE="ddxxtzid" CAPTION="发送微信消息" CONDITION="" TYPE="WXMSG" TEMPLATEID="AslDnAEbn3qjnwvaWbv3iKtgERATvtHqgP_3IvGzZzI" EDITNEW="FALSE">
TEMPLATEID 微信消息id,
<DATASET CODE="MAIN" ERI="..MAIN" ALIAS="DEFAULT"> 消息数据集
<FIELD SOURCE="_mppath" TARGET="_mppath"/> 连接的小程序路径可忽略
<FIELD SOURCE="_appid" TARGET="_appid"/> appid 可以为空
<FIELD SOURCE="_msgtype" TARGET="_msgtype"/> 消息类型,对应消息主题中的主题类型
<FIELD SOURCE="keyword1" TARGET="keyword1" DATA="TRUE"/> 模板参数
<FIELD SOURCE="keyword2" TARGET="keyword2" DATA="TRUE"/>模板参数
<FIELD SOURCE="keyword3" TARGET="keyword3" DATA="TRUE"/>模板参数
<FIELD SOURCE="keyword4" TARGET="keyword4" DATA="TRUE"/>模板参数
</DATASET>
<DATASET CODE="SUB" ERI="..SUB" ALIAS="DEFAULT"> 明细数据集
<FIELD SOURCE="_userid" TARGET="_userid"/> 接受用户的userid
<FIELD SOURCE="_result" TARGET="_result"/> 发送结果的保存字段
</DATASET>
</TRANSFER>
</ACTION></DEF>
<MEMO></MEMO>
</ACTION>
主数据集举例
SELECT
t_ddxxtz.ddxxtzid as ddxxtzid,
t_ddxxtz.roomid as roomid,
c_wldw.ename as keyword1,
t_ddxxtz.ddjd as keyword2,
t_ddxxtz.lxdh as keyword3,
date_format( t_ddxxtz.trantime,'%Y年%m月%d日%H:%i') as keyword4,
'' as _mppath,
'' as _appid,
'KH' as _msgtype
FROM t_ddxxtz t_ddxxtz
LEFT OUTER JOIN t_xsht t_xsht on (t_ddxxtz.xshtid = t_xsht.xshtid)
INNER JOIN c_wldw c_wldw on (t_ddxxtz.wldwid = c_wldw.wldwid)</SQL>
子数据集举例
SELECT
t_ddxxtzlxr.ddxxtzlxrid as ddxxtzlxrid,
t_ddxxtzlxr.sendresult as _result,
t_ddxxtzlxr.modifytime as modifytime,
t_ddxxtzlxr.eversion as eversion,
c_dwlxr.wxsubuserid as _userid
FROM t_ddxxtzlxr t_ddxxtzlxr
INNER JOIN c_dwlxr c_dwlxr on (t_ddxxtzlxr.dwlxrid = c_dwlxr.dwlxrid)
INNER JOIN as_wxsubuser on (as_wxsubuser.wxsubuserid = c_dwlxr.wxsubuserid)
WHERE ( t_ddxxtzlxr.ddxxtzid = :ddxxtzid )</SQL>
定制步骤
1)主题类型,在WXTOPIC.DATA中指定主题类型
<DEFINFO EXPRESSION="KH=订单进度通知"/>
2)订阅类型,在 WXGROUP.SVR 指定订阅类型
<GROUP TYPE="CG" DATASET=".GYSLXR.BROWSEDS" ALIAS="DEFAULT" PARAMNAME="ecode" USERIDFIELD="wxsubuserid"/>
3) 定义发送的单据实体,定义数据转换,公众号中增加模板消息
<TRANSFER ACTION="" INVISIBLE="SEND"></TRANSFER>
<SCRIPT>
<AUDIT>
<AFT>
/*发送模板消息*/
domain.status(request,'SEND','get',param);
</AFT>
</AUDIT>
</SCRIPT>
<?xml version="1.0" encoding="GB2312"?>
<ACTION actionid="18497" ecode="SEND" createby="模型管理员" createtime="2023-05-28 18:29:13" modifyby="模型管理员" modifytime="2023-06-27 10:15:41" estatus="1" ename="发送消息">
<DEF>
<ACTION DISABLECMDS="" INSTCOMMAND="" FLOW="" REFENTITY="" RIGHT="" ID="18497" CODE="SEND" NAME="发送消息" STATUS="1" createby="模型管理员" createtime="2023-05-28 18:29:13" modifyby="模型管理员" modifytime="2023-06-25 11:09:46" actionright="">
<TRANSFER CODE="SEND" PARAMNAME="ddxxtzid" PARAMVALUE="ddxxtzid" CAPTION="发送微信消息" CONDITION="" TYPE="WXMSG" TEMPLATEID="AslDnAEbn3qjnwvaWbv3iKtgERATvtHqgP_3IvGzZzI" EDITNEW="FALSE">
<DATASET CODE="MAIN" ERI="..MAIN" ALIAS="DEFAULT">
<FIELD SOURCE="_mppath" TARGET="_mppath"/>
<FIELD SOURCE="_appid" TARGET="_appid"/>
<FIELD SOURCE="_msgtype" TARGET="_msgtype"/>
<FIELD SOURCE="keyword1" TARGET="keyword1" DATA="TRUE"/>
<FIELD SOURCE="keyword2" TARGET="keyword2" DATA="TRUE"/>
<FIELD SOURCE="keyword3" TARGET="keyword3" DATA="TRUE"/>
<FIELD SOURCE="keyword4" TARGET="keyword4" DATA="TRUE"/>
</DATASET>
<DATASET CODE="SUB" ERI="..SUB" ALIAS="DEFAULT">
<FIELD SOURCE="_userid" TARGET="_userid"/>
<FIELD SOURCE="_result" TARGET="_result"/>
</DATASET>
</TRANSFER>
</ACTION></DEF>
<MEMO></MEMO>
</ACTION>
工作流中, 脚本发送订阅消息
var lssub = system.store(".DDJDTZ.SUB","DEFAULT","ddxxtzid",flow.tranid());
var lsmain = flow.mainstore();
var lstopic =lsmain.fv(0,'as_wxtopic_ecode');
var lswldw =lsmain.fv(0,'c_wldw_ename');
var ltrantime = lsmain.fv(0,'trantime');
var ldh = lsmain.fv(0,'lxdh');
var list = new List();
var lrows = lssub.rows(),i,l = lrows.size();
for(i=0;i<l;i++ ){
list.add(lssub.fv(i,'_userid'));
}
var lMsg = request.createWxMsg("AslDnAEbn3qjnwvaWbv3iKtgERATvtHqgP_3IvGzZzI");
lMsg.addProp('first','首先说明');
lMsg.addProp('keyword1',lswldw);
lMsg.addProp('keyword2',flow.shortmemo());
lMsg.addProp('keyword3',ldh);
lMsg.addProp('keyword4',ASUtilsDate.formatdt(ltrantime,'yyyy年MM月dd日hh:mm'));
request.sendWxMsgSub("wx57e64f27146325ed",lstopic,lMsg,list);
Created with the Personal Edition of HelpNDoc: Benefits of a Help Authoring Tool