分享一下Python如何在服务插件中推送云之家消息。本案例是在单据审核后推送云之家提醒消息。
实现方法:
1.在BOS中打开需要推送消息的单据。
2.在【操作列表】中找【审核】,点击【编辑】。
3.[其他控制]页签,点开【服务插件】,注册Python脚本即可。
此案例参考大佬@供应链-王 的帖子:https://vip.kingdee.com/article/78471316415583232 C#代码可参考此文章。
此案例推送的是纯文本消息,若需要推送功能更丰富的消息,可参考https://vip.kingdee.com/article/61030448628853248,修改代码中消息数据的定义即可(大同小异)。
推送消息需要云之家公共号的账号和秘钥,查看方法参考:https://vip.kingdee.com/questions/7983/answers/11481
云之家公共号需要添加到星空的【云之家公共号列表】,将查询到的账号和秘钥维护进去。
参考代码如下(网页复制代码会有格式问题,已上传代码附件,需要复制的可自行下载):
#引入clr运行库
import clr
#添加对cloud插件开发的常用组件的引用
clr.AddReference('System')
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.DataEntity')
clr.AddReference('Kingdee.BOS.Contracts')
clr.AddReference('Kingdee.BOS.ServiceHelper')
clr.AddReference('Kingdee.BOS.App.Core')
#导入cloud基础库中的常用实体对象(分命名空间导入,不会递归导入)
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Msg import *
from Kingdee.BOS.Contracts import *
from Kingdee.BOS.Orm.DataEntity import *
from Kingdee.BOS.DataEntity import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from Kingdee.BOS.App.Core import *
from Kingdee.BOS.App.Core.Messages import *
from System import *
from System.Data import *
from Kingdee.BOS.App.Data import *
from System.Collections.Generic import List
from Kingdee.BOS.ServiceHelper import *
def EndOperationTransaction(e):
for billObj in e.DataEntitys:
billNo = str(billObj["BillNo"]);
userXunTongService=UserXunTongService();
toUsers=List[str]();#接收消息的用户,定义成一个集合
#云之家OpenID,可在星空里面查询【云之家用户映射列表】获取
xunTongOpenId=userXunTongService.GetXunTongUser(this.Context,"5e8bd88fe4b0076XXXX");
toUsers.Add(str(xunTongOpenId));#添加接收消息用户的OpenId,如有多个,自行修改添加
xunTongService=ServiceFactory.GetXunTongService(this.Context);
xunTongService=XunTongService();
msg=XTPlainTextMessage();
msg.Text = ("测试消息:审核了单据[{0}]").format(billNo);#消息内容
msg.PubAcctCode = "XT-31d79e2d-0541-4d64-8bf7-XXXXX";#云之家公共号的账号
msg.PubAcctKey = "1c341b7de803c2664fXXXXX";#云之家公共号的秘钥
msg.Users=toUsers;
xtsendResult=xunTongService.AnsySendPlainTextMessage(this.Context, msg);
ss=("结果:{0}").format(xtsendResult.Msg);
#raise Exception(ss);
服务插件推送云之家消息.rar(0.91KB)