I am creating something similar to a help desk system. I need to register a new record in my model when I receive an email. I have already configured the email receiving server, but I don't know how to implement message_new. I have tried in several ways and without success. I am a beginner.
2024-02-26 18:22:37,943 8638 INFO odoo17 odoo.addons.mail.models.fetchmail: start checking for new emails on imap server Receber email TI
2024-02-26 18:22:38,053 8638 INFO odoo17 odoo.addons.mail.models.mail_thread: Routing mail from "Vitor Augusto Zucon Gonçalves - Zanardo Válvulas" to pipefycb@zanardo.com.br with Message-Id : fallback to model:helpdesk.ticket.model, thread_id:None, custom_values:None, uid:2
2024-02-26 18:22:38,055 8638 INFO odoo17 odoo.addons.mail.models.fetchmail: Failed to process mail from imap server Receber email TI.
Traceback (most recent call last):
File "/home/vazgoncalves/projects/odoo/addons/mail/models/fetchmail.py", line 211, in fetch_mail
res_id = MailThread.with_context(**additionnal_context).message_process(server.object_id.model, data[0][1], save_original=server.original, strip_attachments=(not server.attach))
File "/home/vazgoncalves/projects/odoo/addons/mail/models/mail_thread.py", line 1357, in message_process
thread_id = self._message_route_process(message, msg_dict, routes)
File "/home/vazgoncalves/projects/odoo/addons/mail/models/mail_thread.py", line 1250, in _message_route_process
thread = ModelCtx.message_new(message_dict, custom_values)
TypeError: CardModel.message_new() missing 1 required positional argument: 'msg_dict'
2024-02-26 18:22:38,061 8638 INFO odoo17 odoo.addons.mail.models.fetchmail: Fetched 1 email(s) on imap server Receber email TI; 0 succeeded, 1 failed.
my code:
@api.model
def _create_mail_thread_defaults(self):
return {
'email_send_default': True,
}
def register_models(registry):
registry['helpdesk.ticket.model'] = CardModel
def message_new(self, cr, uid, msg_dict, custom_values=None, context=None):
data = {
'title_card': msg_dict.get('subject')
}
model = CardModel()
if custom_values == None:
custom_values = {}
data.update(custom_values)
res_id = model.pool.create(cr, uid, data, context=context)
return res_id