.message_route(...) のデフォルトの動作の 1 つ (つまり、メッセージ ルートを取得する 3 回目の試行: 「機能する場合は、指定されたパラメーターにフォールバックする」) が正しく機能していないようです。
メッセージを投稿するための「thread_id」として使用される [ID] のような式の件名を解析することになっています。ここまでは順調ですね。
問題は、この時点に到達する前にメッセージが (もちろん) .message_parse(...) で解析されていることです。これにより、この方法で「thread_id」を取得すると、代わりに unicode-string になります。整数または long として必要な #ID。
私は正しいですか、それともここで何かが欠けていますか?
def message_route(self, cr, uid, message, model=None, thread_id=None,
custom_values=None, context=None):
[...]
3. Fallback to the ``model``, ``thread_id`` and ``custom_values``
provided.
[...]
# 3. Fallback to the provided parameters, if they work
if not thread_id:
# Legacy: fallback to matching [ID] in the Subject
match = tools.res_re.search(decode_header(message, 'Subject'))
thread_id = match and match.group(1)
assert thread_id and hasattr(model_pool, 'message_update') or hasattr(model_pool, 'message_new'), \
"No possible route found for incoming message with Message-Id %s. " \
"Create an appropriate mail.alias or force the destination model." % message_id
if thread_id and not model_pool.exists(cr, uid, thread_id):
_logger.warning('Received mail reply to missing document %s! Ignoring and creating new document instead for Message-Id %s',
thread_id, message_id)
thread_id = None
_logger.debug('Routing mail with Message-Id %s: fallback to model:%s, thread_id:%s, custom_values:%s, uid:%s',
message_id, model, thread_id, custom_values, uid)
return [(model, thread_id, custom_values, uid)]