Python服务插件推送云之家消息原创
金蝶云社区-CQ周玉立
CQ周玉立
24人赞赏了该文章 3361次浏览 未经作者许可,禁止转载编辑于2022年01月11日 16:43:44

分享一下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);

    

赞 24