# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. from markupsafe import Markup from odoo import models, fields, _ class Users(models.Model): _inherit = 'res.users' odoobot_state = fields.Selection( [ ('not_initialized', 'Not initialized'), ('onboarding_emoji', 'Onboarding emoji'), ('onboarding_attachement', 'Onboarding attachment'), ('onboarding_command', 'Onboarding command'), ('onboarding_ping', 'Onboarding ping'), ('idle', 'Idle'), ('disabled', 'Disabled'), ], string="OdooBot Status", readonly=True, required=False) # keep track of the state: correspond to the code of the last message sent odoobot_failed = fields.Boolean(readonly=True) @property def SELF_READABLE_FIELDS(self): return super().SELF_READABLE_FIELDS + ['odoobot_state'] def _init_messaging(self): odoobot_onboarding = False if self.odoobot_state in [False, 'not_initialized'] and self._is_internal(): odoobot_onboarding = True self._init_odoobot() res = super()._init_messaging() res['odoobotOnboarding'] = odoobot_onboarding return res def _init_odoobot(self): self.ensure_one() odoobot_id = self.env['ir.model.data']._xmlid_to_res_id("base.partner_root") channel = self.env['discuss.channel'].channel_get([odoobot_id, self.partner_id.id]) message = Markup("%s
%s
%s :)") % ( _("Hello,"), _("Odoo's chat helps employees collaborate efficiently. I'm here to help you discover its features."), _("Try to send me an emoji") ) channel.sudo().message_post(body=message, author_id=odoobot_id, message_type="comment", subtype_xmlid="mail.mt_comment") self.sudo().odoobot_state = 'onboarding_emoji' return channel