Files
test/sg_wechat_enterprise/models/we_send_message.py
2024-07-10 15:58:47 +08:00

109 lines
4.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from odoo import api, models, exceptions, fields
import logging
_logger = logging.getLogger(__name__)
class WechatEnterpriseSendMessage(models.Model):
_name = 'we.send.message'
_description = 'Wechat Enterprise Send Message Manage'
touser = fields.Many2many('res.users', 'send_message_to_users_ref',
'wechat_contacts_id', 'touser', u'成员列表')
msgtype = fields.Selection([('text', u'文字消息'), ('image', u'图片消息'), ('voice', u'语音消息'), ('video', u'视频消息'),
('file', u'文件消息'), ('news', u'图文消息'), ('mpnews', u'微信后台图文消息')], u'消息类型',
required=True, default='text')
agentid = fields.Many2one('we.app', u'发送消息的企业应用', required=True)
content = fields.Char(u'消息内容')
media_id = fields.Char(u'媒体文件')
title = fields.Char(u'标题')
description = fields.Text(u'描述')
articles = fields.Char(u'图文消息')
url = fields.Char(u'点击后跳转的链接')
picurl = fields.Char(u'图文消息的图片链接')
thumb_media_id = fields.Char(u'图文消息缩略图')
author = fields.Char(u'图文消息的作者')
content_source_url = fields.Char(u'图文消息点击“阅读原文”之后的页面链接')
news_content = fields.Char(u'图文消息的内容支持html标签')
digest = fields.Char(u'图文消息的描述')
show_cover_pic = fields.Selection([('0', u''), ('1', u'')], u'是否显示封面', default='0')
safe = fields.Selection([('0', u''), ('1', u'')], u'是否是保密消息', required=True, default='0')
def send_message(self):
"""
发送消息给关注企业号的用户
:return:
"""
users = ""
i = 0
if self.touser and len(self.touser) > 0:
for data in self.touser:
i = i + 1
if i == len(self.touser):
if data['we_employee_id']:
users = users + data['we_employee_id']
else:
if data['we_employee_id']:
users = users + data['we_employee_id'] + "|"
if users == "":
users = '@all'
partys = ""
if self.msgtype == "news":
self.send_news_message(users, self.agentid['agentid'], self.title, self.description, self.url, self.picurl)
elif self.msgtype == "text":
self.send_text_message(users, self.agentid['agentid'], self.content, partys)
def send_text_message(self, userid, agentid, content, partyid=None):
"""
发送文本消息给关注企业号的用户
:param userid:
:param agentid:
:param content:
:param partyid:
:return:
"""
try:
wechat = self.env['we.config'].sudo().get_wechat(agent_id=agentid)
if wechat:
data = {
'safe': "0",
'msgtype': 'text',
'agentid': agentid,
'touser': userid,
'toparty': partyid,
'content': content
}
wechat.message.send_text(agent_id=data['agentid'], user_ids=data['touser'], content=data['content'],
party_ids=data['toparty'], safe=data['safe'])
else:
raise exceptions.Warning(u"初始化企业号失败")
except Exception as e:
logging.error('send_text_message:%s' % e)
# 发送图文消息给关注企业号的用户
def send_news_message(self, userid, agentid, title=None, description=None, url=None, picurl=None):
"""
发送图文消息给关注企业号的用户
:param userid:
:param agentid:
:param title:
:param description:
:param url:
:param picurl:
:return:
"""
wechat = self.env['we.config'].sudo().get_wechat(agent_id=agentid)
if wechat:
articles = [
{
'url': url,
'image': picurl,
'description': description,
'title': title
}
]
wechat.message.send_articles(agent_id=agentid, user_ids=userid, articles=articles)
else:
raise exceptions.Warning(u"初始化企业号失败")