Odoo 即时消息和通知相关的模块探究 - Oejia 技术栈,企业方案分享、Odoo顾问
Oejia 技术栈
主页
分享
微信模块
索引
关于
订阅
编辑器
登录
Odoo 即时消息和通知相关的模块探究
admin
on 2016-11-22 11:35:00
### 涉及的模块 1. bus 2. mail 3. im_chat(Odoo10已经去掉) 4. im_livechat #### bus、im_chat、im_livechat 三者之间的关系 im_livechat 将im_chat 开放化,让外部可以通过不同的渠道(channel)和内部用户chat,这里的渠道是对不同的外部来源做标识,对应 **im_livechat.channel** 模型。包含 user_ids 字段代表此渠道建立chat会话时可用于随机选择的内部用户列表 im_livechat 可以以 js 插件的方式置于外部任意站点,在【消息】-【Live Chat】中添加channel即可生成一个外部 js 插件 ### 依赖关系 bus -> mail -> im_livechat #### mail.channel 模型 一个 channel 可以看做是一个消息组,一批用户可以关注或监听来自这个组的消息,例如一个文档的监听器 mail.channel也可看做是一个聊天会话,例如:a livechat channel 重要字段 - uuid channel的唯一标识字符串 - channel_type 类型 目前有 chat、channel 两种类型 - group_ids 关注的用户列表 - livechat_channel_id 所属的 livechat channel 的 id session_info = reg.get('im_livechat.channel').get_channel_session(cr, uid, channel_id, anonymous_name, context=context) session_info = request.env["im_livechat.channel"].get_mail_channel(channel_id, anonymous_name) message_type = "message" message_content = content registry, cr, uid, context = request.registry, request.cr, request.session.uid, request.context message_id = registry["im_chat.message"].post(cr,openerp.SUPERUSER_ID,uid, uuid, message_type, message_content, context=context) message_type = "message" message_content = content request_uid = request.session.uid or openerp.SUPERUSER_ID author_id = False # message_post accept 'False' author_id, but not 'None' if request.session.uid: author_id = request.env['res.users'].sudo().browse(request.session.uid).partner_id.id mail_channel = request.env["mail.channel"].sudo(request_uid).search([('uuid', '=', uuid)], limit=1) message = mail_channel.sudo(request_uid).with_context(mail_create_nosubscribe=True).message_post(author_id=author_id, email_from=False, body=message_content, message_type='comment', subtype='mail.mt_comment', content_subtype='plaintext') ### Odoo 的 longpolling 机制详解 #### 涉及的重要请求 **bus 相关** /longpolling/send /longpolling/poll 拉取关注的渠道的消息 poll 为 bus 拉取通知消息的唯一全局请求(以长轮询的方式),其他模块如果要扩展新的消息类型则需继承 bus 的 _poll 方法,加入“关心”的消息类型(channel),注意这里的channel不同于im_livechat里的channel,这里的channel用于标识不同的消息类型 下面例子为继承添加一个消息信息 ```python class Controller(openerp.addons.bus.bus.Controller): def _poll(self, dbname, channels, last, options): if request.session.uid: registry, cr, uid, context = request.registry, request.cr, request.session.uid, request.context registry.get('im_chat.presence').update(cr, uid, options.get('im_presence', False), context=context) # channel to receive message channels.append((request.db,'im_chat.session', request.uid)) return super(Controller, self)._poll(dbname, channels, last, options) ``` **im_chat** /im_chat/post 发送消息 **im_livechat** /im_livechat/get_session 获得一个对内的会话 待续...
Information
Odoo 即时消息和通知相关的模块探究
http://www.oejia.net/blog/2016/11/22/odoo_msg_bus.html
http://www.oejia.net/raw/2016/11/22/odoo_msg_bus.md
admin
on 2016-11-22 11:35:00
Category
Odoo
Tag
微信模块
Related
2021-08-31 :
微信模块 Oejia_wx v0.6.5 发布,更灵活强大的自定义回复功能实现各类自助交互查询业务
2020-05-18 :
基于企业微信官方审批应用实现的Odoo通用审批功能
2019-01-30 :
Odoo后端性能优化之—取消当访问页面404时对ir.attachment表的查询
2018-02-08 :
Odoo 中的列表页如何默认就显示出筛选及分组功能菜单
2017-10-24 :
Odoo 前端对象 options 介绍
2016-12-29 :
Odoo 开发中 wizard 向导页的使用方法
2016-12-07 :
DjangoX 模型管理页面自定义模板示例
2016-02-23 :
YouMd 基本使用说明
2016-02-19 :
Python 运行参数解析的使用示例
2014-12-15 :
Cordova配置config.xml详解
May 2022
Sun
Mon
Tue
Wed
Thu
Fri
Sat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
分类
Odoo (111)
DjangoX (13)
后端HTTP (7)
YouMd (4)
移动开发 (4)
Django (3)
公告说明 (2)
JS (2)
Python (1)
前端 (1)
Nginx (1)
桌面UI (1)
异常处理 (1)
官方公众号
关注公众号实时咨询我们
About This Entry
DjangoX 站点级配置介绍
DjangoX 模型管理功能配置介绍
About This Blog
main index
to find recently
archives
to find all
标签
微信模块发布记录
微信模块
小程序商城
Python
Web
Http
客服系统
OE商城
Cordova
审批OA
HTML5
Markdown
解析
DjangoX
ExtJS
示例
Excel
JS
新年
PyQT
扩展开发
YouPBX
服系统
最近发布
远程登录提示“找不到匹配的keyexchange算法”
fatal: Out of memory, malloc failed (tried to allocate bytes)
Error: Invalid Prop 'apps' in component 'HomeMenu'
微信模块 Oejia_wx v0.6.6 发布,优化扫码事件处理及通讯录变更的同步
Odoo商城模块 Oejia_weshop v1.0.1 发布,统一强大的后台多种客户端支持
Odoo 低版本升级到 Odoo15 的处理集锦
Odooo Nginx代理后访问https跳转为http的问题
错误The "--no-js" argument is deprecated, as inline JavaScript is disabled 的处理
用 VIM 操作 BOM 标记
Git The text is identical , but the files do not match !
Friend Links
Oejia技术梦博客分享
YouMd,爱上MarkDown
Mole轻量级wsgi架子