Skip to Content

如何在 Odoo 中打造智能化客户反馈闭环

如何在 Odoo 18 中打造智能化客户反馈闭环

客户服务数字化的决胜关键

在当今竞争激烈的商业环境中,对于一个组织而言,优质的客户服务是必不可少的。提升客户满意度的最佳方式是将客户反馈和评分纳入业务流程中。Odoo 提供了一种简便高效的方式来收集客户反馈。Odoo 18通过评分混入(Rating Mixin)技术,打造智能化客户反馈闭环系统,帮助企业实现优质客户服务。

在 Odoo 18 中添加客户评分混入

评分混入功能允许你发送请求客户反馈的电子邮件,在看板(Kanban)流程中实现自动转换,并根据评分收集统计数据。

三步实现评分系统深度集成

第一步:模型继承与字段配置

要在你的模型中启用客户评分功能,只需在自定义模型中继承 rating.mixin 模型即可。以下是实现方法的示例:

class TestModel(models.Model):
    _name = 'test.model'
    _description = 'Test Model'
    _inherit = ['rating.mixin', 'mail.thread']# 双继承评分与消息追踪

    name = fields.Char(string='Name', required=True)
    description = fields.Text(string='Description')
    date_order = fields.Date(string='Date')
    state = fields.Selection([
        ('draft', '草稿'),
        ('in_progress', '进行中'),
        ('done', '已完成')
    ], string='状态', default='draft')
    activity_state = fields.Selection([
        ('overdue', '逾期'),
        ('today', '今日'),
        ('planned', '计划中')
    ], string='活动状态')
    # 必配关联字段
    service_owner = fields.Many2one('res.users', string='专属顾问')
    client = fields.Many2one('res.partner', string='服务对象')    

通过继承 rating.mixin,你的模型现在将支持评分功能。

只要模型中存在 partner_id 字段,rating.rating 记录就会自动链接到该字段。如果你希望使用除 partner_id 之外的其他字段,比如我的模型中运用的是client字段,可以通过实现 rating_get_partner_id() 函数来覆盖此默认行为。

def _rating_get_partner(self):
    if 'client' in self and self.client:
        return self.client
    return self.env['res.partner']

同样,rating.rating 记录将连接到与模型中 user_id 字段相关联的合作伙伴(即被评分的合作伙伴)。如果你使用的不是 user_id 字段,可以通过覆盖 rating_get_rated_partner_id() 函数来自定义此行为。请注意,此函数必须返回一个 res.partner 记录,因为系统会自动获取与 user_id 关联的合作伙伴。

此外,如果你的模型继承自 mail.thread,评分事件将记录在聊天记录中。

第二步:智能评价邮件模板开发

为了收集客户反馈,你可以发送一封包含链接的电子邮件,客户点击链接即可提供评分。以下是创建用于此目的的电子邮件模板的示例:

<record id="test_model_rating_email_template"  model="mail.template">
    <field name="name">评价邀请</field>
    <field name="subject">评价调研</field>
    <field name="model_id" ref="test_model.model_test_model"/>
    <field name="email_from">{{ object._rating_get_operator().email_formatted or user.email_formatted }}</field>
    <field name="partner_to">{{ object._rating_get_partner().id }}</field>
    <field name="body_html" type="html">
        <div>
            <t t-set="access_token" t-value="object._rating_get_access_token()"/>
            <t t-set="partner" t-value="object._rating_get_partner()"/>
            <p>您好!<t t-out="partner.name or ''"/>,<br/><br/>感谢您使用我们的系统!请点击下方表情为本系统评分:</p>
            <table>
                <tr>
                    <td><a t-attf-href="/rate/{{ access_token }}/5"><img src="/rating/static/src/img/rating_5.png" alt="Excellent"/></a></td>
                    <td><a t-attf-href="/rate/{{ access_token }}/3"><img src="/rating/static/src/img/rating_3.png" alt="Average"/></a></td>
                    <td><a t-attf-href="/rate/{{ access_token }}/1"><img src="/rating/static/src/img/rating_1.png" alt="Poor"/></a></td>
                </tr>
            </table>
        </div>
    </field>
    <field name="auto_delete" eval="False"/>
</record>

此模板生成的电子邮件允许客户以交互方式提供反馈。当他们点击评分图标(例如,优秀、一般或差)时,将被引导至一个网页,在那里他们可以提交评分。

发送评分请求

要向客户发送评分请求,你可以从模型中触发以下方法:

def action_send_rating_mail(self):
    template = self.env.ref('test_model.test_model_rating_email_template')
    template.send_mail(self.id, force_send=True)

技术亮点:

  • 动态令牌生成确保评价安全性。
  • 响应式布局适配多终端。
  • 表情评分替代传统表单。

第三步:可视化分析看板搭建

为了让用户能够查看与你的模型相关的所有客户评分,你可以在自定义模块的表单视图中定义一个操作和一个按钮。这将以各种视图模式(如看板、表单、透视表或图表)显示评分:

<!-- 动作定义 --> 
<record id="rating_rating_action_test_model" model="ir.actions.act_window">
    <field name="name">系统评分</field>
    <field name="res_model">rating.rating</field>
    <field name="view_mode">kanban,pivot,graph</field>
    <field name="domain">[('res_model', '=', 'test.model'), ('consumed', '=', True)]</field>
</record>

<!-- 表单按钮集成 -->
<record id="test_model_view_form_inherit_rating" model="ir.ui.view">
    <field name="name">test.model.view.form.inherit.rating</field>
    <field name="model">test.model</field>
    <field name="inherit_id" ref="test_model.view_test_model_form"/>
    <field name="arch" type="xml">
        <xpath expr="//div[@name='button_box']" position="inside">
            <button name="%(rating_rating_action_test_model)d"
                    type="action"
                    class="oe_stat_button"
                    string="查看评分"
                    icon="fa-smile-o">
            </button>
        </xpath>
    </field>
</record>

<!-- test_model模型的form视图设置了一个发送评分邀请按钮-->
<record id="view_test_model_form" model="ir.ui.view">
    <field name="name">test.model.form</field>
    <field name="model">test.model</field>
    <field name="arch" type="xml">
        <form string="Test">
            <sheet>
                <div class="oe_button_box" name="button_box">
                    <button name="action_send_rating_mail"
                        type="object"
                        string="发送评分邀请"
                        class="btn-primary"/>
                </div>
                <group>
                    <group>
                        <field name="name" string="姓名"/>
                        <field name="description" string="介绍"/>
                    </group>
                    <group>
                        <field name="date_order" string="生日"/>
                    </group>
                    <group>
                        <field name="service_owner" string="专属顾问" />
                        <field name="client" string="服务对象" />
                    </group>
                </group>
            </sheet>
            <chatter/>
        </form>
    </field>
</record>

这些配置将创建一个菜单项,用户可以通过该菜单项导航到一个页面,在该页面上他们可以查看与你的模型相关的所有客户评分。可用的默认视图(如看板、透视表和图表)可快速概览客户反馈。

我们可以看到以下结果:

点击评分链接时,它会重定向到网站并显示如下页面:

评分完成后显示或者点击查看评分按钮显示如下:

本指南概述了如何在 Odoo 18 中使用客户评分混入来集成客户反馈。按照这些步骤操作,企业可以收集重要的客户见解,并采取切实可行的措施来改进服务。

如何在 Odoo 中打造智能化客户反馈闭环
6776, Administrator April 3, 2025
Tags
Archive