| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/19.0/im_livechat |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Website/Live Chat |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Odoo S.A. |
| MAINTAINERS | |
| MAINTAINERS | Odoo S.A. |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Olivier Dony, Thibault Delavallée, Xavier Morel, Lucas Perais (lpe), Jorge Pinna Puissant, Alexandre Kühn, Julien Castiaux, Romeo Fragomeli, Sébastien Theys, Julien Mougenot, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, ThanhDodeurOdoo, Pierre Paridans, William Braeckman, Romain Estievenart, Miquel Raïch, yhu-odoo, Didier (did), Julien Banken, Louis Wicket (wil), tsm-odoo, Maximilien (malb), Victor Piryns (pivi), Dylan Kiss (dyki), Rahul Prajapati, omra-odoo, Zelong Lin, maad-odoo, bary, Maryam Kia, Alex Kühn, Chrysanthe (chgo), Junqi Wu, mano-odoo, Pierre Pulinckx (PIPU), aych-odoo, Pierre Pulinckx, Bastien PIERRE, Krzysztof Magusiak (krma), Mahdi Alijani (malj), nees-odoo, utma-odoo, Giorgio Tocco (gito), Ayush Chauhan (aych), jayp-odoo, akha, Laetitia (ldau), ramh, Kevin Gerard (kege), nmak-odoo, Akash Parmar, pmah-odoo, saurabh, ibo-odoo, akth-odoo, akus-odoo, chpa-odoo, shmn-odoo, mear-odoo, Haja Ram, niyp-odoo, Louis Wicket, ypat-odoo |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/app/live-chat |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 01:51:43 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - html_editor - rating - digest - portal - http_routing - auth_signup - resource - utm |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Live Chat Support
==========================
Allow to drop instant messaging widgets on any web page that will communicate
with the current server and dispatch visitors request amongst several live
chat operators.
Help your customers with this chat, and analyse their feedback.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
chatbot_script_answer_view_form |
chatbot.script.answer.view.form | chatbot.script.answer | form | New |
chatbot_script_answer_view_tree |
chatbot.script.answer.view.list | chatbot.script.answer | list | New |
chatbot_script_step_view_form |
chatbot.script.step.view.form | chatbot.script.step | form | New |
chatbot_script_step_view_tree |
chatbot.script.step.view.list | chatbot.script.step | list | New |
chatbot_script_view_form |
chatbot.script.view.form | chatbot.script | form | New |
chatbot_script_view_search |
chatbot.script.view.search | chatbot.script | search | New |
chatbot_script_view_tree |
chatbot.script.view.list | chatbot.script | list | New |
chatbot_test_script_page |
chatbot_test_script_page | ir.ui.view | qweb | New |
discuss_channel_looking_for_help_view_kanban |
discuss.channel.kanban | discuss.channel | kanban | New |
discuss_channel_looking_for_help_view_list |
discuss.channel.looking.for.help.list | discuss.channel | list | New |
discuss_channel_looking_for_help_view_search |
discuss.channel.looking.for.help.view.search | discuss.channel | search | New |
discuss_channel_view_form |
discuss.channel.form | discuss.channel | form | New |
discuss_channel_view_graph |
discuss.channel.graph | discuss.channel | graph | New |
discuss_channel_view_kanban |
discuss.channel.kanban | discuss.channel | kanban | New |
discuss_channel_view_pivot |
discuss.channel.pivot | discuss.channel | pivot | New |
discuss_channel_view_search |
discuss.channel.search | discuss.channel | search | New |
discuss_channel_view_tree |
discuss.channel.list | discuss.channel | list | New |
external_loader |
Livechat : external_script field of livechat channel | ir.ui.view | qweb | New |
im_livechat.digest_digest_view_form_inherit |
im.livechat.digest.digest.view.form.inherit | digest.digest | xpath | Inherits digest.digest_digest_view_form |
im_livechat.unit_embed_suite |
im_livechat.unit_embed_suite | ir.ui.view | qweb | New |
im_livechat_agent_history_view_graph |
im_livechat.agent.history.graph | im_livechat.channel.member.history | graph | New |
im_livechat_agent_history_view_pivot |
im_livechat.agent.history.pivot | im_livechat.channel.member.history | pivot | New |
im_livechat_agent_history_view_search |
im_livechat.agent.history.search | im_livechat.channel.member.history | search | New |
im_livechat_channel_conversation_tag_view_form |
im.livechat.channel.conversation.tag.form | im_livechat.conversation.tag | form | New |
im_livechat_channel_conversation_tag_view_list |
im.livechat.channel.conversation.tag.list | im_livechat.conversation.tag | list | New |
im_livechat_channel_member_history_view_search |
im_livechat.channel.member.history.view.search | im_livechat.channel.member.history | search | New |
im_livechat_channel_member_history_view_tree |
im_livechat.channel.member.history.view.list | im_livechat.channel.member.history | list | New |
im_livechat_channel_rule_view_form |
im_livechat.channel.rule.form | im_livechat.channel.rule | form | New |
im_livechat_channel_rule_view_kanban |
im_livechat.channel.rule.kanban | im_livechat.channel.rule | kanban | New |
im_livechat_channel_rule_view_tree |
im.livechat.channel.rule.list | im_livechat.channel.rule | list | New |
im_livechat_channel_view_form |
im_livechat.channel.form | im_livechat.channel | form | New |
im_livechat_channel_view_kanban |
im_livechat.channel.kanban | im_livechat.channel | kanban | New |
im_livechat_channel_view_search |
im.livechat.channel.view.search | im_livechat.channel | search | New |
im_livechat_expertise_view_form |
im.livechat.expertise.form | im_livechat.expertise | form | New |
im_livechat_expertise_view_list |
im.livechat.expertise.list | im_livechat.expertise | list | New |
im_livechat_report_channel_view_form |
im_livechat.report.channel.form | im_livechat.report.channel | form | New |
im_livechat_report_channel_view_graph |
im_livechat.report.channel.graph | im_livechat.report.channel | graph | New |
im_livechat_report_channel_view_list |
im_livechat.report.channel.list | im_livechat.report.channel | list | New |
im_livechat_report_channel_view_pivot |
im_livechat.report.channel.pivot | im_livechat.report.channel | pivot | New |
im_livechat_report_channel_view_search |
im_livechat.report.channel.search | im_livechat.report.channel | search | New |
livechat_email_template |
livechat_email_template | ir.ui.view | qweb | New |
loader |
Livechat : Javascript appending the livechat button | ir.ui.view | qweb | New |
report_livechat_conversation |
report_livechat_conversation | ir.ui.view | qweb | New |
res_users_form_view |
res.users.form.im_livechat | res.users | xpath | Inherits base.view_users_form |
res_users_form_view_simple_modif |
res.users.preferences.form.im_livechat | res.users | xpath | Inherits base.view_users_form_simple_modif |
support_page |
Livechat : Support Page | ir.ui.view | qweb | New |
view_partner_form |
res.partner.view.buttons | res.partner | div | Inherits base.view_partner_form |
discuss_channel_id
Many2one → discuss.channel
index=True
ondelete='cascade'
required=True
string='Discussion Channel'
args: 'discuss.channel'
mail_message_id
Many2one → mail.message
string='Related Mail Message'
args: 'mail.message'
script_step_id
Many2one → chatbot.script.step
index='btree_not_null'
string='Chatbot Step'
args: 'chatbot.script.step'
user_raw_answer
Html
string="User's raw answer"
user_raw_script_answer_id
Integer
help='Id of the script answer. Useful for statistics when answer is deleted.'
user_script_answer_id
Many2one → chatbot.script.answer
ondelete='set null'
string="User's answer"
args: 'chatbot.script.answer'
No public methods.
active
Boolean
default=True
first_step_warning
Selection
compute='_compute_first_step_warning'
args: [('first_step_operator', 'First Step Operator'), ('first_step_invalid', 'First Step Invalid')]
image_1920
Image
readonly=False
related='operator_partner_id.image_1920'
livechat_channel_count
Integer
compute='_compute_livechat_channel_count'
string='Livechat Channel Count'
operator_partner_id
Many2one → res.partner
copy=False
index=True
ondelete='restrict'
required=True
string='Bot Operator'
args: 'res.partner'
script_step_ids
One2many → chatbot.script.step
copy=True
string='Script Steps'
args: 'chatbot.script.step', 'chatbot_script_id'
title
Char
default='Chatbot'
required=True
translate=True
args: 'Title'
action_view_livechat_channels(self)
copy(self, default=None)
copy_data(self, default=None)
create(self, vals_list)
write(self, vals)
chatbot_script_id
Many2one
related='script_step_id.chatbot_script_id'
name
Char
required=True
string='Answer'
translate=True
redirect_link
Char
help='The visitor will be redirected to this link upon clicking the option (note that the script will end if the link is external to the livechat website).'
args: 'Redirect Link'
script_step_id
Many2one → chatbot.script.step
index=True
ondelete='cascade'
required=True
string='Script Step'
args: 'chatbot.script.step'
sequence
Integer
default=1
string='Sequence'
No public methods.
answer_ids
One2many → chatbot.script.answer
copy=True
string='Answers'
args: 'chatbot.script.answer', 'script_step_id'
chatbot_script_id
Many2one → chatbot.script
index=True
ondelete='cascade'
required=True
string='Chatbot'
args: 'chatbot.script'
is_forward_operator
Boolean
compute='_compute_is_forward_operator'
is_forward_operator_child
Boolean
compute='_compute_is_forward_operator_child'
message
Html
string='Message'
translate=True
name
Char
compute='_compute_name'
string='Name'
operator_expertise_ids
Many2many → im_livechat.expertise
help='When forwarding live chat conversations, the chatbot will prioritize users with matching expertise.'
string='Operator Expertise'
args: 'im_livechat.expertise'
sequence
Integer
string='Sequence'
step_type
Selection
default='text'
required=True
args: [('text', 'Text'), ('question_selection', 'Question'), ('question_email', 'Email'), ('question_phone', 'Phone'), ('forward_operator', 'Forward to Operator'), ('free_input_single', 'Free Input'), ('free_input_multi', 'Free Input (Multi-Line)')]
triggering_answer_ids
Many2many → chatbot.script.answer
compute='_compute_triggering_answer_ids'
copy=False
domain="[('script_step_id.sequence', '<', sequence), ('script_step_id.chatbot_script_id', '=', chatbot_script_id)]"
help='Show this step only if all of these answers have been selected.'
readonly=False
store=True
string='Only If'
args: 'chatbot.script.answer'
create(self, vals_list)
kpi_livechat_conversations
Boolean
kpi_livechat_conversations_value
Integer
compute='_compute_kpi_livechat_conversations_value'
kpi_livechat_rating
Boolean
kpi_livechat_rating_value
Float
compute='_compute_kpi_livechat_rating_value'
digits=(16, 2)
kpi_livechat_response
Boolean
kpi_livechat_response_value
Float
compute='_compute_kpi_livechat_response_value'
digits=(16, 2)
No public methods.
livechat_participant_history_ids
Many2many → im_livechat.channel.member.history
No public methods.
channel_type
Selection
ondelete={'livechat': 'cascade'}
selection_add=[('livechat', 'Livechat Conversation')]
chatbot_current_step_id
Many2one → chatbot.script.step
string='Chatbot Current Step'
args: 'chatbot.script.step'
chatbot_message_ids
One2many → chatbot.message
groups='im_livechat.im_livechat_group_manager'
string='Chatbot Messages'
args: 'chatbot.message', 'discuss_channel_id'
country_id
Many2one → res.country
help='Country of the visitor of the channel'
string='Country'
args: 'res.country'
duration
Float
compute='_compute_duration'
help='Duration of the session in hours'
args: 'Duration'
livechat_agent_history_ids
One2many → im_livechat.channel.member.history
compute='_compute_livechat_agent_history_ids'
search='_search_livechat_agent_history_ids'
string='Agents (History)'
args: 'im_livechat.channel.member.history'
livechat_agent_partner_ids
Many2many → res.partner
compute='_compute_livechat_agent_partner_ids'
store=True
string='Agents'
args: 'res.partner', 'im_livechat_channel_member_history_discuss_channel_agent_rel'
livechat_agent_providing_help_history
Many2one → im_livechat.channel.member.history
compute='_compute_livechat_agent_providing_help_history'
store=True
string='Help Provided (Agent)'
args: 'im_livechat.channel.member.history'
livechat_agent_requesting_help_history
Many2one → im_livechat.channel.member.history
compute='_compute_livechat_agent_requesting_help_history'
store=True
string='Help Requested (Agent)'
args: 'im_livechat.channel.member.history'
livechat_bot_history_ids
One2many → im_livechat.channel.member.history
compute='_compute_livechat_bot_history_ids'
search='_search_livechat_bot_history_ids'
string='Bots (History)'
args: 'im_livechat.channel.member.history'
livechat_bot_partner_ids
Many2many → res.partner
compute='_compute_livechat_bot_partner_ids'
context={'active_test': False}
store=True
string='Bots'
args: 'res.partner', 'im_livechat_channel_member_history_discuss_channel_bot_rel'
livechat_channel_id
Many2one → im_livechat.channel
index='btree_not_null'
args: 'im_livechat.channel', 'Channel'
livechat_channel_member_history_ids
One2many → im_livechat.channel.member.history
livechat_conversation_tag_ids
Many2many → im_livechat.conversation.tag
groups='im_livechat.im_livechat_group_user'
help='Tags to qualify the conversation.'
string='Live Chat Conversation Tags'
args: 'im_livechat.conversation.tag', 'livechat_conversation_tag_rel'
livechat_customer_guest_ids
Many2many → mail.guest
compute='_compute_livechat_customer_guest_ids'
string='Customers (Guests)'
args: 'mail.guest'
livechat_customer_history_ids
One2many → im_livechat.channel.member.history
compute='_compute_livechat_customer_history_ids'
search='_search_livechat_customer_history_ids'
string='Customers (History)'
args: 'im_livechat.channel.member.history'
livechat_customer_partner_ids
Many2many → res.partner
compute='_compute_livechat_customer_partner_ids'
store=True
string='Customers (Partners)'
args: 'res.partner', 'im_livechat_channel_member_history_discuss_channel_customer_rel'
livechat_end_dt
Datetime
help='Session is closed when either the visitor or the last agent leaves the conversation.'
args: 'Session end date'
livechat_expertise_ids
Many2many → im_livechat.expertise
store=True
args: 'im_livechat.expertise', 'discuss_channel_im_livechat_expertise_rel', 'discuss_channel_id', 'im_livechat_expertise_id'
livechat_failure
Selection
selection=[('no_answer', 'Never Answered'), ('no_agent', 'No one Available'), ('no_failure', 'No Failure')]
string='Live Chat Session Failure'
livechat_is_escalated
Boolean
compute='_compute_livechat_is_escalated'
store=True
args: 'Is session escalated'
livechat_lang_id
Many2one → res.lang
help='Lang of the visitor of the channel.'
string='Language'
args: 'res.lang'
livechat_matches_self_expertise
Boolean
compute='_compute_livechat_matches_self_expertise'
search='_search_livechat_matches_self_expertise'
livechat_matches_self_lang
Boolean
compute='_compute_livechat_matches_self_lang'
search='_search_livechat_matches_self_lang'
livechat_note
Html
groups='base.group_user'
help='Note about the session, visible to all internal users having access to the session.'
sanitize_style=True
args: 'Live Chat Note'
livechat_operator_id
Many2one → res.partner
index='btree_not_null'
string='Operator'
args: 'res.partner'
livechat_outcome
Selection
compute='_compute_livechat_outcome'
store=True
args: [('no_answer', 'Never Answered'), ('no_agent', 'No one Available'), ('no_failure', 'Success'), ('escalated', 'Escalated')]
livechat_start_hour
Float
compute='_compute_livechat_start_hour'
store=True
args: 'Session Start Hour'
livechat_status
Selection
compute='_compute_livechat_status'
groups='base.group_user'
readonly=False
selection=[('in_progress', 'In progress'), ('waiting', 'Waiting for customer'), ('need_help', 'Looking for help')]
store=True
livechat_week_day
Selection
compute='_compute_livechat_week_day'
store=True
string='Day of the Week'
args: [('0', 'Monday'), ('1', 'Tuesday'), ('2', 'Wednesday'), ('3', 'Thursday'), ('4', 'Friday'), ('5', 'Saturday'), ('6', 'Sunday')]
rating_last_text
Selection
store=True
execute_command_history(self, **kwargs)
livechat_join_channel_needing_help(self)
write(self, vals)
agent_expertise_ids
Many2many → im_livechat.expertise
compute='_compute_agent_expertise_ids'
compute_sudo=True
inverse='_inverse_agent_expertise_ids'
args: 'im_livechat.expertise'
chatbot_script_id
Many2one → chatbot.script
compute='_compute_chatbot_script_id'
compute_sudo=True
inverse='_inverse_chatbot_script_id'
args: 'chatbot.script'
livechat_member_history_ids
One2many → im_livechat.channel.member.history
livechat_member_type
Selection
compute='_compute_livechat_member_type'
compute_sudo=True
inverse='_inverse_livechat_member_type'
args: [('agent', 'Agent'), ('visitor', 'Visitor'), ('bot', 'Chatbot')]
create(self, vals_list)
No new fields.
Public methods (1)create(self, vals_list)
are_you_inside
Boolean
compute='_are_you_inside'
readonly=True
store=False
string='Are you inside the matrix?'
available_operator_ids
Many2many → res.users
compute='_compute_available_operator_ids'
args: 'res.users'
block_assignment_during_call
Boolean
help='While on a call, agents will not receive new conversations.'
args: 'No Chats During Call'
button_background_color
Char
default='#875A7B'
help='Default background color of the Livechat button'
button_text
Char
default=_default_button_text
translate=True
args: 'Text of the Button'
button_text_color
Char
default='#FFFFFF'
help='Default text color of the Livechat button'
channel_ids
One2many → discuss.channel
chatbot_script_count
Integer
compute='_compute_chatbot_script_count'
string='Number of Chatbot'
default_message
Char
default=_default_default_message
help="This is an automated 'welcome' message that your visitor will see when they initiate a new conversation."
translate=True
args: 'Welcome Message'
header_background_color
Char
default='#875A7B'
help='Default background color of the channel header once open'
max_sessions
Integer
default=10
help='Maximum number of concurrent sessions per operator.'
string='Maximum Sessions'
max_sessions_mode
Selection
default='unlimited'
help='If limited, operators will only handle the selected number of sessions at a time.'
string='Sessions per Operator'
args: [('unlimited', 'Unlimited'), ('limited', 'Limited')]
name
Char
required=True
args: 'Channel Name'
nbr_channel
Integer
compute='_compute_nbr_channel'
readonly=True
store=False
args: 'Number of conversation'
ongoing_session_count
Integer
compute='_compute_ongoing_sessions_count'
args: 'Number of Ongoing Sessions'
remaining_session_capacity
Integer
compute='_compute_remaining_session_capacity'
args: 'Remaining Session Capacity'
review_link
Char
help='Visitors who leave a positive review will be redirected to this optional link.'
args: 'Review Link'
rule_ids
One2many → im_livechat.channel.rule
script_external
Html
compute='_compute_script_external'
readonly=True
sanitize=False
store=False
args: 'Script (external)'
title_color
Char
default='#FFFFFF'
help='Default title color of the channel once open'
user_ids
Many2many → res.users
default=_default_user_ids
string='Agents'
args: 'res.users', 'im_livechat_channel_im_user', 'channel_id', 'user_id'
web_page
Char
compute='_compute_web_page_link'
help='URL to a static page where you client can discuss with the operator of the channel.'
readonly=True
store=False
args: 'Web Page'
action_join(self)
action_quit(self)
action_view_chatbot_scripts(self)
action_view_rating(self)
get_livechat_info(self, username=None)
web_read(self, specification: <expr>) -> <expr>
agent_expertise_ids
Many2many → im_livechat.expertise
compute='_compute_member_fields'
store=True
args: 'im_livechat.expertise'
avatar_128
Binary
compute='_compute_avatar_128'
call_count
Float
aggregator='sum'
related='has_call'
args: '# of Sessions with Calls'
call_duration_hour
Float
aggregator='sum'
compute='_compute_call_duration_hour'
store=True
args: 'Call Duration'
call_history_ids
Many2many → discuss.call.history
call_percentage
Float
aggregator='avg'
related='has_call'
args: 'Session with Calls (%)'
channel_id
Many2one → discuss.channel
compute='_compute_member_fields'
index=True
ondelete='cascade'
store=True
args: 'discuss.channel'
chatbot_script_id
Many2one → chatbot.script
compute='_compute_member_fields'
index='btree_not_null'
store=True
args: 'chatbot.script'
conversation_tag_ids
Many2many → im_livechat.conversation.tag
related='channel_id.livechat_conversation_tag_ids'
args: 'im_livechat.conversation.tag', 'im_livechat_channel_member_history_conversation_tag_rel'
guest_id
Many2one → mail.guest
compute='_compute_member_fields'
index='btree_not_null'
store=True
args: 'mail.guest'
has_call
Float
compute='_compute_has_call'
store=True
help_status
Selection
compute='_compute_help_status'
selection=[('requested', 'Help Requested'), ('provided', 'Help Provided')]
store=True
livechat_member_type
Selection
compute='_compute_member_fields'
store=True
args: [('agent', 'Agent'), ('visitor', 'Visitor'), ('bot', 'Chatbot')]
member_id
Many2one → discuss.channel.member
index='btree_not_null'
args: 'discuss.channel.member'
message_count
Integer
aggregator='avg'
args: '# of Messages per Session'
partner_id
Many2one → res.partner
compute='_compute_member_fields'
index='btree_not_null'
store=True
args: 'res.partner'
rating
Float
related='rating_id.rating'
rating_id
Many2one → rating.rating
compute='_compute_rating_id'
store=True
args: 'rating.rating'
rating_text
Selection
related='rating_id.rating_text'
string='Rating text'
response_time_hour
Float
aggregator='avg'
args: 'Response Time'
session_country_id
Many2one → res.country
related='channel_id.country_id'
args: 'res.country'
session_duration_hour
Float
aggregator='avg'
compute='_compute_session_duration_hour'
help='Time spent by the persona in the session in hours'
store=True
args: 'Session Duration'
session_livechat_channel_id
Many2one → im_livechat.channel
related='channel_id.livechat_channel_id'
args: 'im_livechat.channel', 'Live chat channel'
session_outcome
Selection
related='channel_id.livechat_outcome'
session_start_hour
Float
related='channel_id.livechat_start_hour'
session_week_day
Selection
related='channel_id.livechat_week_day'
action_open_discuss_channel_view(self, domain=())
action
Selection
default='display_button'
help="* 'Show' displays the chat button on the pages.\n* 'Show with notification' is 'Show' in addition to a floating text just next to the button.\n* 'Open automatically' displays the button and automatically opens the conversation pane.\n* 'Hide' hides the chat button on the pages.\n"
required=True
string='Live Chat Button'
args: [('display_button', 'Show'), ('display_button_and_text', 'Show with notification'), ('auto_popup', 'Open automatically'), ('hide_button', 'Hide')]
auto_popup_timer
Integer
default=0
help="Delay (in seconds) to automatically open the conversation window. Note: the selected action must be 'Open automatically' otherwise this parameter will not be taken into account."
args: 'Time to Open'
channel_id
Many2one → im_livechat.channel
help='The channel of the rule'
index='btree_not_null'
args: 'im_livechat.channel', 'Channel'
chatbot_enabled_condition
Selection
default='always'
required=True
selection=[('always', 'Always'), ('only_if_no_operator', 'Only when no operator is available'), ('only_if_operator', 'Only when an operator is available')]
string='Enable ChatBot'
chatbot_script_id
Many2one → chatbot.script
string='Chatbot'
args: 'chatbot.script'
country_ids
Many2many → res.country
help="The rule will only be applied for these countries. Example: if you select 'Belgium' and 'United States' and that you set the action to 'Hide', the chat button will be hidden on the specified URL from the visitors located in these 2 countries. This feature requires GeoIP installed on your server."
args: 'res.country', 'im_livechat_channel_country_rel', 'channel_id', 'country_id', 'Countries'
regex_url
Char
help='Regular expression specifying the web pages this rule will be applied on.'
args: 'URL Regex'
sequence
Integer
default=10
help='Given the order to find a matching rule. If 2 rules are matching for the given url/country, the one with the lowest sequence will be chosen.'
args: 'Matching order'
match_rule(self, channel_id, url, country_id=False)
color
Integer
default=_get_default_color
args: 'Color'
conversation_ids
Many2many → discuss.channel
string='Discuss Channels'
args: 'discuss.channel', 'livechat_conversation_tag_rel'
name
Char
required=True
args: 'Name'
No public methods.
name
Char
required=True
translate=True
args: 'Name'
user_ids
Many2many → res.users
compute='_compute_user_ids'
inverse='_inverse_user_ids'
store=False
string='Operators'
args: 'res.users'
No public methods.
agent_providing_help_history
Many2one → im_livechat.channel.member.history
readonly=True
related='channel_id.livechat_agent_providing_help_history'
args: 'im_livechat.channel.member.history'
agent_requesting_help_history
Many2one → im_livechat.channel.member.history
readonly=True
related='channel_id.livechat_agent_requesting_help_history'
args: 'im_livechat.channel.member.history'
call_duration_hour
Float
aggregator='avg'
digits=(16, 2)
readonly=True
args: 'Call Duration'
channel_id
Many2one → discuss.channel
readonly=True
args: 'discuss.channel', 'Conversation'
channel_name
Char
readonly=True
args: 'Channel Name'
chatbot_answers_path
Char
readonly=True
args: 'Chatbot Answers'
chatbot_answers_path_str
Char
readonly=True
args: 'Chatbot Answers (String)'
chatbot_script_id
Many2one → chatbot.script
readonly=True
args: 'chatbot.script', 'Chatbot'
conversation_tag_ids
Many2many → im_livechat.conversation.tag
readonly=True
related='channel_id.livechat_conversation_tag_ids'
string='Tags used in this conversation'
args: 'im_livechat.conversation.tag'
country_id
Many2one → res.country
readonly=True
args: 'res.country', 'Country of the visitor'
day_number
Selection
readonly=True
selection=[('0', 'Sunday'), ('1', 'Monday'), ('2', 'Tuesday'), ('3', 'Wednesday'), ('4', 'Thursday'), ('5', 'Friday'), ('6', 'Saturday')]
string='Day of the Week'
duration
Float
aggregator='avg'
digits=(16, 2)
help='Duration of the conversation (in minutes)'
readonly=True
args: 'Duration (min)'
handled_by_agent
Integer
aggregator='sum'
readonly=True
args: 'Handled by Agent'
handled_by_bot
Integer
aggregator='sum'
readonly=True
args: 'Handled by Bot'
has_call
Float
readonly=True
args: 'Whether the session had a call'
lang_id
Many2one → res.lang
readonly=True
related='channel_id.livechat_lang_id'
string='Language'
args: 'res.lang'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_message
Integer
aggregator='avg'
help='Number of message in the conversation'
readonly=True
args: 'Messages per Session'
number_of_calls
Float
aggregator='sum'
readonly=True
related='has_call'
args: '# of Sessions with calls'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Agent'
percentage_of_calls
Float
aggregator='avg'
readonly=True
related='has_call'
args: 'Session with Calls (%)'
rating
Integer
aggregator='avg'
readonly=True
args: 'Rating'
rating_text
Char
readonly=True
args: 'Satisfaction Rate'
session_expertise_ids
Many2many → im_livechat.expertise
readonly=True
related='channel_id.livechat_expertise_ids'
string='Expertises used in this session'
args: 'im_livechat.expertise'
session_expertises
Char
readonly=True
args: 'Expertises used in this session (String)'
session_outcome
Selection
readonly=True
selection=[('no_answer', 'Never Answered'), ('no_agent', 'No one Available'), ('no_failure', 'Success'), ('escalated', 'Escalated')]
string='Session Outcome'
start_date
Datetime
readonly=True
args: 'Start Date of session'
start_date_hour
Char
readonly=True
args: 'Hour of start Date of session'
start_date_minutes
Char
readonly=True
args: 'Start Date of session, truncated to minutes'
start_hour
Char
readonly=True
args: 'Start Hour of session'
time_to_answer
Float
aggregator='avg'
digits=(16, 6)
help='Average time in hours to give the first answer to the visitor'
readonly=True
args: 'Response Time'
uuid
Char
readonly=True
args: 'UUID'
visitor_partner_id
Many2one → res.partner
readonly=True
string='Customer'
args: 'res.partner'
action_open_discuss_channel_view(self, domain=())
formatted_read_group(self, domain, groupby=(), aggregates=(), having=(), offset=0, limit=None, order=None)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)action_open_rated_object(self)
No new fields.
Public methods (1)write(self, vals)
chatbot_script_ids
One2many → chatbot.script
livechat_channel_count
Integer
compute='_compute_livechat_channel_count'
user_livechat_username
Char
compute='_compute_user_livechat_username'
action_view_livechat_sessions(self)
has_access_livechat
Boolean
compute='_compute_has_access_livechat'
readonly=True
store=False
string='Has access to Livechat'
livechat_channel_ids
Many2many → im_livechat.channel
copy=False
args: 'im_livechat.channel', 'im_livechat_channel_im_user', 'user_id', 'channel_id'
livechat_expertise_ids
Many2many → im_livechat.expertise
compute='_compute_livechat_expertise_ids'
groups='im_livechat.im_livechat_group_user,base.group_erp_manager'
help='When forwarding live chat conversations, the chatbot will prioritize users with matching expertise.'
inverse='_inverse_livechat_expertise_ids'
store=False
string='Live Chat Expertise'
args: 'im_livechat.expertise'
livechat_is_in_call
Boolean
compute='_compute_livechat_is_in_call'
groups='im_livechat.im_livechat_group_user'
help='Whether the user is in a call, only available if the user is in a live chat agent'
livechat_lang_ids
Many2many → res.lang
compute='_compute_livechat_lang_ids'
groups='im_livechat.im_livechat_group_user,base.group_erp_manager'
inverse='_inverse_livechat_lang_ids'
store=False
string='Livechat Languages'
args: 'res.lang'
livechat_ongoing_session_count
Integer
compute='_compute_livechat_ongoing_session_count'
groups='im_livechat.im_livechat_group_user'
args: 'Number of Ongoing sessions'
livechat_username
Char
compute='_compute_livechat_username'
groups='im_livechat.im_livechat_group_user,base.group_erp_manager'
inverse='_inverse_livechat_username'
store=False
string='Livechat Username'
SELF_READABLE_FIELDS(self)
SELF_WRITEABLE_FIELDS(self)
write(self, vals)
livechat_expertise_ids
Many2many → im_livechat.expertise
help='When forwarding live chat conversations, the chatbot will prioritize users with matching expertise.'
string='Live Chat Expertise'
args: 'im_livechat.expertise'
livechat_lang_ids
Many2many → res.lang
comodel_name='res.lang'
help='These languages, in addition to your main language, will be used to assign you to Live Chat sessions.'
string='Livechat languages'
livechat_username
Char
help='This username will be used as your name in the livechat channels.'
args: 'Livechat Username'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/18.0/im_livechat |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Website/Live Chat |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Xavier ALT, Nicolas Lempereur, Aaron Bohy, Lucas Perais (lpe), Odoo Online, Pierre Masereel, Jorge Pinna Puissant, Alexandre Kühn, Adrien Dieudonné, Sébastien Theys, Julien Mougenot, Samuel Degueldre, Nasreddin Boulif (bon), Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Mathieu Duckerts-Antoine, Pierre Paridans, Didier (did), Julien Banken, Thomas Lefebvre (thle), Louis Wicket (wil), tsm-odoo, nda, Victor Piryns (pivi), Dylan Kiss (dyki), Antoine (ande), Rahul Prajapati, Mahdi Cheikh Rouhou (macr), omra-odoo, Zelong Lin, maad-odoo, bary, Maryam Kia, reka-odoo, Bruno Boi (boi), Bastien Fafchamps (bafa), Julien Carion (juca), adsh-odoo, Alex Kühn, Martin Trigaux (mat), sami odoo, Louis (wil), Junqi Wu, mano-odoo, Antoine (anso), Pierre Pulinckx (PIPU), aych-odoo, Pierre Pulinckx (pipu), laro-odoo, Bastien PIERRE, zel-odoo, Krzysztof Magusiak (krma), Giorgio Tocco (gito), jayp-odoo, ramh, gito-odoo, Kevin Gerard (kege), Akash Parmar, pmah-odoo, saurabh, akth-odoo, akus-odoo, Lucas Thomassin |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/app/live-chat |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 01:25:56 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - html_editor - rating - digest - portal - web_editor - http_routing - auth_signup - resource - utm |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Live Chat Support
==========================
Allow to drop instant messaging widgets on any web page that will communicate
with the current server and dispatch visitors request amongst several live
chat operators.
Help your customers with this chat, and analyse their feedback.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
chatbot_script_answer_view_form |
chatbot.script.answer.view.form | chatbot.script.answer | form | New |
chatbot_script_answer_view_tree |
chatbot.script.answer.view.list | chatbot.script.answer | list | New |
chatbot_script_step_view_form |
chatbot.script.step.view.form | chatbot.script.step | form | New |
chatbot_script_step_view_tree |
chatbot.script.step.view.list | chatbot.script.step | list | New |
chatbot_script_view_form |
chatbot.script.view.form | chatbot.script | form | New |
chatbot_script_view_search |
chatbot.script.view.search | chatbot.script | search | New |
chatbot_script_view_tree |
chatbot.script.view.list | chatbot.script | list | New |
chatbot_test_script_page |
chatbot_test_script_page | ir.ui.view | qweb | New |
discuss_channel_view_form |
discuss.channel.form | discuss.channel | form | New |
discuss_channel_view_kanban |
discuss.channel.kanban | discuss.channel | kanban | New |
discuss_channel_view_search |
discuss.channel.search | discuss.channel | search | New |
discuss_channel_view_tree |
discuss.channel.list | discuss.channel | list | New |
external_loader |
Livechat : external_script field of livechat channel | ir.ui.view | qweb | New |
im_livechat.digest_digest_view_form_inherit |
im.livechat.digest.digest.view.form.inherit | digest.digest | xpath | Inherits digest.digest_digest_view_form |
im_livechat.rating_rating_view_kanban |
im_livechat.rating.rating.view.kanban | rating.rating | xpath | Inherits rating.rating_rating_view_kanban |
im_livechat.rating_rating_view_tree |
im_livechat.rating.rating.view.list | rating.rating | xpath | Inherits rating.rating_rating_view_tree |
im_livechat.unit_embed_suite |
im_livechat.unit_embed_suite | ir.ui.view | qweb | New |
im_livechat_channel_rule_view_form |
im_livechat.channel.rule.form | im_livechat.channel.rule | form | New |
im_livechat_channel_rule_view_kanban |
im_livechat.channel.rule.kanban | im_livechat.channel.rule | kanban | New |
im_livechat_channel_rule_view_tree |
im.livechat.channel.rule.list | im_livechat.channel.rule | list | New |
im_livechat_channel_view_form |
im_livechat.channel.form | im_livechat.channel | form | New |
im_livechat_channel_view_kanban |
im_livechat.channel.kanban | im_livechat.channel | kanban | New |
im_livechat_channel_view_search |
im.livechat.channel.view.search | im_livechat.channel | search | New |
im_livechat_report_channel_view_graph |
im_livechat.report.channel.graph | im_livechat.report.channel | graph | New |
im_livechat_report_channel_view_pivot |
im_livechat.report.channel.pivot | im_livechat.report.channel | pivot | New |
im_livechat_report_channel_view_search |
im_livechat.report.channel.search | im_livechat.report.channel | search | New |
im_livechat_report_operator_view_graph |
im_livechat.report.operator.graph | im_livechat.report.operator | graph | New |
im_livechat_report_operator_view_pivot |
im_livechat.report.operator.pivot | im_livechat.report.operator | pivot | New |
im_livechat_report_operator_view_search |
im_livechat.report.operator.search | im_livechat.report.operator | search | New |
livechat_email_template |
livechat_email_template | ir.ui.view | qweb | New |
loader |
Livechat : Javascript appending the livechat button | ir.ui.view | qweb | New |
rating_rating_view_search_livechat |
rating.rating.search.livechat | rating.rating | xpath | Inherits rating.rating_rating_view_search |
res_users_form_view |
res.users.form.im_livechat | res.users | xpath | Inherits base.view_users_form |
res_users_form_view_simple_modif |
res.users.preferences.form.im_livechat | res.users | xpath | Inherits base.view_users_form_simple_modif |
support_page |
Livechat : Support Page | ir.ui.view | qweb | New |
discuss_channel_id
Many2one → discuss.channel
ondelete='cascade'
required=True
string='Discussion Channel'
args: 'discuss.channel'
mail_message_id
Many2one → mail.message
ondelete='cascade'
required=True
string='Related Mail Message'
args: 'mail.message'
script_step_id
Many2one → chatbot.script.step
ondelete='cascade'
required=True
string='Chatbot Step'
args: 'chatbot.script.step'
user_raw_answer
Html
string="User's raw answer"
user_script_answer_id
Many2one → chatbot.script.answer
ondelete='set null'
string="User's answer"
args: 'chatbot.script.answer'
No public methods.
active
Boolean
default=True
first_step_warning
Selection
compute='_compute_first_step_warning'
args: [('first_step_operator', 'First Step Operator'), ('first_step_invalid', 'First Step Invalid')]
image_1920
Image
readonly=False
related='operator_partner_id.image_1920'
livechat_channel_count
Integer
compute='_compute_livechat_channel_count'
string='Livechat Channel Count'
operator_partner_id
Many2one → res.partner
copy=False
ondelete='restrict'
required=True
string='Bot Operator'
args: 'res.partner'
script_step_ids
One2many → chatbot.script.step
copy=True
string='Script Steps'
args: 'chatbot.script.step', 'chatbot_script_id'
title
Char
default='Chatbot'
required=True
translate=True
args: 'Title'
action_view_livechat_channels(self)
copy(self, default=None)
copy_data(self, default=None)
create(self, vals_list)
write(self, vals)
chatbot_script_id
Many2one
related='script_step_id.chatbot_script_id'
name
Char
required=True
string='Answer'
translate=True
redirect_link
Char
help='The visitor will be redirected to this link upon clicking the option (note that the script will end if the link is external to the livechat website).'
args: 'Redirect Link'
script_step_id
Many2one → chatbot.script.step
ondelete='cascade'
required=True
string='Script Step'
args: 'chatbot.script.step'
sequence
Integer
default=1
string='Sequence'
No public methods.
answer_ids
One2many → chatbot.script.answer
copy=True
string='Answers'
args: 'chatbot.script.answer', 'script_step_id'
chatbot_script_id
Many2one → chatbot.script
ondelete='cascade'
required=True
string='Chatbot'
args: 'chatbot.script'
is_forward_operator_child
Boolean
compute='_compute_is_forward_operator_child'
message
Text
string='Message'
translate=True
sequence
Integer
string='Sequence'
step_type
Selection
default='text'
required=True
args: [('text', 'Text'), ('question_selection', 'Question'), ('question_email', 'Email'), ('question_phone', 'Phone'), ('forward_operator', 'Forward to Operator'), ('free_input_single', 'Free Input'), ('free_input_multi', 'Free Input (Multi-Line)')]
triggering_answer_ids
Many2many → chatbot.script.answer
compute='_compute_triggering_answer_ids'
copy=False
domain="[('script_step_id.sequence', '<', sequence)]"
help='Show this step only if all of these answers have been selected.'
readonly=False
store=True
string='Only If'
args: 'chatbot.script.answer'
create(self, vals_list)
kpi_livechat_conversations
Boolean
kpi_livechat_conversations_value
Integer
compute='_compute_kpi_livechat_conversations_value'
kpi_livechat_rating
Boolean
kpi_livechat_rating_value
Float
compute='_compute_kpi_livechat_rating_value'
digits=(16, 2)
kpi_livechat_response
Boolean
kpi_livechat_response_value
Float
compute='_compute_kpi_livechat_response_value'
digits=(16, 2)
No public methods.
anonymous_name
Char
channel_type
Selection
ondelete={'livechat': 'cascade'}
selection_add=[('livechat', 'Livechat Conversation')]
chatbot_current_step_id
Many2one → chatbot.script.step
string='Chatbot Current Step'
args: 'chatbot.script.step'
chatbot_message_ids
One2many → chatbot.message
string='Chatbot Messages'
args: 'chatbot.message', 'discuss_channel_id'
country_id
Many2one → res.country
help='Country of the visitor of the channel'
string='Country'
args: 'res.country'
duration
Float
compute='_compute_duration'
help='Duration of the session in hours'
args: 'Duration'
livechat_active
Boolean
help='Livechat session is active until visitor leaves the conversation.'
args: 'Is livechat ongoing?'
livechat_channel_id
Many2one → im_livechat.channel
index='btree_not_null'
args: 'im_livechat.channel', 'Channel'
livechat_operator_id
Many2one → res.partner
index='btree_not_null'
string='Operator'
args: 'res.partner'
execute_command_history(self, **kwargs)
No new fields.
Public methods (0)No public methods.
are_you_inside
Boolean
compute='_are_you_inside'
readonly=True
store=False
string='Are you inside the matrix?'
available_operator_ids
Many2many → res.users
compute='_compute_available_operator_ids'
args: 'res.users'
button_background_color
Char
default='#875A7B'
help='Default background color of the Livechat button'
button_text
Char
default=_default_button_text
help='Default text displayed on the Livechat Support Button'
translate=True
args: 'Text of the Button'
button_text_color
Char
default='#FFFFFF'
help='Default text color of the Livechat button'
channel_ids
One2many → discuss.channel
chatbot_script_count
Integer
compute='_compute_chatbot_script_count'
string='Number of Chatbot'
default_message
Char
default=_default_default_message
help="This is an automated 'welcome' message that your visitor will see when they initiate a new conversation."
translate=True
args: 'Welcome Message'
header_background_color
Char
default='#875A7B'
help='Default background color of the channel header once open'
image_128
Image
max_height=128
max_width=128
args: 'Image'
input_placeholder
Char
help='Text that prompts the user to initiate the chat.'
translate=True
args: 'Chat Input Placeholder'
name
Char
required=True
args: 'Channel Name'
nbr_channel
Integer
compute='_compute_nbr_channel'
readonly=True
store=False
args: 'Number of conversation'
rule_ids
One2many → im_livechat.channel.rule
script_external
Html
compute='_compute_script_external'
readonly=True
sanitize=False
store=False
args: 'Script (external)'
title_color
Char
default='#FFFFFF'
help='Default title color of the channel once open'
user_ids
Many2many → res.users
default=_default_user_ids
string='Operators'
args: 'res.users', 'im_livechat_channel_im_user', 'channel_id', 'user_id'
web_page
Char
compute='_compute_web_page_link'
help='URL to a static page where you client can discuss with the operator of the channel.'
readonly=True
store=False
args: 'Web Page'
action_join(self)
action_quit(self)
action_view_chatbot_scripts(self)
action_view_rating(self)
get_livechat_info(self, username=None)
action
Selection
default='display_button'
help="* 'Show' displays the chat button on the pages.\n* 'Show with notification' is 'Show' in addition to a floating text just next to the button.\n* 'Open automatically' displays the button and automatically opens the conversation pane.\n* 'Hide' hides the chat button on the pages.\n"
required=True
string='Live Chat Button'
args: [('display_button', 'Show'), ('display_button_and_text', 'Show with notification'), ('auto_popup', 'Open automatically'), ('hide_button', 'Hide')]
auto_popup_timer
Integer
default=0
help="Delay (in seconds) to automatically open the conversation window. Note: the selected action must be 'Open automatically' otherwise this parameter will not be taken into account."
args: 'Open automatically timer'
channel_id
Many2one → im_livechat.channel
help='The channel of the rule'
args: 'im_livechat.channel', 'Channel'
chatbot_only_if_no_operator
Boolean
help='Enable the bot only if there is no operator available'
string='Enabled only if no operator'
chatbot_script_id
Many2one → chatbot.script
string='Chatbot'
args: 'chatbot.script'
country_ids
Many2many → res.country
help="The rule will only be applied for these countries. Example: if you select 'Belgium' and 'United States' and that you set the action to 'Hide', the chat button will be hidden on the specified URL from the visitors located in these 2 countries. This feature requires GeoIP installed on your server."
args: 'res.country', 'im_livechat_channel_country_rel', 'channel_id', 'country_id', 'Country'
regex_url
Char
help='Regular expression specifying the web pages this rule will be applied on.'
args: 'URL Regex'
sequence
Integer
default=10
help='Given the order to find a matching rule. If 2 rules are matching for the given url/country, the one with the lowest sequence will be chosen.'
args: 'Matching order'
match_rule(self, channel_id, url, country_id=False)
channel_id
Many2one → discuss.channel
readonly=True
args: 'discuss.channel', 'Conversation'
channel_name
Char
readonly=True
args: 'Channel Name'
country_id
Many2one → res.country
readonly=True
args: 'res.country', 'Country of the visitor'
day_number
Char
help='1 is Monday, 7 is Sunday'
readonly=True
args: 'Day Number'
days_of_activity
Integer
aggregator='max'
help='Number of days since the first session of the operator'
readonly=True
args: 'Days of activity'
duration
Float
aggregator='avg'
digits=(16, 2)
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
is_anonymous
Integer
readonly=True
args: 'Is visitor anonymous'
is_happy
Integer
readonly=True
args: 'Visitor is Happy'
is_unrated
Integer
readonly=True
args: 'Session not rated'
is_without_answer
Integer
aggregator='sum'
help='A session is without answer if the operator did not answer. \n If the visitor is also the operator, the session will always be answered.'
readonly=True
args: 'Session(s) without answer'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_message
Integer
aggregator='avg'
help='Number of message in the conversation'
readonly=True
args: 'Average message'
nbr_speaker
Integer
aggregator='avg'
help='Number of different speakers'
readonly=True
args: '# of speakers'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Operator'
rating
Integer
aggregator='avg'
readonly=True
args: 'Rating'
rating_text
Char
readonly=True
args: 'Satisfaction Rate'
start_date
Datetime
readonly=True
args: 'Start Date of session'
start_date_hour
Char
readonly=True
args: 'Hour of start Date of session'
start_hour
Char
readonly=True
args: 'Start Hour of session'
technical_name
Char
readonly=True
args: 'Code'
time_to_answer
Float
aggregator='avg'
digits=(16, 2)
help='Average time in seconds to give the first answer to the visitor'
readonly=True
args: 'Time to answer (sec)'
uuid
Char
readonly=True
args: 'UUID'
init(self)
channel_id
Many2one → discuss.channel
readonly=True
args: 'discuss.channel', 'Conversation'
duration
Float
aggregator='avg'
digits=(16, 2)
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_channel
Integer
aggregator='sum'
readonly=True
args: '# of Sessions'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Operator'
rating
Float
aggregator='avg'
help='Average rating given by the visitor'
readonly=True
args: 'Average rating'
start_date
Datetime
readonly=True
args: 'Start Date of session'
time_to_answer
Float
aggregator='avg'
digits=(16, 2)
help='Average time to give the first answer to the visitor'
readonly=True
args: 'Time to answer'
init(self)
No new fields.
Public methods (0)No public methods.
parent_author_name
Char
compute='_compute_parent_author_name'
parent_body
Html
compute='_compute_parent_body'
No public methods.
No new fields.
Public methods (1)action_open_rated_object(self)
user_livechat_username
Char
compute='_compute_user_livechat_username'
No public methods.
has_access_livechat
Boolean
compute='_compute_has_access_livechat'
readonly=True
store=False
string='Has access to Livechat'
livechat_lang_ids
Many2many → res.lang
compute='_compute_livechat_lang_ids'
inverse='_inverse_livechat_lang_ids'
store=False
string='Livechat Languages'
args: 'res.lang'
livechat_username
Char
compute='_compute_livechat_username'
inverse='_inverse_livechat_username'
store=False
string='Livechat Username'
SELF_READABLE_FIELDS(self)
SELF_WRITEABLE_FIELDS(self)
livechat_lang_ids
Many2many → res.lang
comodel_name='res.lang'
help='These languages, in addition to your main language, will be used to assign you to Live Chat sessions.'
string='Livechat languages'
livechat_username
Char
help='This username will be used as your name in the livechat channels.'
args: 'Livechat Username'
No public methods.
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
chatbot_script_answer_view_form |
chatbot.script.answer.view.form | chatbot.script.answer | form | New |
chatbot_script_answer_view_tree |
chatbot.script.answer.view.tree | chatbot.script.answer | tree | New |
chatbot_script_step_view_form |
chatbot.script.step.view.form | chatbot.script.step | form | New |
chatbot_script_step_view_tree |
chatbot.script.step.view.tree | chatbot.script.step | tree | New |
chatbot_script_view_form |
chatbot.script.view.form | chatbot.script | form | New |
chatbot_script_view_search |
chatbot.script.view.search | chatbot.script | search | New |
chatbot_script_view_tree |
chatbot.script.view.tree | chatbot.script | tree | New |
chatbot_test_script_page |
chatbot_test_script_page | ir.ui.view | qweb | New |
discuss_channel_view_form |
discuss.channel.form | discuss.channel | form | New |
discuss_channel_view_search |
discuss.channel.search | discuss.channel | search | New |
discuss_channel_view_tree |
discuss.channel.tree | discuss.channel | tree | New |
external_loader |
Livechat : external_script field of livechat channel | ir.ui.view | qweb | New |
im_livechat.digest_digest_view_form_inherit |
im.livechat.digest.digest.view.form.inherit | digest.digest | xpath | Inherits digest.digest_digest_view_form |
im_livechat.qunit_embed_suite |
im_livechat.qunit_embed_suite | ir.ui.view | qweb | New |
im_livechat.rating_rating_view_kanban |
im_livechat.rating.rating.view.kanban | rating.rating | xpath | Inherits rating.rating_rating_view_kanban |
im_livechat.rating_rating_view_tree |
im_livechat.rating.rating.view.tree | rating.rating | xpath | Inherits rating.rating_rating_view_tree |
im_livechat_channel_rule_view_form |
im_livechat.channel.rule.form | im_livechat.channel.rule | form | New |
im_livechat_channel_rule_view_kanban |
im_livechat.channel.rule.kanban | im_livechat.channel.rule | kanban | New |
im_livechat_channel_rule_view_tree |
im.livechat.channel.rule.tree | im_livechat.channel.rule | tree | New |
im_livechat_channel_view_form |
im_livechat.channel.form | im_livechat.channel | form | New |
im_livechat_channel_view_kanban |
im_livechat.channel.kanban | im_livechat.channel | kanban | New |
im_livechat_channel_view_search |
im.livechat.channel.view.search | im_livechat.channel | search | New |
im_livechat_report_channel_view_graph |
im_livechat.report.channel.graph | im_livechat.report.channel | graph | New |
im_livechat_report_channel_view_pivot |
im_livechat.report.channel.pivot | im_livechat.report.channel | pivot | New |
im_livechat_report_channel_view_search |
im_livechat.report.channel.search | im_livechat.report.channel | search | New |
im_livechat_report_operator_view_graph |
im_livechat.report.operator.graph | im_livechat.report.operator | graph | New |
im_livechat_report_operator_view_pivot |
im_livechat.report.operator.pivot | im_livechat.report.operator | pivot | New |
im_livechat_report_operator_view_search |
im_livechat.report.operator.search | im_livechat.report.operator | search | New |
livechat_email_template |
livechat_email_template | ir.ui.view | qweb | New |
loader |
Livechat : Javascript appending the livechat button | ir.ui.view | qweb | New |
rating_rating_view_search_livechat |
rating.rating.search.livechat | rating.rating | xpath | Inherits rating.rating_rating_view_search |
res_users_form_view |
res.users.form.im_livechat | res.users | xpath | Inherits base.view_users_form |
res_users_form_view_simple_modif |
res.users.preferences.form.im_livechat | res.users | xpath | Inherits base.view_users_form_simple_modif |
support_page |
Livechat : Support Page | ir.ui.view | qweb | New |
discuss_channel_id
Many2one → discuss.channel
ondelete='cascade'
required=True
string='Discussion Channel'
args: 'discuss.channel'
mail_message_id
Many2one → mail.message
ondelete='cascade'
required=True
string='Related Mail Message'
args: 'mail.message'
script_step_id
Many2one → chatbot.script.step
ondelete='cascade'
required=True
string='Chatbot Step'
args: 'chatbot.script.step'
user_raw_answer
Html
string="User's raw answer"
user_script_answer_id
Many2one → chatbot.script.answer
ondelete='set null'
string="User's answer"
args: 'chatbot.script.answer'
No public methods.
active
Boolean
default=True
first_step_warning
Selection
compute='_compute_first_step_warning'
args: [('first_step_operator', 'First Step Operator'), ('first_step_invalid', 'First Step Invalid')]
image_1920
Image
readonly=False
related='operator_partner_id.image_1920'
livechat_channel_count
Integer
compute='_compute_livechat_channel_count'
string='Livechat Channel Count'
operator_partner_id
Many2one → res.partner
copy=False
ondelete='restrict'
required=True
string='Bot Operator'
args: 'res.partner'
script_step_ids
One2many → chatbot.script.step
copy=True
string='Script Steps'
args: 'chatbot.script.step', 'chatbot_script_id'
title
Char
default='Chatbot'
required=True
translate=True
args: 'Title'
action_view_livechat_channels(self)
copy(self, default=None)
create(self, vals_list)
write(self, vals)
chatbot_script_id
Many2one
related='script_step_id.chatbot_script_id'
name
Char
required=True
string='Answer'
translate=True
redirect_link
Char
help='The visitor will be redirected to this link upon clicking the option (note that the script will end if the link is external to the livechat website).'
args: 'Redirect Link'
script_step_id
Many2one → chatbot.script.step
ondelete='cascade'
required=True
string='Script Step'
args: 'chatbot.script.step'
sequence
Integer
default=1
string='Sequence'
No public methods.
answer_ids
One2many → chatbot.script.answer
copy=True
string='Answers'
args: 'chatbot.script.answer', 'script_step_id'
chatbot_script_id
Many2one → chatbot.script
ondelete='cascade'
required=True
string='Chatbot'
args: 'chatbot.script'
is_forward_operator_child
Boolean
compute='_compute_is_forward_operator_child'
message
Text
string='Message'
translate=True
sequence
Integer
string='Sequence'
step_type
Selection
default='text'
required=True
args: [('text', 'Text'), ('question_selection', 'Question'), ('question_email', 'Email'), ('question_phone', 'Phone'), ('forward_operator', 'Forward to Operator'), ('free_input_single', 'Free Input'), ('free_input_multi', 'Free Input (Multi-Line)')]
triggering_answer_ids
Many2many → chatbot.script.answer
compute='_compute_triggering_answer_ids'
copy=False
domain="[('script_step_id.sequence', '<', sequence)]"
help='Show this step only if all of these answers have been selected.'
readonly=False
store=True
string='Only If'
args: 'chatbot.script.answer'
create(self, vals_list)
kpi_livechat_conversations
Boolean
kpi_livechat_conversations_value
Integer
compute='_compute_kpi_livechat_conversations_value'
kpi_livechat_rating
Boolean
kpi_livechat_rating_value
Float
compute='_compute_kpi_livechat_rating_value'
digits=(16, 2)
kpi_livechat_response
Boolean
kpi_livechat_response_value
Float
compute='_compute_kpi_livechat_response_value'
digits=(16, 2)
No public methods.
anonymous_name
Char
channel_type
Selection
ondelete={'livechat': 'cascade'}
selection_add=[('livechat', 'Livechat Conversation')]
chatbot_current_step_id
Many2one → chatbot.script.step
string='Chatbot Current Step'
args: 'chatbot.script.step'
chatbot_message_ids
One2many → chatbot.message
string='Chatbot Messages'
args: 'chatbot.message', 'discuss_channel_id'
country_id
Many2one → res.country
help='Country of the visitor of the channel'
string='Country'
args: 'res.country'
duration
Float
compute='_compute_duration'
help='Duration of the session in hours'
args: 'Duration'
livechat_active
Boolean
help='Livechat session is active until visitor leaves the conversation.'
args: 'Is livechat ongoing?'
livechat_channel_id
Many2one → im_livechat.channel
index='btree_not_null'
args: 'im_livechat.channel', 'Channel'
livechat_operator_id
Many2one → res.partner
index='btree_not_null'
string='Operator'
args: 'res.partner'
execute_command_history(self, **kwargs)
No new fields.
Public methods (0)No public methods.
are_you_inside
Boolean
compute='_are_you_inside'
readonly=True
store=False
string='Are you inside the matrix?'
available_operator_ids
Many2many → res.users
compute='_compute_available_operator_ids'
args: 'res.users'
button_background_color
Char
default='#875A7B'
help='Default background color of the Livechat button'
button_text
Char
default=_default_button_text
help='Default text displayed on the Livechat Support Button'
translate=True
args: 'Text of the Button'
button_text_color
Char
default='#FFFFFF'
help='Default text color of the Livechat button'
channel_ids
One2many → discuss.channel
chatbot_script_count
Integer
compute='_compute_chatbot_script_count'
string='Number of Chatbot'
default_message
Char
default=_default_default_message
help="This is an automated 'welcome' message that your visitor will see when they initiate a new conversation."
translate=True
args: 'Welcome Message'
header_background_color
Char
default='#875A7B'
help='Default background color of the channel header once open'
image_128
Image
max_height=128
max_width=128
args: 'Image'
input_placeholder
Char
help='Text that prompts the user to initiate the chat.'
translate=True
args: 'Chat Input Placeholder'
name
Char
required=True
args: 'Channel Name'
nbr_channel
Integer
compute='_compute_nbr_channel'
readonly=True
store=False
args: 'Number of conversation'
rule_ids
One2many → im_livechat.channel.rule
script_external
Html
compute='_compute_script_external'
readonly=True
sanitize=False
store=False
args: 'Script (external)'
title_color
Char
default='#FFFFFF'
help='Default title color of the channel once open'
user_ids
Many2many → res.users
default=_default_user_ids
string='Operators'
args: 'res.users', 'im_livechat_channel_im_user', 'channel_id', 'user_id'
web_page
Char
compute='_compute_web_page_link'
help='URL to a static page where you client can discuss with the operator of the channel.'
readonly=True
store=False
args: 'Web Page'
action_join(self)
action_quit(self)
action_view_chatbot_scripts(self)
action_view_rating(self)
get_livechat_info(self, username=None)
action
Selection
default='display_button'
help="* 'Show' displays the chat button on the pages.\n* 'Show with notification' is 'Show' in addition to a floating text just next to the button.\n* 'Open automatically' displays the button and automatically opens the conversation pane.\n* 'Hide' hides the chat button on the pages.\n"
required=True
string='Live Chat Button'
args: [('display_button', 'Show'), ('display_button_and_text', 'Show with notification'), ('auto_popup', 'Open automatically'), ('hide_button', 'Hide')]
auto_popup_timer
Integer
default=0
help="Delay (in seconds) to automatically open the conversation window. Note: the selected action must be 'Open automatically' otherwise this parameter will not be taken into account."
args: 'Open automatically timer'
channel_id
Many2one → im_livechat.channel
help='The channel of the rule'
args: 'im_livechat.channel', 'Channel'
chatbot_only_if_no_operator
Boolean
help='Enable the bot only if there is no operator available'
string='Enabled only if no operator'
chatbot_script_id
Many2one → chatbot.script
string='Chatbot'
args: 'chatbot.script'
country_ids
Many2many → res.country
help="The rule will only be applied for these countries. Example: if you select 'Belgium' and 'United States' and that you set the action to 'Hide', the chat button will be hidden on the specified URL from the visitors located in these 2 countries. This feature requires GeoIP installed on your server."
args: 'res.country', 'im_livechat_channel_country_rel', 'channel_id', 'country_id', 'Country'
regex_url
Char
help='Regular expression specifying the web pages this rule will be applied on.'
args: 'URL Regex'
sequence
Integer
default=10
help='Given the order to find a matching rule. If 2 rules are matching for the given url/country, the one with the lowest sequence will be chosen.'
args: 'Matching order'
match_rule(self, channel_id, url, country_id=False)
channel_id
Many2one → discuss.channel
readonly=True
args: 'discuss.channel', 'Conversation'
channel_name
Char
readonly=True
args: 'Channel Name'
country_id
Many2one → res.country
readonly=True
args: 'res.country', 'Country of the visitor'
day_number
Char
help='1 is Monday, 7 is Sunday'
readonly=True
args: 'Day Number'
days_of_activity
Integer
group_operator='max'
help='Number of days since the first session of the operator'
readonly=True
args: 'Days of activity'
duration
Float
digits=(16, 2)
group_operator='avg'
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
is_anonymous
Integer
readonly=True
args: 'Is visitor anonymous'
is_happy
Integer
readonly=True
args: 'Visitor is Happy'
is_unrated
Integer
readonly=True
args: 'Session not rated'
is_without_answer
Integer
group_operator='sum'
help='A session is without answer if the operator did not answer. \n If the visitor is also the operator, the session will always be answered.'
readonly=True
args: 'Session(s) without answer'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_message
Integer
group_operator='avg'
help='Number of message in the conversation'
readonly=True
args: 'Average message'
nbr_speaker
Integer
group_operator='avg'
help='Number of different speakers'
readonly=True
args: '# of speakers'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Operator'
rating
Integer
group_operator='avg'
readonly=True
args: 'Rating'
rating_text
Char
readonly=True
args: 'Satisfaction Rate'
start_date
Datetime
readonly=True
args: 'Start Date of session'
start_date_hour
Char
readonly=True
args: 'Hour of start Date of session'
start_hour
Char
readonly=True
args: 'Start Hour of session'
technical_name
Char
readonly=True
args: 'Code'
time_to_answer
Float
digits=(16, 2)
group_operator='avg'
help='Average time in seconds to give the first answer to the visitor'
readonly=True
args: 'Time to answer (sec)'
uuid
Char
readonly=True
args: 'UUID'
init(self)
channel_id
Many2one → discuss.channel
readonly=True
args: 'discuss.channel', 'Conversation'
duration
Float
digits=(16, 2)
group_operator='avg'
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_channel
Integer
group_operator='sum'
readonly=True
args: '# of Sessions'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Operator'
rating
Float
group_operator='avg'
help='Average rating given by the visitor'
readonly=True
args: 'Average rating'
start_date
Datetime
readonly=True
args: 'Start Date of session'
time_to_answer
Float
digits=(16, 2)
group_operator='avg'
help='Average time to give the first answer to the visitor'
readonly=True
args: 'Time to answer'
init(self)
No new fields.
Public methods (0)No public methods.
parent_author_name
Char
compute='_compute_parent_author_name'
parent_body
Html
compute='_compute_parent_body'
No public methods.
No new fields.
Public methods (1)action_open_rated_object(self)
user_livechat_username
Char
compute='_compute_user_livechat_username'
search_for_channel_invite(self, search_term, channel_id=None, limit=30)
has_access_livechat
Boolean
compute='_compute_has_access_livechat'
readonly=True
store=False
string='Has access to Livechat'
livechat_lang_ids
Many2many → res.lang
compute='_compute_livechat_lang_ids'
inverse='_inverse_livechat_lang_ids'
store=False
string='Livechat Languages'
args: 'res.lang'
livechat_username
Char
compute='_compute_livechat_username'
inverse='_inverse_livechat_username'
store=False
string='Livechat Username'
SELF_READABLE_FIELDS(self)
SELF_WRITEABLE_FIELDS(self)
is_discuss_sidebar_category_livechat_open
Boolean
default=True
args: 'Is category livechat open'
livechat_lang_ids
Many2many → res.lang
comodel_name='res.lang'
help='These languages, in addition to your main language, will be used to assign you to Live Chat sessions.'
string='Livechat languages'
livechat_username
Char
help='This username will be used as your name in the livechat channels.'
args: 'Livechat Username'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/16.0/im_livechat |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Website/Live Chat |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Thibault Delavallée, Xavier ALT, Xavier Morel, Aaron Bohy, GitHub, qsm-odoo, Romain Derie, Adrien Dieudonne, Jorge Pinna Puissant, Alexandre Kühn, Julien Castiaux, Aurélien Warnon, Romeo Fragomeli, Victor Feyens, Sébastien Theys, Joseph Caburnay, Florent de Labarre, Julien Mougenot, Vincent Schippefilt, Samuel Degueldre, std-odoo, Nasreddin Boulif (bon), Thanh Dodeur, Gorash, Mathieu Duckerts-Antoine, Pierre Paridans, Hiral Bhavsar, Didier (did), Antoine Guenet, Antoine Vandevenne (anv), luvi, Fabio Barbero, Ipsita Borisagar, niyasraphy, Louis Wicket (wil), tsm-odoo, Victor Piryns (pivi), miad-odoo, FrancoisGe, Michael (mcm), Rahul Prajapati, Brieuc-brd, Mahdi Cheikh Rouhou (macr), Zelong Lin, Giang Pham, Martin Trigaux (mat), Elisabeth Dickinson, Ryan Cen, Morgane (morm), Nemael, aych-odoo |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/app/live-chat |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:40:49 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - rating - digest - portal - web_editor - http_routing - auth_signup - resource - utm |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Live Chat Support
==========================
Allow to drop instant messaging widgets on any web page that will communicate
with the current server and dispatch visitors request amongst several live
chat operators.
Help your customers with this chat, and analyse their feedback.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
chatbot_script_answer_view_form |
chatbot.script.answer.view.form | chatbot.script.answer | form | New |
chatbot_script_answer_view_tree |
chatbot.script.answer.view.tree | chatbot.script.answer | tree | New |
chatbot_script_step_view_form |
chatbot.script.step.view.form | chatbot.script.step | form | New |
chatbot_script_step_view_tree |
chatbot.script.step.view.tree | chatbot.script.step | tree | New |
chatbot_script_view_form |
chatbot.script.view.form | chatbot.script | form | New |
chatbot_script_view_search |
chatbot.script.view.search | chatbot.script | search | New |
chatbot_script_view_tree |
chatbot.script.view.tree | chatbot.script | tree | New |
chatbot_test_script_page |
chatbot_test_script_page | ir.ui.view | qweb | New |
external_loader |
Livechat : external_script field of livechat channel | ir.ui.view | qweb | New |
im_livechat.digest_digest_view_form_inherit |
im.livechat.digest.digest.view.form.inherit | digest.digest | xpath | Inherits digest.digest_digest_view_form |
im_livechat_canned_response_view_tree |
im_livechat.canned_response.tree | mail.shortcode | tree | New |
im_livechat_channel_rule_view_form |
im_livechat.channel.rule.form | im_livechat.channel.rule | form | New |
im_livechat_channel_rule_view_kanban |
im_livechat.channel.rule.kanban | im_livechat.channel.rule | kanban | New |
im_livechat_channel_rule_view_tree |
im.livechat.channel.rule.tree | im_livechat.channel.rule | tree | New |
im_livechat_channel_view_form |
im_livechat.channel.form | im_livechat.channel | form | New |
im_livechat_channel_view_kanban |
im_livechat.channel.kanban | im_livechat.channel | kanban | New |
im_livechat_channel_view_search |
im.livechat.channel.view.search | im_livechat.channel | search | New |
im_livechat_report_channel_view_graph |
im_livechat.report.channel.graph | im_livechat.report.channel | graph | New |
im_livechat_report_channel_view_pivot |
im_livechat.report.channel.pivot | im_livechat.report.channel | pivot | New |
im_livechat_report_channel_view_search |
im_livechat.report.channel.search | im_livechat.report.channel | search | New |
im_livechat_report_operator_view_graph |
im_livechat.report.operator.graph | im_livechat.report.operator | graph | New |
im_livechat_report_operator_view_pivot |
im_livechat.report.operator.pivot | im_livechat.report.operator | pivot | New |
im_livechat_report_operator_view_search |
im_livechat.report.operator.search | im_livechat.report.operator | search | New |
livechat_email_template |
livechat_email_template | ir.ui.view | qweb | New |
loader |
Livechat : Javascript appending the livechat button | ir.ui.view | qweb | New |
mail_channel_view_form |
mail.channel.form | mail.channel | form | New |
mail_channel_view_search |
mail.channel.search | mail.channel | search | New |
mail_channel_view_tree |
mail.channel.tree | mail.channel | tree | New |
rating_rating_view_search_livechat |
rating.rating.search.livechat | rating.rating | xpath | Inherits rating.rating_rating_view_search |
res_users_form_view |
res.users.form.im_livechat | res.users | xpath | Inherits base.view_users_form |
res_users_form_view_simple_modif |
res.users.preferences.form.im_livechat | res.users | xpath | Inherits base.view_users_form_simple_modif |
support_page |
Livechat : Support Page | ir.ui.view | qweb | New |
mail_channel_id
Many2one → mail.channel
ondelete='cascade'
required=True
string='Discussion Channel'
args: 'mail.channel'
mail_message_id
Many2one → mail.message
ondelete='cascade'
required=True
string='Related Mail Message'
args: 'mail.message'
script_step_id
Many2one → chatbot.script.step
ondelete='cascade'
required=True
string='Chatbot Step'
args: 'chatbot.script.step'
user_raw_answer
Html
string="User's raw answer"
user_script_answer_id
Many2one → chatbot.script.answer
ondelete='set null'
string="User's answer"
args: 'chatbot.script.answer'
No public methods.
active
Boolean
default=True
first_step_warning
Selection
compute='_compute_first_step_warning'
args: [('first_step_operator', 'First Step Operator'), ('first_step_invalid', 'First Step Invalid')]
image_1920
Image
readonly=False
related='operator_partner_id.image_1920'
livechat_channel_count
Integer
compute='_compute_livechat_channel_count'
string='Livechat Channel Count'
operator_partner_id
Many2one → res.partner
copy=False
ondelete='restrict'
required=True
string='Bot Operator'
args: 'res.partner'
script_step_ids
One2many → chatbot.script.step
copy=True
string='Script Steps'
args: 'chatbot.script.step', 'chatbot_script_id'
title
Char
default='Chatbot'
required=True
translate=True
args: 'Title'
action_view_livechat_channels(self)
copy(self, default=None)
create(self, vals_list)
write(self, vals)
chatbot_script_id
Many2one
related='script_step_id.chatbot_script_id'
name
Char
required=True
string='Answer'
translate=True
redirect_link
Char
help='The visitor will be redirected to this link upon clicking the option (note that the script will end if the link is external to the livechat website).'
args: 'Redirect Link'
script_step_id
Many2one → chatbot.script.step
ondelete='cascade'
required=True
string='Script Step'
args: 'chatbot.script.step'
sequence
Integer
default=1
string='Sequence'
name_get(self)
answer_ids
One2many → chatbot.script.answer
copy=True
string='Answers'
args: 'chatbot.script.answer', 'script_step_id'
chatbot_script_id
Many2one → chatbot.script
ondelete='cascade'
required=True
string='Chatbot'
args: 'chatbot.script'
is_forward_operator_child
Boolean
compute='_compute_is_forward_operator_child'
message
Text
string='Message'
translate=True
sequence
Integer
string='Sequence'
step_type
Selection
default='text'
required=True
args: [('text', 'Text'), ('question_selection', 'Question'), ('question_email', 'Email'), ('question_phone', 'Phone'), ('forward_operator', 'Forward to Operator'), ('free_input_single', 'Free Input'), ('free_input_multi', 'Free Input (Multi-Line)')]
triggering_answer_ids
Many2many → chatbot.script.answer
compute='_compute_triggering_answer_ids'
copy=False
domain="[('script_step_id.sequence', '<', sequence)]"
help='Show this step only if all of these answers have been selected.'
readonly=False
store=True
string='Only If'
args: 'chatbot.script.answer'
create(self, vals_list)
kpi_livechat_conversations
Boolean
kpi_livechat_conversations_value
Integer
compute='_compute_kpi_livechat_conversations_value'
kpi_livechat_rating
Boolean
kpi_livechat_rating_value
Float
compute='_compute_kpi_livechat_rating_value'
digits=(16, 2)
kpi_livechat_response
Boolean
kpi_livechat_response_value
Float
compute='_compute_kpi_livechat_response_value'
digits=(16, 2)
No public methods.
are_you_inside
Boolean
compute='_are_you_inside'
readonly=True
store=False
string='Are you inside the matrix?'
button_background_color
Char
default='#875A7B'
help='Default background color of the Livechat button'
button_text
Char
default=_default_button_text
help='Default text displayed on the Livechat Support Button'
args: 'Text of the Button'
button_text_color
Char
default='#FFFFFF'
help='Default text color of the Livechat button'
channel_ids
One2many → mail.channel
chatbot_script_count
Integer
compute='_compute_chatbot_script_count'
string='Number of Chatbot'
default_message
Char
default=_default_default_message
help="This is an automated 'welcome' message that your visitor will see when they initiate a new conversation."
args: 'Welcome Message'
header_background_color
Char
default='#875A7B'
help='Default background color of the channel header once open'
image_128
Image
default=_default_image
max_height=128
max_width=128
args: 'Image'
input_placeholder
Char
help='Text that prompts the user to initiate the chat.'
args: 'Chat Input Placeholder'
name
Char
required=True
args: 'Channel Name'
nbr_channel
Integer
compute='_compute_nbr_channel'
readonly=True
store=False
args: 'Number of conversation'
rule_ids
One2many → im_livechat.channel.rule
script_external
Html
compute='_compute_script_external'
readonly=True
sanitize=False
store=False
args: 'Script (external)'
title_color
Char
default='#FFFFFF'
help='Default title color of the channel once open'
user_ids
Many2many → res.users
default=_default_user_ids
string='Operators'
args: 'res.users', 'im_livechat_channel_im_user', 'channel_id', 'user_id'
web_page
Char
compute='_compute_web_page_link'
help='URL to a static page where you client can discuss with the operator of the channel.'
readonly=True
store=False
args: 'Web Page'
action_join(self)
action_quit(self)
action_view_chatbot_scripts(self)
action_view_rating(self)
get_livechat_info(self, username=None)
action
Selection
default='display_button'
help="* 'Show' displays the chat button on the pages.\n* 'Show with notification' is 'Show' in addition to a floating text just next to the button.\n* 'Open automatically' displays the button and automatically opens the conversation pane.\n* 'Hide' hides the chat button on the pages.\n"
required=True
string='Live Chat Button'
args: [('display_button', 'Show'), ('display_button_and_text', 'Show with notification'), ('auto_popup', 'Open automatically'), ('hide_button', 'Hide')]
auto_popup_timer
Integer
default=0
help="Delay (in seconds) to automatically open the conversation window. Note: the selected action must be 'Open automatically' otherwise this parameter will not be taken into account."
args: 'Open automatically timer'
channel_id
Many2one → im_livechat.channel
help='The channel of the rule'
args: 'im_livechat.channel', 'Channel'
chatbot_only_if_no_operator
Boolean
help='Enable the bot only if there is no operator available'
string='Enabled only if no operator'
chatbot_script_id
Many2one → chatbot.script
string='Chatbot'
args: 'chatbot.script'
country_ids
Many2many → res.country
help="The rule will only be applied for these countries. Example: if you select 'Belgium' and 'United States' and that you set the action to 'Hide', the chat button will be hidden on the specified URL from the visitors located in these 2 countries. This feature requires GeoIP installed on your server."
args: 'res.country', 'im_livechat_channel_country_rel', 'channel_id', 'country_id', 'Country'
regex_url
Char
help='Regular expression specifying the web pages this rule will be applied on.'
args: 'URL Regex'
sequence
Integer
default=10
help='Given the order to find a matching rule. If 2 rules are matching for the given url/country, the one with the lowest sequence will be chosen.'
args: 'Matching order'
match_rule(self, channel_id, url, country_id=False)
channel_id
Many2one → mail.channel
readonly=True
args: 'mail.channel', 'Conversation'
channel_name
Char
readonly=True
args: 'Channel Name'
country_id
Many2one → res.country
readonly=True
args: 'res.country', 'Country of the visitor'
day_number
Char
help='1 is Monday, 7 is Sunday'
readonly=True
args: 'Day Number'
days_of_activity
Integer
group_operator='max'
help='Number of days since the first session of the operator'
readonly=True
args: 'Days of activity'
duration
Float
digits=(16, 2)
group_operator='avg'
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
is_anonymous
Integer
readonly=True
args: 'Is visitor anonymous'
is_happy
Integer
readonly=True
args: 'Visitor is Happy'
is_unrated
Integer
readonly=True
args: 'Session not rated'
is_without_answer
Integer
group_operator='sum'
help='A session is without answer if the operator did not answer. \n If the visitor is also the operator, the session will always be answered.'
readonly=True
args: 'Session(s) without answer'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_message
Integer
group_operator='avg'
help='Number of message in the conversation'
readonly=True
args: 'Average message'
nbr_speaker
Integer
group_operator='avg'
help='Number of different speakers'
readonly=True
args: '# of speakers'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Operator'
rating
Integer
group_operator='avg'
readonly=True
args: 'Rating'
rating_text
Char
readonly=True
args: 'Satisfaction Rate'
start_date
Datetime
readonly=True
args: 'Start Date of session'
start_date_hour
Char
readonly=True
args: 'Hour of start Date of session'
start_hour
Char
readonly=True
args: 'Start Hour of session'
technical_name
Char
readonly=True
args: 'Code'
time_to_answer
Float
digits=(16, 2)
group_operator='avg'
help='Average time in seconds to give the first answer to the visitor'
readonly=True
args: 'Time to answer (sec)'
uuid
Char
readonly=True
args: 'UUID'
init(self)
channel_id
Many2one → mail.channel
readonly=True
args: 'mail.channel', 'Conversation'
duration
Float
digits=(16, 2)
group_operator='avg'
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_channel
Integer
group_operator='sum'
readonly=True
args: '# of Sessions'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Operator'
start_date
Datetime
readonly=True
args: 'Start Date of session'
time_to_answer
Float
digits=(16, 2)
group_operator='avg'
help='Average time to give the first answer to the visitor'
readonly=True
args: 'Time to answer'
init(self)
anonymous_name
Char
channel_type
Selection
ondelete={'livechat': 'cascade'}
selection_add=[('livechat', 'Livechat Conversation')]
chatbot_current_step_id
Many2one → chatbot.script.step
string='Chatbot Current Step'
args: 'chatbot.script.step'
chatbot_message_ids
One2many → chatbot.message
string='Chatbot Messages'
args: 'chatbot.message', 'mail_channel_id'
country_id
Many2one → res.country
help='Country of the visitor of the channel'
string='Country'
args: 'res.country'
livechat_active
Boolean
help='Livechat session is active until visitor leaves the conversation.'
args: 'Is livechat ongoing?'
livechat_channel_id
Many2one → im_livechat.channel
index='btree_not_null'
args: 'im_livechat.channel', 'Channel'
livechat_operator_id
Many2one → res.partner
string='Operator'
args: 'res.partner'
channel_info(self)
execute_command_history(self, **kwargs)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)action_open_rated_object(self)
user_livechat_username
Char
compute='_compute_user_livechat_username'
No public methods.
livechat_username
Char
help='This username will be used as your name in the livechat channels.'
args: 'Livechat Username'
SELF_READABLE_FIELDS(self)
SELF_WRITEABLE_FIELDS(self)
is_discuss_sidebar_category_livechat_open
Boolean
default=True
args: 'Is category livechat open'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/15.0/im_livechat |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Website/Live Chat |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Thibault Delavallée, Xavier ALT, Xavier Morel, Mohammed Shekha, Nicolas Lempereur, Aaron Bohy, Lucas Perais (lpe), Barad Mahendra, qsm-odoo, Nicolas Seinlet, Romain Derie, Jorge Pinna Puissant, Alexandre Kühn, Xavier-Do, Romeo Fragomeli, Xavier Dubuc, Sébastien Theys, Julien Mougenot, Samuel Degueldre, std-odoo, Thanh Dodeur, Mathieu Duckerts-Antoine, Hiral Bhavsar, yograj tandel, root, Florian Damhaut, Didier (did), Michael Mattiello (mcm), dht-odoo, Julien Giannone, Ipsita Borisagar, Louis Wicket (wil), tsm-odoo, miad-odoo, Simon Genin (ges), Qiuyu (QHO), Leonardo Pavan Rocha, Lưu Quang Huy |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/app/live-chat |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:25:28 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - rating - digest - portal - web_editor - http_routing - auth_signup - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Live Chat Support
==========================
Allow to drop instant messaging widgets on any web page that will communicate
with the current server and dispatch visitors request amongst several live
chat operators.
Help your customers with this chat, and analyse their feedback.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
external_loader |
Livechat : external_script field of livechat channel | ir.ui.view | qweb | New |
im_livechat.digest_digest_view_form_inherit |
im.livechat.digest.digest.view.form.inherit | digest.digest | xpath | Inherits digest.digest_digest_view_form |
im_livechat_canned_response_view_tree |
im_livechat.canned_response.tree | mail.shortcode | tree | New |
im_livechat_channel_rule_view_form |
im_livechat.channel.rule.form | im_livechat.channel.rule | form | New |
im_livechat_channel_rule_view_kanban |
im_livechat.channel.rule.kanban | im_livechat.channel.rule | kanban | New |
im_livechat_channel_rule_view_tree |
im.livechat.channel.rule.tree | im_livechat.channel.rule | tree | New |
im_livechat_channel_view_form |
im_livechat.channel.form | im_livechat.channel | form | New |
im_livechat_channel_view_kanban |
im_livechat.channel.kanban | im_livechat.channel | kanban | New |
im_livechat_channel_view_search |
im.livechat.channel.view.search | im_livechat.channel | search | New |
im_livechat_report_channel_view_graph |
im_livechat.report.channel.graph | im_livechat.report.channel | graph | New |
im_livechat_report_channel_view_pivot |
im_livechat.report.channel.pivot | im_livechat.report.channel | pivot | New |
im_livechat_report_channel_view_search |
im_livechat.report.channel.search | im_livechat.report.channel | search | New |
im_livechat_report_operator_view_graph |
im_livechat.report.operator.graph | im_livechat.report.operator | graph | New |
im_livechat_report_operator_view_pivot |
im_livechat.report.operator.pivot | im_livechat.report.operator | pivot | New |
im_livechat_report_operator_view_search |
im_livechat.report.operator.search | im_livechat.report.operator | search | New |
livechat_email_template |
livechat_email_template | ir.ui.view | qweb | New |
loader |
Livechat : Javascript appending the livechat button | ir.ui.view | qweb | New |
mail_channel_view_form |
mail.channel.form | mail.channel | form | New |
mail_channel_view_search |
mail.channel.search | mail.channel | search | New |
mail_channel_view_tree |
mail.channel.tree | mail.channel | tree | New |
rating_rating_view_form_livechat |
rating.rating.form.livechat | rating.rating | xpath | Inherits rating.rating_rating_view_form |
rating_rating_view_search_livechat |
rating.rating.search.livechat | rating.rating | xpath | Inherits rating.rating_rating_view_search |
res_users_form_view |
res.users.form.im_livechat | res.users | xpath | Inherits base.view_users_form |
res_users_form_view_simple_modif |
res.users.preferences.form.im_livechat | res.users | xpath | Inherits base.view_users_form_simple_modif |
support_page |
Livechat : Support Page | ir.ui.view | qweb | New |
kpi_livechat_conversations
Boolean
kpi_livechat_conversations_value
Integer
compute='_compute_kpi_livechat_conversations_value'
kpi_livechat_rating
Boolean
kpi_livechat_rating_value
Float
compute='_compute_kpi_livechat_rating_value'
digits=(16, 2)
kpi_livechat_response
Boolean
help='Time to answer the user in second.'
args: 'Time to answer(sec)'
kpi_livechat_response_value
Float
compute='_compute_kpi_livechat_response_value'
digits=(16, 2)
No public methods.
are_you_inside
Boolean
compute='_are_you_inside'
readonly=True
store=False
string='Are you inside the matrix?'
button_background_color
Char
default='#878787'
help='Default background color of the Livechat button'
button_text
Char
default=_default_button_text
help='Default text displayed on the Livechat Support Button'
translate=True
args: 'Text of the Button'
button_text_color
Char
default='#FFFFFF'
help='Default text color of the Livechat button'
channel_ids
One2many → mail.channel
default_message
Char
default=_default_default_message
help="This is an automated 'welcome' message that your visitor will see when they initiate a new conversation."
translate=True
args: 'Welcome Message'
header_background_color
Char
default='#875A7B'
help='Default background color of the channel header once open'
image_128
Image
default=_default_image
max_height=128
max_width=128
args: 'Image'
input_placeholder
Char
help='Text that prompts the user to initiate the chat.'
translate=True
args: 'Chat Input Placeholder'
name
Char
help='The name of the channel'
required=True
args: 'Name'
nbr_channel
Integer
compute='_compute_nbr_channel'
readonly=True
store=False
args: 'Number of conversation'
rule_ids
One2many → im_livechat.channel.rule
script_external
Html
compute='_compute_script_external'
readonly=True
sanitize=False
store=False
args: 'Script (external)'
title_color
Char
default='#FFFFFF'
help='Default title color of the channel once open'
user_ids
Many2many → res.users
default=_default_user_ids
string='Operators'
args: 'res.users', 'im_livechat_channel_im_user', 'channel_id', 'user_id'
web_page
Char
compute='_compute_web_page_link'
help='URL to a static page where you client can discuss with the operator of the channel.'
readonly=True
store=False
args: 'Web Page'
action_join(self)
action_quit(self)
action_view_rating(self)
get_livechat_info(self, username=None)
action
Selection
default='display_button'
help="* 'Display the button' displays the chat button on the pages.\n* 'Auto popup' displays the button and automatically open the conversation pane.\n* 'Hide the button' hides the chat button on the pages."
required=True
string='Action'
args: [('display_button', 'Display the button'), ('auto_popup', 'Auto popup'), ('hide_button', 'Hide the button')]
auto_popup_timer
Integer
default=0
help="Delay (in seconds) to automatically open the conversation window. Note: the selected action must be 'Auto popup' otherwise this parameter will not be taken into account."
args: 'Auto popup timer'
channel_id
Many2one → im_livechat.channel
help='The channel of the rule'
args: 'im_livechat.channel', 'Channel'
country_ids
Many2many → res.country
help="The rule will only be applied for these countries. Example: if you select 'Belgium' and 'United States' and that you set the action to 'Hide Button', the chat button will be hidden on the specified URL from the visitors located in these 2 countries. This feature requires GeoIP installed on your server."
args: 'res.country', 'im_livechat_channel_country_rel', 'channel_id', 'country_id', 'Country'
regex_url
Char
help='Regular expression specifying the web pages this rule will be applied on.'
args: 'URL Regex'
sequence
Integer
default=10
help='Given the order to find a matching rule. If 2 rules are matching for the given url/country, the one with the lowest sequence will be chosen.'
args: 'Matching order'
match_rule(self, channel_id, url, country_id=False)
channel_id
Many2one → mail.channel
readonly=True
args: 'mail.channel', 'Conversation'
channel_name
Char
readonly=True
args: 'Channel Name'
country_id
Many2one → res.country
readonly=True
args: 'res.country', 'Country of the visitor'
day_number
Char
help='Day number of the session (1 is Monday, 7 is Sunday)'
readonly=True
args: 'Day Number'
days_of_activity
Integer
group_operator='max'
help='Number of days since the first session of the operator'
readonly=True
args: 'Days of activity'
duration
Float
digits=(16, 2)
group_operator='avg'
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
is_anonymous
Integer
readonly=True
args: 'Is visitor anonymous'
is_happy
Integer
readonly=True
args: 'Visitor is Happy'
is_unrated
Integer
readonly=True
args: 'Session not rated'
is_without_answer
Integer
group_operator='sum'
help='A session is without answer if the operator did not answer. \n If the visitor is also the operator, the session will always be answered.'
readonly=True
args: 'Session(s) without answer'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_message
Integer
group_operator='avg'
help='Number of message in the conversation'
readonly=True
args: 'Average message'
nbr_speaker
Integer
group_operator='avg'
help='Number of different speakers'
readonly=True
args: '# of speakers'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Operator'
rating
Integer
group_operator='avg'
readonly=True
args: 'Rating'
rating_text
Char
readonly=True
args: 'Satisfaction Rate'
start_date
Datetime
help='Start date of the conversation'
readonly=True
args: 'Start Date of session'
start_date_hour
Char
readonly=True
args: 'Hour of start Date of session'
start_hour
Char
help='Start hour of the conversation'
readonly=True
args: 'Start Hour of session'
technical_name
Char
readonly=True
args: 'Code'
time_to_answer
Float
digits=(16, 2)
group_operator='avg'
help='Average time in seconds to give the first answer to the visitor'
readonly=True
args: 'Time to answer (sec)'
uuid
Char
readonly=True
args: 'UUID'
init(self)
channel_id
Many2one → mail.channel
readonly=True
args: 'mail.channel', 'Conversation'
duration
Float
digits=(16, 2)
group_operator='avg'
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_channel
Integer
group_operator='sum'
help='Number of conversation'
readonly=True
args: '# of Sessions'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Operator'
start_date
Datetime
help='Start date of the conversation'
readonly=True
args: 'Start Date of session'
time_to_answer
Float
digits=(16, 2)
group_operator='avg'
help='Average time to give the first answer to the visitor'
readonly=True
args: 'Time to answer'
init(self)
anonymous_name
Char
channel_type
Selection
selection_add=[('livechat', 'Livechat Conversation')]
country_id
Many2one → res.country
help='Country of the visitor of the channel'
string='Country'
args: 'res.country'
livechat_active
Boolean
help='Livechat session is active until visitor leave the conversation.'
args: 'Is livechat ongoing?'
livechat_channel_id
Many2one → im_livechat.channel
livechat_operator_id
Many2one → res.partner
help='Operator for this specific channel'
string='Operator'
args: 'res.partner'
channel_info(self)
execute_command_history(self, **kwargs)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)action_open_rated_object(self)
user_livechat_username
Char
compute='_compute_user_livechat_username'
No public methods.
livechat_username
Char
help='This username will be used as your name in the livechat channels.'
args: 'Livechat Username'
SELF_READABLE_FIELDS(self)
SELF_WRITEABLE_FIELDS(self)
is_discuss_sidebar_category_livechat_open
Boolean
default=True
args: 'Is category livechat open'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/14.0/im_livechat |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Website/Live Chat |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Olivier Dony, Thibault Delavallée, Christophe Simonis, Goffin Simon, Nicolas Martinelli, Nicolas Lempereur, Thibault Francois, Aaron Bohy, Barad Mahendra, Yannick Tivisse, qsm-odoo, Alexandre Kühn, Adrian Torres, Xavier-Do, Xavier Dubuc, Sébastien Theys, Julien Mougenot, fw-bot, Debauche Stéphane, David Beguin, Thanh Dodeur, Mathieu Duckerts-Antoine, Hiral Bhavsar, root, Romain Estievenart, Kevin Baptiste, mcm-odoo, Didier (did), Julien Giannone, Ipsita Borisagar, bve-odoo, tsm-odoo, miad-odoo, Fernanda Hernández |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/live-chat |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:14:29 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - rating - digest - portal - web_editor - http_routing - auth_signup - resource |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Live Chat Support
==========================
Allow to drop instant messaging widgets on any web page that will communicate
with the current server and dispatch visitors request amongst several live
chat operators.
Help your customers with this chat, and analyse their feedback.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
im_livechat assets backend | ir.ui.view | qweb | Inherits web.assets_backend |
external_lib |
Livechat : External Librairies of the Livechat, required to make it work | ir.ui.view | qweb | New |
external_loader |
Livechat : external_script field of livechat channel | ir.ui.view | qweb | New |
im_livechat.digest_digest_view_form_inherit |
im.livechat.digest.digest.view.form.inherit | digest.digest | xpath | Inherits digest.digest_digest_view_form |
im_livechat_canned_response_view_tree |
im_livechat.canned_response.tree | mail.shortcode | tree | New |
im_livechat_channel_rule_view_form |
im_livechat.channel.rule.form | im_livechat.channel.rule | form | New |
im_livechat_channel_rule_view_kanban |
im_livechat.channel.rule.kanban | im_livechat.channel.rule | kanban | New |
im_livechat_channel_rule_view_tree |
im.livechat.channel.rule.tree | im_livechat.channel.rule | tree | New |
im_livechat_channel_view_form |
im_livechat.channel.form | im_livechat.channel | form | New |
im_livechat_channel_view_kanban |
im_livechat.channel.kanban | im_livechat.channel | kanban | New |
im_livechat_channel_view_search |
im.livechat.channel.view.search | im_livechat.channel | search | New |
im_livechat_report_channel_view_graph |
im_livechat.report.channel.graph | im_livechat.report.channel | graph | New |
im_livechat_report_channel_view_pivot |
im_livechat.report.channel.pivot | im_livechat.report.channel | pivot | New |
im_livechat_report_channel_view_search |
im_livechat.report.channel.search | im_livechat.report.channel | search | New |
im_livechat_report_operator_view_graph |
im_livechat.report.operator.graph | im_livechat.report.operator | graph | New |
im_livechat_report_operator_view_pivot |
im_livechat.report.operator.pivot | im_livechat.report.operator | pivot | New |
im_livechat_report_operator_view_search |
im_livechat.report.operator.search | im_livechat.report.operator | search | New |
livechat_email_template |
livechat_email_template | ir.ui.view | qweb | New |
loader |
Livechat : Javascript appending the livechat button | ir.ui.view | qweb | New |
mail_channel_view_form |
mail.channel.form | mail.channel | form | New |
mail_channel_view_search |
mail.channel.search | mail.channel | search | New |
mail_channel_view_tree |
mail.channel.tree | mail.channel | tree | New |
qunit_suite |
livechat_tests | ir.ui.view | qweb | Inherits web.qunit_suite_tests |
rating_rating_view_search_livechat |
rating.rating.search.livechat | rating.rating | xpath | Inherits rating.rating_rating_view_search |
res_users_form_view |
res.users.form.im_livechat | res.users | xpath | Inherits base.view_users_form |
res_users_form_view_simple_modif |
res.users.preferences.form.im_livechat | res.users | xpath | Inherits base.view_users_form_simple_modif |
support_page |
Livechat : Support Page | ir.ui.view | qweb | New |
kpi_livechat_conversations
Boolean
kpi_livechat_conversations_value
Integer
compute='_compute_kpi_livechat_conversations_value'
kpi_livechat_rating
Boolean
kpi_livechat_rating_value
Float
compute='_compute_kpi_livechat_rating_value'
digits=(16, 2)
kpi_livechat_response
Boolean
help='Time to answer the user in second.'
args: 'Time to answer(sec)'
kpi_livechat_response_value
Float
compute='_compute_kpi_livechat_response_value'
No public methods.
are_you_inside
Boolean
compute='_are_you_inside'
readonly=True
store=False
string='Are you inside the matrix?'
button_background_color
Char
default='#878787'
help='Default background color of the Livechat button'
button_text
Char
default='Have a Question? Chat with us.'
help='Default text displayed on the Livechat Support Button'
translate=True
args: 'Text of the Button'
button_text_color
Char
default='#FFFFFF'
help='Default text color of the Livechat button'
channel_ids
One2many → mail.channel
default_message
Char
default='How may I help you?'
help="This is an automated 'welcome' message that your visitor will see when they initiate a new conversation."
translate=True
args: 'Welcome Message'
header_background_color
Char
default='#875A7B'
help='Default background color of the channel header once open'
image_128
Image
default=_default_image
max_height=128
max_width=128
args: 'Image'
input_placeholder
Char
help='Text that prompts the user to initiate the chat.'
translate=True
args: 'Chat Input Placeholder'
name
Char
help='The name of the channel'
required=True
args: 'Name'
nbr_channel
Integer
compute='_compute_nbr_channel'
readonly=True
store=False
args: 'Number of conversation'
rule_ids
One2many → im_livechat.channel.rule
script_external
Text
compute='_compute_script_external'
readonly=True
store=False
args: 'Script (external)'
title_color
Char
default='#FFFFFF'
help='Default title color of the channel once open'
user_ids
Many2many → res.users
default=_default_user_ids
string='Operators'
args: 'res.users', 'im_livechat_channel_im_user', 'channel_id', 'user_id'
web_page
Char
compute='_compute_web_page_link'
help='URL to a static page where you client can discuss with the operator of the channel.'
readonly=True
store=False
args: 'Web Page'
action_join(self)
action_quit(self)
action_view_rating(self)
get_livechat_info(self, username='Visitor')
action
Selection
default='display_button'
help="* 'Display the button' displays the chat button on the pages.\n* 'Auto popup' displays the button and automatically open the conversation pane.\n* 'Hide the button' hides the chat button on the pages."
required=True
string='Action'
args: [('display_button', 'Display the button'), ('auto_popup', 'Auto popup'), ('hide_button', 'Hide the button')]
auto_popup_timer
Integer
default=0
help="Delay (in seconds) to automatically open the conversation window. Note: the selected action must be 'Auto popup' otherwise this parameter will not be taken into account."
args: 'Auto popup timer'
channel_id
Many2one → im_livechat.channel
help='The channel of the rule'
args: 'im_livechat.channel', 'Channel'
country_ids
Many2many → res.country
help="The rule will only be applied for these countries. Example: if you select 'Belgium' and 'United States' and that you set the action to 'Hide Button', the chat button will be hidden on the specified URL from the visitors located in these 2 countries. This feature requires GeoIP installed on your server."
args: 'res.country', 'im_livechat_channel_country_rel', 'channel_id', 'country_id', 'Country'
regex_url
Char
help='Regular expression specifying the web pages this rule will be applied on.'
args: 'URL Regex'
sequence
Integer
default=10
help='Given the order to find a matching rule. If 2 rules are matching for the given url/country, the one with the lowest sequence will be chosen.'
args: 'Matching order'
match_rule(self, channel_id, url, country_id=False)
channel_id
Many2one → mail.channel
readonly=True
args: 'mail.channel', 'Conversation'
channel_name
Char
readonly=True
args: 'Channel Name'
country_id
Many2one → res.country
readonly=True
args: 'res.country', 'Country of the visitor'
day_number
Char
help='Day number of the session (1 is Monday, 7 is Sunday)'
readonly=True
args: 'Day Number'
days_of_activity
Integer
group_operator='max'
help='Number of days since the first session of the operator'
readonly=True
args: 'Days of activity'
duration
Float
digits=(16, 2)
group_operator='avg'
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
is_anonymous
Integer
readonly=True
args: 'Is visitor anonymous'
is_happy
Integer
readonly=True
args: 'Visitor is Happy'
is_unrated
Integer
readonly=True
args: 'Session not rated'
is_without_answer
Integer
group_operator='sum'
help='A session is without answer if the operator did not answer. \n If the visitor is also the operator, the session will always be answered.'
readonly=True
args: 'Session(s) without answer'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_message
Integer
group_operator='avg'
help='Number of message in the conversation'
readonly=True
args: 'Average message'
nbr_speaker
Integer
group_operator='avg'
help='Number of different speakers'
readonly=True
args: '# of speakers'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Operator'
rating
Integer
group_operator='avg'
readonly=True
args: 'Rating'
rating_text
Char
readonly=True
args: 'Satisfaction Rate'
start_date
Datetime
help='Start date of the conversation'
readonly=True
args: 'Start Date of session'
start_date_hour
Char
readonly=True
args: 'Hour of start Date of session'
start_hour
Char
help='Start hour of the conversation'
readonly=True
args: 'Start Hour of session'
technical_name
Char
readonly=True
args: 'Code'
time_to_answer
Float
digits=(16, 2)
group_operator='avg'
help='Average time in seconds to give the first answer to the visitor'
readonly=True
args: 'Time to answer (sec)'
uuid
Char
readonly=True
args: 'UUID'
init(self)
channel_id
Many2one → mail.channel
readonly=True
args: 'mail.channel', 'Conversation'
duration
Float
digits=(16, 2)
group_operator='avg'
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_channel
Integer
group_operator='sum'
help='Number of conversation'
readonly=True
args: '# of Sessions'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Operator'
start_date
Datetime
help='Start date of the conversation'
readonly=True
args: 'Start Date of session'
time_to_answer
Float
digits=(16, 2)
group_operator='avg'
help='Average time to give the first answer to the visitor'
readonly=True
args: 'Time to answer'
init(self)
anonymous_name
Char
channel_type
Selection
selection_add=[('livechat', 'Livechat Conversation')]
country_id
Many2one → res.country
help='Country of the visitor of the channel'
string='Country'
args: 'res.country'
livechat_active
Boolean
help='Livechat session is active until visitor leave the conversation.'
args: 'Is livechat ongoing?'
livechat_channel_id
Many2one → im_livechat.channel
livechat_operator_id
Many2one → res.partner
help='Operator for this specific channel'
string='Operator'
args: 'res.partner'
channel_fetch_slot(self)
channel_info(self, extra_info=False)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (1)action_open_rated_object(self)
user_livechat_username
Char
compute='_compute_user_livechat_username'
No public methods.
livechat_username
Char
help='This username will be used as your name in the livechat channels.'
args: 'Livechat Username'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/13.0/im_livechat |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Website/Live Chat |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Xavier Morel, Goffin Simon, Nicolas Martinelli, Nicolas Lempereur, Aaron Bohy, Jeremy Kersten, GitHub, Barad Mahendra, Yannick Tivisse, qsm-odoo, Martin Geubelle, Odoo Online, jem-odoo, Jorge Pinna Puissant, Alexandre Kühn, Adrian Torres, Xavier-Do, mgh-odoo, Sébastien Theys, Nasreddin (bon), Debauche Stéphane, David Beguin, Lucas Lefèvre, Ivan Yelizariev, Naglis Jonaitis, ThanhDodeurOdoo, Mathieu Duckerts-Antoine, root, Kevin Baptiste, mcm-odoo, Didier (did) |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/live-chat |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:06:42 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - rating |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Live Chat Support
==========================
Allow to drop instant messaging widgets on any web page that will communicate
with the current server and dispatch visitors request amongst several live
chat operators.
Help your customers with this chat, and analyse their feedback.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
im_livechat assets backend | ir.ui.view | qweb | Inherits web.assets_backend |
external_lib |
Livechat : External Librairies of the Livechat, required to make it work | ir.ui.view | qweb | New |
external_loader |
Livechat : external_script field of livechat channel | ir.ui.view | qweb | New |
im_livechat_canned_response_view_tree |
im_livechat.canned_response.tree | mail.shortcode | tree | New |
im_livechat_channel_rule_view_form |
im_livechat.channel.rule.form | im_livechat.channel.rule | form | New |
im_livechat_channel_rule_view_kanban |
im_livechat.channel.rule.kanban | im_livechat.channel.rule | kanban | New |
im_livechat_channel_rule_view_tree |
im.livechat.channel.rule.tree | im_livechat.channel.rule | tree | New |
im_livechat_channel_view_form |
im_livechat.channel.form | im_livechat.channel | form | New |
im_livechat_channel_view_kanban |
im_livechat.channel.kanban | im_livechat.channel | kanban | New |
im_livechat_channel_view_search |
im.livechat.channel.view.search | im_livechat.channel | search | New |
im_livechat_report_channel_view_graph |
im_livechat.report.channel.graph | im_livechat.report.channel | graph | New |
im_livechat_report_channel_view_pivot |
im_livechat.report.channel.pivot | im_livechat.report.channel | pivot | New |
im_livechat_report_channel_view_search |
im_livechat.report.channel.search | im_livechat.report.channel | search | New |
im_livechat_report_operator_view_graph |
im_livechat.report.operator.graph | im_livechat.report.operator | graph | New |
im_livechat_report_operator_view_pivot |
im_livechat.report.operator.pivot | im_livechat.report.operator | pivot | New |
im_livechat_report_operator_view_search |
im_livechat.report.operator.search | im_livechat.report.operator | search | New |
livechat_email_template |
livechat_email_template | ir.ui.view | qweb | New |
loader |
Livechat : Javascript appending the livechat button | ir.ui.view | qweb | New |
mail_channel_view_form |
mail.channel.form | mail.channel | form | New |
mail_channel_view_search |
mail.channel.search | mail.channel | search | New |
mail_channel_view_tree |
mail.channel.tree | mail.channel | tree | New |
qunit_suite |
livechat_tests | ir.ui.view | qweb | Inherits web.qunit_suite |
rating_rating_view_search_livechat |
rating.rating.search.livechat | rating.rating | xpath | Inherits rating.rating_rating_view_search |
res_users_form_view |
res.users.form.im_livechat | res.users | xpath | Inherits base.view_users_form |
res_users_form_view_simple_modif |
res.users.preferences.form.im_livechat | res.users | xpath | Inherits base.view_users_form_simple_modif |
support_page |
Livechat : Support Page | ir.ui.view | qweb | New |
are_you_inside
Boolean
compute='_are_you_inside'
readonly=True
store=False
string='Are you inside the matrix?'
button_text
Char
default='Have a Question? Chat with us.'
help='Default text displayed on the Livechat Support Button'
args: 'Text of the Button'
channel_ids
One2many → mail.channel
default_message
Char
default='How may I help you?'
help="This is an automated 'welcome' message that your visitor will see when they initiate a new conversation."
args: 'Welcome Message'
image_128
Image
default=_default_image
max_height=128
max_width=128
args: 'Image'
input_placeholder
Char
help='Text that prompts the user to initiate the chat.'
args: 'Chat Input Placeholder'
name
Char
help='The name of the channel'
required=True
args: 'Name'
nbr_channel
Integer
compute='_compute_nbr_channel'
readonly=True
store=False
args: 'Number of conversation'
rule_ids
One2many → im_livechat.channel.rule
script_external
Text
compute='_compute_script_external'
readonly=True
store=False
args: 'Script (external)'
user_ids
Many2many → res.users
default=_default_user_ids
string='Operators'
args: 'res.users', 'im_livechat_channel_im_user', 'channel_id', 'user_id'
web_page
Char
compute='_compute_web_page_link'
help='URL to a static page where you client can discuss with the operator of the channel.'
readonly=True
store=False
args: 'Web Page'
action_join(self)
action_quit(self)
action_view_rating(self)
get_livechat_info(self, username='Visitor')
action
Selection
default='display_button'
help="* 'Display the button' displays the chat button on the pages.\n* 'Auto popup' displays the button and automatically open the conversation pane.\n* 'Hide the button' hides the chat button on the pages."
required=True
string='Action'
args: [('display_button', 'Display the button'), ('auto_popup', 'Auto popup'), ('hide_button', 'Hide the button')]
auto_popup_timer
Integer
default=0
help="Delay (in seconds) to automatically open the conversation window. Note: the selected action must be 'Auto popup' otherwise this parameter will not be taken into account."
args: 'Auto popup timer'
channel_id
Many2one → im_livechat.channel
help='The channel of the rule'
args: 'im_livechat.channel', 'Channel'
country_ids
Many2many → res.country
help="The rule will only be applied for these countries. Example: if you select 'Belgium' and 'United States' and that you set the action to 'Hide Button', the chat button will be hidden on the specified URL from the visitors located in these 2 countries. This feature requires GeoIP installed on your server."
args: 'res.country', 'im_livechat_channel_country_rel', 'channel_id', 'country_id', 'Country'
regex_url
Char
help='Regular expression specifying the web pages this rule will be applied on.'
args: 'URL Regex'
sequence
Integer
default=10
help='Given the order to find a matching rule. If 2 rules are matching for the given url/country, the one with the lowest sequence will be chosen.'
args: 'Matching order'
match_rule(self, channel_id, url, country_id=False)
channel_id
Many2one → mail.channel
readonly=True
args: 'mail.channel', 'Conversation'
channel_name
Char
readonly=True
args: 'Channel Name'
country_id
Many2one → res.country
readonly=True
args: 'res.country', 'Country of the visitor'
day_number
Char
help='Day number of the session (1 is Monday, 7 is Sunday)'
readonly=True
args: 'Day Number'
days_of_activity
Integer
group_operator='max'
help='Number of days since the first session of the operator'
readonly=True
args: 'Days of activity'
duration
Float
digits=(16, 2)
group_operator='avg'
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
is_anonymous
Integer
readonly=True
args: 'Is visitor anonymous'
is_happy
Integer
readonly=True
args: 'Visitor is Happy'
is_unrated
Integer
readonly=True
args: 'Session not rated'
is_without_answer
Integer
group_operator='sum'
help='A session is without answer if the operator did not answer. \n If the visitor is also the operator, the session will always be answered.'
readonly=True
args: 'Session(s) without answer'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_message
Integer
group_operator='avg'
help='Number of message in the conversation'
readonly=True
args: 'Average message'
nbr_speaker
Integer
group_operator='avg'
help='Number of different speakers'
readonly=True
args: '# of speakers'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Operator'
rating
Integer
group_operator='avg'
readonly=True
args: 'Rating'
rating_text
Char
readonly=True
args: 'Satisfaction Rate'
start_date
Datetime
help='Start date of the conversation'
readonly=True
args: 'Start Date of session'
start_date_hour
Char
readonly=True
args: 'Hour of start Date of session'
start_hour
Char
help='Start hour of the conversation'
readonly=True
args: 'Start Hour of session'
technical_name
Char
readonly=True
args: 'Code'
time_to_answer
Float
digits=(16, 2)
group_operator='avg'
help='Average time in seconds to give the first answer to the visitor'
readonly=True
args: 'Time to answer (sec)'
uuid
Char
readonly=True
args: 'UUID'
init(self)
channel_id
Many2one → mail.channel
readonly=True
args: 'mail.channel', 'Conversation'
duration
Float
digits=(16, 2)
group_operator='avg'
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_channel
Integer
group_operator='sum'
help='Number of conversation'
readonly=True
args: '# of Sessions'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Operator'
start_date
Datetime
help='Start date of the conversation'
readonly=True
args: 'Start Date of session'
time_to_answer
Float
digits=(16, 2)
group_operator='avg'
help='Average time to give the first answer to the visitor'
readonly=True
args: 'Time to answer'
init(self)
No new fields.
Public methods (1)power_on(self, *args, **kwargs)
anonymous_name
Char
channel_type
Selection
selection_add=[('livechat', 'Livechat Conversation')]
country_id
Many2one → res.country
help='Country of the visitor of the channel'
string='Country'
args: 'res.country'
livechat_channel_id
Many2one → im_livechat.channel
livechat_operator_id
Many2one → res.partner
help='Operator for this specific channel'
string='Operator'
args: 'res.partner'
channel_fetch_message(self, last_id=False, limit=20)
channel_fetch_slot(self)
channel_info(self, extra_info=False)
remove_empty_livechat_sessions(self)
No new fields.
Public methods (1)unpin_old_livechat_sessions(self)
No new fields.
Public methods (1)action_open_rated_object(self)
No new fields.
Public methods (1)name_get(self)
livechat_username
Char
help='This username will be used as your name in the livechat channels.'
args: 'Livechat Username'
No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/12.0/im_livechat |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Website |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Xavier Morel, Nicolas Lempereur, Géry Debongnie, Aaron Bohy, GitHub, Yannick Tivisse, Alexandre Kühn, qsm-odoo, Adrien Dieudonne, RomainLibert, len-odoo, Alexandre Kühn, XavierDo, Xavier-Do, Sébastien Theys, Nasreddin (bon), Quentin Smetz (qsm), David Beguin |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/live-chat |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:57:01 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - rating |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Live Chat Support
==========================
Allow to drop instant messaging widgets on any web page that will communicate
with the current server and dispatch visitors request amongst several live
chat operators.
Help your customers with this chat, and analyse their feedback.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
im_livechat assets backend | ir.ui.view | qweb | Inherits web.assets_backend |
external_lib |
Livechat : External Librairies of the Livechat, required to make it work | ir.ui.view | qweb | New |
external_loader |
Livechat : external_script field of livechat channel | ir.ui.view | qweb | New |
im_livechat_canned_response_view_tree |
im_livechat.canned_response.tree | mail.shortcode | tree | New |
im_livechat_channel_rule_view_form |
im_livechat.channel.rule.form | im_livechat.channel.rule | form | New |
im_livechat_channel_rule_view_kanban |
im_livechat.channel.rule.kanban | im_livechat.channel.rule | kanban | New |
im_livechat_channel_rule_view_tree |
im.livechat.channel.rule.tree | im_livechat.channel.rule | tree | New |
im_livechat_channel_view_form |
im_livechat.channel.form | im_livechat.channel | form | New |
im_livechat_channel_view_kanban |
im_livechat.channel.kanban | im_livechat.channel | kanban | New |
im_livechat_report_channel_view_graph |
im_livechat.report.channel.graph | im_livechat.report.channel | graph | New |
im_livechat_report_channel_view_pivot |
im_livechat.report.channel.pivot | im_livechat.report.channel | pivot | New |
im_livechat_report_channel_view_search |
im_livechat.report.channel.search | im_livechat.report.channel | search | New |
im_livechat_report_operator_view_graph |
im_livechat.report.operator.graph | im_livechat.report.operator | graph | New |
im_livechat_report_operator_view_pivot |
im_livechat.report.operator.pivot | im_livechat.report.operator | pivot | New |
im_livechat_report_operator_view_search |
im_livechat.report.operator.search | im_livechat.report.operator | search | New |
loader |
Livechat : Javascript appending the livechat button | ir.ui.view | qweb | New |
mail_channel_view_form |
mail.channel.form | mail.channel | form | New |
mail_channel_view_search |
mail.channel.search | mail.channel | search | New |
mail_channel_view_tree |
mail.channel.tree | mail.channel | tree | New |
qunit_suite |
livechat_tests | ir.ui.view | qweb | Inherits web.qunit_suite |
rating_rating_view_search_livechat |
rating.rating.search.livechat | rating.rating | xpath | Inherits rating.rating_rating_view_search |
support_page |
Livechat : Support Page | ir.ui.view | qweb | New |
are_you_inside
Boolean
compute='_are_you_inside'
readonly=True
store=False
string='Are you inside the matrix?'
button_text
Char
default='Have a Question? Chat with us.'
help='Default text displayed on the Livechat Support Button'
args: 'Text of the Button'
channel_ids
One2many → mail.channel
default_message
Char
default='How may I help you?'
help="This is an automated 'welcome' message that your visitor will see when they initiate a new conversation."
args: 'Welcome Message'
image
Binary
attachment=True
default=_default_image
help='This field holds the image used as photo for the group, limited to 1024x1024px.'
args: 'Image'
image_medium
Binary
attachment=True
help='Medium-sized photo of the group. It is automatically resized as a 128x128px image, with aspect ratio preserved. Use this field in form views or some kanban views.'
args: 'Medium'
image_small
Binary
attachment=True
help='Small-sized photo of the group. It is automatically resized as a 64x64px image, with aspect ratio preserved. Use this field anywhere a small image is required.'
args: 'Thumbnail'
input_placeholder
Char
help='Text that prompts the user to initiate the chat.'
args: 'Chat Input Placeholder'
name
Char
help='The name of the channel'
required=True
args: 'Name'
nbr_channel
Integer
compute='_compute_nbr_channel'
readonly=True
store=False
args: 'Number of conversation'
rating_percentage_satisfaction
Integer
compute='_compute_percentage_satisfaction'
default=-1
help='Percentage of happy ratings over the past 7 days'
store=False
args: '% Happy'
rule_ids
One2many → im_livechat.channel.rule
script_external
Text
compute='_compute_script_external'
readonly=True
store=False
args: 'Script (external)'
user_ids
Many2many → res.users
default=_default_user_ids
string='Operators'
args: 'res.users', 'im_livechat_channel_im_user', 'channel_id', 'user_id'
web_page
Char
compute='_compute_web_page_link'
help='URL to a static page where you client can discuss with the operator of the channel.'
readonly=True
store=False
args: 'Web Page'
action_join(self)
action_quit(self)
action_view_rating(self)
create(self, vals)
get_available_users(self)
get_channel_infos(self, channel_id)
get_livechat_info(self, channel_id, username='Visitor')
get_mail_channel(self, livechat_channel_id, anonymous_name)
write(self, vals)
action
Selection
default='display_button'
help="* 'Display the button' displays the chat button on the pages.\n* 'Auto popup' displays the button and automatically open the conversation pane.\n* 'Hide the button' hides the chat button on the pages."
required=True
string='Action'
args: [('display_button', 'Display the button'), ('auto_popup', 'Auto popup'), ('hide_button', 'Hide the button')]
auto_popup_timer
Integer
default=0
help="Delay (in seconds) to automatically open the conversation window. Note: the selected action must be 'Auto popup' otherwise this parameter will not be taken into account."
args: 'Auto popup timer'
channel_id
Many2one → im_livechat.channel
help='The channel of the rule'
args: 'im_livechat.channel', 'Channel'
country_ids
Many2many → res.country
help="The rule will only be applied for these countries. Example: if you select 'Belgium' and 'United States' and that you set the action to 'Hide Button', the chat button will be hidden on the specified URL from the visitors located in these 2 countries. This feature requires GeoIP installed on your server."
args: 'res.country', 'im_livechat_channel_country_rel', 'channel_id', 'country_id', 'Country'
regex_url
Char
help='Regular expression specifying the web pages this rule will be applied on.'
args: 'URL Regex'
sequence
Integer
default=10
help='Given the order to find a matching rule. If 2 rules are matching for the given url/country, the one with the lowest sequence will be chosen.'
args: 'Matching order'
match_rule(self, channel_id, url, country_id=False)
channel_id
Many2one → mail.channel
readonly=True
args: 'mail.channel', 'Conversation'
channel_name
Char
readonly=True
args: 'Channel Name'
duration
Float
digits=(16, 2)
group_operator='avg'
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_message
Integer
group_operator='avg'
help='Number of message in the conversation'
readonly=True
args: 'Average message'
nbr_speaker
Integer
group_operator='avg'
help='Number of different speakers'
readonly=True
args: '# of speakers'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Operator'
start_date
Datetime
help='Start date of the conversation'
readonly=True
args: 'Start Date of session'
start_date_hour
Char
readonly=True
args: 'Hour of start Date of session'
technical_name
Char
readonly=True
args: 'Code'
uuid
Char
readonly=True
args: 'UUID'
init(self)
channel_id
Many2one → mail.channel
readonly=True
args: 'mail.channel', 'Conversation'
duration
Float
digits=(16, 2)
group_operator='avg'
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_channel
Integer
group_operator='sum'
help='Number of conversation'
readonly=True
args: '# of Sessions'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Operator'
start_date
Datetime
help='Start date of the conversation'
readonly=True
args: 'Start Date of session'
time_to_answer
Float
digits=(16, 2)
group_operator='avg'
help='Average time to give the first answer to the visitor'
readonly=True
args: 'Time to answer'
init(self)
No new fields.
Public methods (1)power_on(self, *args, **kwargs)
anonymous_name
Char
channel_type
Selection
selection_add=[('livechat', 'Livechat Conversation')]
livechat_channel_id
Many2one → im_livechat.channel
channel_fetch_slot(self)
channel_info(self, extra_info=False)
rating_get_parent(self)
remove_empty_livechat_sessions(self)
No new fields.
Public methods (1)unpin_old_livechat_sessions(self)
No new fields.
Public methods (1)action_open_rated_object(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/11.0/im_livechat |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Website |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Martin Trigaux, Olivier Dony, Christophe Simonis, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Aaron Bohy, Jeremy Kersten, GitHub, Lucas Perais (lpe), Yannick Tivisse, qsm-odoo, Martin Geubelle, Odoo Online, fwi-odoo, Alexandre Kühn, Sébastien Theys |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/live-chat |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:53:43 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web - bus - web_tour - rating |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Live Chat Support
==========================
Allow to drop instant messaging widgets on any web page that will communicate
with the current server and dispatch visitors request amongst several live
chat operators.
Help your customers with this chat, and analyse their feedback.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
im_livechat assets backend | ir.ui.view | qweb | Inherits web.assets_backend |
external_lib |
Livechat : External Librairies of the Livechat, required to make it work | ir.ui.view | qweb | New |
external_loader |
Livechat : external_script field of livechat channel | ir.ui.view | qweb | New |
im_livechat_canned_response_view_tree |
im_livechat.canned_response.tree | mail.shortcode | tree | New |
im_livechat_channel_rule_view_form |
im_livechat.channel.rule.form | im_livechat.channel.rule | form | New |
im_livechat_channel_rule_view_tree |
im.livechat.channel.rule.tree | im_livechat.channel.rule | tree | New |
im_livechat_channel_view_form |
im_livechat.channel.form | im_livechat.channel | form | New |
im_livechat_channel_view_kanban |
im_livechat.channel.kanban | im_livechat.channel | kanban | New |
im_livechat_report_channel_view_graph |
im_livechat.report.channel.graph | im_livechat.report.channel | graph | New |
im_livechat_report_channel_view_pivot |
im_livechat.report.channel.pivot | im_livechat.report.channel | pivot | New |
im_livechat_report_channel_view_search |
im_livechat.report.channel.search | im_livechat.report.channel | search | New |
im_livechat_report_operator_view_graph |
im_livechat.report.operator.graph | im_livechat.report.operator | graph | New |
im_livechat_report_operator_view_pivot |
im_livechat.report.operator.pivot | im_livechat.report.operator | pivot | New |
im_livechat_report_operator_view_search |
im_livechat.report.operator.search | im_livechat.report.operator | search | New |
loader |
Livechat : Javascript appending the livechat button | ir.ui.view | qweb | New |
mail_channel_view_form |
mail.channel.form | mail.channel | form | New |
mail_channel_view_search |
mail.channel.search | mail.channel | search | New |
mail_channel_view_tree |
mail.channel.tree | mail.channel | tree | New |
qunit_suite |
im_livechat tests | ir.ui.view | qweb | Inherits web.qunit_suite |
rating_rating_view_search_livechat |
rating.rating.search.livechat | rating.rating | xpath | Inherits rating.rating_rating_view_search |
support_page |
Livechat : Support Page | ir.ui.view | qweb | New |
are_you_inside
Boolean
compute='_are_you_inside'
readonly=True
store=False
string='Are you inside the matrix?'
button_text
Char
default='Have a Question? Chat with us.'
help='Default text displayed on the Livechat Support Button'
args: 'Text of the Button'
channel_ids
One2many → mail.channel
default_message
Char
default='How may I help you?'
help="This is an automated 'welcome' message that your visitor will see when they initiate a new conversation."
args: 'Welcome Message'
image
Binary
attachment=True
default=_default_image
help='This field holds the image used as photo for the group, limited to 1024x1024px.'
args: 'Image'
image_medium
Binary
attachment=True
help='Medium-sized photo of the group. It is automatically resized as a 128x128px image, with aspect ratio preserved. Use this field in form views or some kanban views.'
args: 'Medium'
image_small
Binary
attachment=True
help='Small-sized photo of the group. It is automatically resized as a 64x64px image, with aspect ratio preserved. Use this field anywhere a small image is required.'
args: 'Thumbnail'
input_placeholder
Char
name
Char
help='The name of the channel'
required=True
args: 'Name'
nbr_channel
Integer
compute='_compute_nbr_channel'
readonly=True
store=False
args: 'Number of conversation'
rating_percentage_satisfaction
Integer
compute='_compute_percentage_satisfaction'
default=-1
help='Percentage of happy ratings over the past 7 days'
store=False
args: '% Happy'
rule_ids
One2many → im_livechat.channel.rule
script_external
Text
compute='_compute_script_external'
readonly=True
store=False
args: 'Script (external)'
user_ids
Many2many → res.users
default=_default_user_ids
string='Operators'
args: 'res.users', 'im_livechat_channel_im_user', 'channel_id', 'user_id'
web_page
Char
compute='_compute_web_page_link'
help='URL to a static page where you client can discuss with the operator of the channel.'
readonly=True
store=False
args: 'Web Page'
action_join(self)
action_quit(self)
action_view_rating(self)
create(self, vals)
get_available_users(self)
get_channel_infos(self, channel_id)
get_livechat_info(self, channel_id, username='Visitor')
get_mail_channel(self, livechat_channel_id, anonymous_name)
write(self, vals)
action
Selection
default='display_button'
help="* 'Display the button' displays the chat button on the pages.\n* 'Auto popup' displays the button and automatically open the conversation pane.\n* 'Hide the button' hides the chat button on the pages."
required=True
string='Action'
args: [('display_button', 'Display the button'), ('auto_popup', 'Auto popup'), ('hide_button', 'Hide the button')]
auto_popup_timer
Integer
default=0
help="Delay (in seconds) to automatically open the conversation window. Note: the selected action must be 'Auto popup' otherwise this parameter will not be taken into account."
args: 'Auto popup timer'
channel_id
Many2one → im_livechat.channel
help='The channel of the rule'
args: 'im_livechat.channel', 'Channel'
country_ids
Many2many → res.country
help="The rule will only be applied for these countries. Example: if you select 'Belgium' and 'United States' and that you set the action to 'Hide Button', the chat button will be hidden on the specified URL from the visitors located in these 2 countries. This feature requires GeoIP installed on your server."
args: 'res.country', 'im_livechat_channel_country_rel', 'channel_id', 'country_id', 'Country'
regex_url
Char
help='Regular expression specifying the web pages this rule will be applied on.'
args: 'URL Regex'
sequence
Integer
default=10
help='Given the order to find a matching rule. If 2 rules are matching for the given url/country, the one with the lowest sequence will be chosen.'
args: 'Matching order'
match_rule(self, channel_id, url, country_id=False)
channel_id
Many2one → mail.channel
readonly=True
args: 'mail.channel', 'Conversation'
channel_name
Char
readonly=True
args: 'Channel Name'
duration
Float
digits=(16, 2)
group_operator='avg'
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_message
Integer
group_operator='avg'
help='Number of message in the conversation'
readonly=True
args: 'Average message'
nbr_speaker
Integer
group_operator='avg'
help='Number of different speakers'
readonly=True
args: '# of speakers'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Operator'
start_date
Datetime
help='Start date of the conversation'
readonly=True
args: 'Start Date of session'
start_date_hour
Char
readonly=True
args: 'Hour of start Date of session'
technical_name
Char
readonly=True
args: 'Code'
uuid
Char
readonly=True
args: 'UUID'
init(self)
channel_id
Many2one → mail.channel
readonly=True
args: 'mail.channel', 'Conversation'
duration
Float
digits=(16, 2)
group_operator='avg'
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_channel
Integer
group_operator='sum'
help='Number of conversation'
readonly=True
args: '# of Sessions'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Operator'
start_date
Datetime
help='Start date of the conversation'
readonly=True
args: 'Start Date of session'
time_to_answer
Float
digits=(16, 2)
group_operator='avg'
help='Average time to give the first answer to the visitor'
readonly=True
args: 'Time to answer'
init(self)
No new fields.
Public methods (1)power_on(self, *args, **kwargs)
anonymous_name
Char
channel_type
Selection
selection_add=[('livechat', 'Livechat Conversation')]
create_date
Datetime
required=True
args: 'Create Date'
livechat_channel_id
Many2one → im_livechat.channel
channel_fetch_slot(self)
channel_info(self, extra_info=False)
get_empty_list_help(self, help)
rating_get_parent_id(self)
rating_get_parent_model_name(self, values)
remove_empty_livechat_sessions(self)
No new fields.
Public methods (1)unpin_old_livechat_sessions(self)
No new fields.
Public methods (1)action_open_rated_object(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/10.0/im_livechat |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Website |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Denis Ledoux, Christophe Simonis, Xavier Morel, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Julien Legros, qdp-odoo, Géry Debongnie, Aaron Bohy, Yannick Tivisse, qsm-odoo, Denis Vermylen (dve) |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/live-chat |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:50:48 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web_kanban - web - bus - web_tour - rating |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Website Live Chat Support
==========================
Allow to drop instant messaging widgets on any web page that will communicate
with the current server and dispatch visitors request amongst several live
chat operators.
Help your customers with this chat, and analyse their feedback.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
im_livechat assets backend | ir.ui.view | qweb | Inherits web.assets_backend |
external_lib |
Livechat : External Librairies of the Livechat, required to make it work | ir.ui.view | qweb | New |
external_loader |
Livechat : external_script field of livechat channel | ir.ui.view | qweb | New |
im_livechat_canned_response_view_tree |
im_livechat.canned_response.tree | mail.shortcode | tree | New |
im_livechat_channel_rule_view_form |
im_livechat.channel.rule.form | im_livechat.channel.rule | form | New |
im_livechat_channel_rule_view_tree |
im.livechat.channel.rule.tree | im_livechat.channel.rule | tree | New |
im_livechat_channel_view_form |
im_livechat.channel.form | im_livechat.channel | form | New |
im_livechat_channel_view_kanban |
im_livechat.channel.kanban | im_livechat.channel | kanban | New |
im_livechat_report_channel_view_graph |
im_livechat.report.channel.graph | im_livechat.report.channel | graph | New |
im_livechat_report_channel_view_pivot |
im_livechat.report.channel.pivot | im_livechat.report.channel | pivot | New |
im_livechat_report_channel_view_search |
im_livechat.report.channel.search | im_livechat.report.channel | search | New |
im_livechat_report_operator_view_graph |
im_livechat.report.operator.graph | im_livechat.report.operator | graph | New |
im_livechat_report_operator_view_pivot |
im_livechat.report.operator.pivot | im_livechat.report.operator | pivot | New |
im_livechat_report_operator_view_search |
im_livechat.report.operator.search | im_livechat.report.operator | search | New |
loader |
Livechat : Javascript appending the livechat button | ir.ui.view | qweb | New |
mail_channel_view_form |
mail.channel.form | mail.channel | form | New |
mail_channel_view_search |
mail.channel.search | mail.channel | search | New |
mail_channel_view_tree |
mail.channel.tree | mail.channel | tree | New |
support_page |
Livechat : Support Page | ir.ui.view | qweb | New |
are_you_inside
Boolean
compute='_are_you_inside'
readonly=True
store=False
string='Are you inside the matrix?'
button_text
Char
default='Have a Question? Chat with us.'
help='Default text displayed on the Livechat Support Button'
args: 'Text of the Button'
channel_ids
One2many → mail.channel
default_message
Char
default='How may I help you?'
help="This is an automated 'welcome' message that your visitor will see when they initiate a new conversation."
args: 'Welcome Message'
image
Binary
attachment=True
default=_default_image
help='This field holds the image used as photo for the group, limited to 1024x1024px.'
args: 'Image'
image_medium
Binary
attachment=True
help='Medium-sized photo of the group. It is automatically resized as a 128x128px image, with aspect ratio preserved. Use this field in form views or some kanban views.'
args: 'Medium'
image_small
Binary
attachment=True
help='Small-sized photo of the group. It is automatically resized as a 64x64px image, with aspect ratio preserved. Use this field anywhere a small image is required.'
args: 'Thumbnail'
input_placeholder
Char
name
Char
help='The name of the channel'
required=True
args: 'Name'
nbr_channel
Integer
compute='_compute_nbr_channel'
readonly=True
store=False
args: 'Number of conversation'
rating_percentage_satisfaction
Integer
compute='_compute_percentage_satisfaction'
default=-1
help='Percentage of happy ratings over the past 7 days'
store=False
args: '% Happy'
rule_ids
One2many → im_livechat.channel.rule
script_external
Text
compute='_compute_script_external'
readonly=True
store=False
args: 'Script (external)'
user_ids
Many2many → res.users
default=_default_user_ids
string='Operators'
args: 'res.users', 'im_livechat_channel_im_user', 'channel_id', 'user_id'
web_page
Char
compute='_compute_web_page_link'
help='URL to a static page where you client can discuss with the operator of the channel.'
readonly=True
store=False
args: 'Web Page'
action_join(self)
action_quit(self)
action_view_rating(self)
create(self, vals)
get_available_users(self)
get_channel_infos(self, channel_id)
get_livechat_info(self, channel_id, username='Visitor')
get_mail_channel(self, livechat_channel_id, anonymous_name)
write(self, vals)
action
Selection
default='display_button'
help="* 'Display the button' displays the chat button on the pages.\n* 'Auto popup' displays the button and automatically open the conversation pane.\n* 'Hide the button' hides the chat button on the pages."
required=True
string='Action'
args: [('display_button', 'Display the button'), ('auto_popup', 'Auto popup'), ('hide_button', 'Hide the button')]
auto_popup_timer
Integer
default=0
help="Delay (in seconds) to automatically open the conversation window. Note: the selected action must be 'Auto popup' otherwise this parameter will not be taken into account."
args: 'Auto popup timer'
channel_id
Many2one → im_livechat.channel
help='The channel of the rule'
args: 'im_livechat.channel', 'Channel'
country_ids
Many2many → res.country
help="The rule will only be applied for these countries. Example: if you select 'Belgium' and 'United States' and that you set the action to 'Hide Button', the chat button will be hidden on the specified URL from the visitors located in these 2 countries. This feature requires GeoIP installed on your server."
args: 'res.country', 'im_livechat_channel_country_rel', 'channel_id', 'country_id', 'Country'
regex_url
Char
help='Regular expression specifying the web pages this rule will be applied on.'
args: 'URL Regex'
sequence
Integer
default=10
help='Given the order to find a matching rule. If 2 rules are matching for the given url/country, the one with the lowest sequence will be chosen.'
args: 'Matching order'
match_rule(self, channel_id, url, country_id=False)
channel_id
Many2one → mail.channel
readonly=True
args: 'mail.channel', 'Conversation'
channel_name
Char
readonly=True
args: 'Channel Name'
duration
Float
digits=(16, 2)
group_operator='avg'
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_message
Integer
group_operator='avg'
help='Number of message in the conversation'
readonly=True
args: 'Average message'
nbr_speaker
Integer
group_operator='avg'
help='Number of different speakers'
readonly=True
args: '# of speakers'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Operator'
start_date
Datetime
help='Start date of the conversation'
readonly=True
args: 'Start Date of session'
start_date_hour
Char
readonly=True
args: 'Hour of start Date of session'
technical_name
Char
readonly=True
args: 'Code'
uuid
Char
readonly=True
args: 'UUID'
init(self)
channel_id
Many2one → mail.channel
readonly=True
args: 'mail.channel', 'Conversation'
duration
Float
digits=(16, 2)
group_operator='avg'
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_channel
Integer
group_operator='sum'
help='Number of conversation'
readonly=True
args: '# of Sessions'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Operator'
start_date
Datetime
help='Start date of the conversation'
readonly=True
args: 'Start Date of session'
time_to_answer
Float
digits=(16, 2)
group_operator='avg'
help='Average time to give the first answer to the visitor'
readonly=True
args: 'Time to answer'
init(self)
No new fields.
Public methods (1)power_on(self, *args, **kwargs)
anonymous_name
Char
channel_type
Selection
selection_add=[('livechat', 'Livechat Conversation')]
create_date
Datetime
required=True
args: 'Create Date'
livechat_channel_id
Many2one → im_livechat.channel
channel_fetch_slot(self)
channel_info(self, extra_info=False)
get_empty_list_help(self, help)
remove_empty_livechat_sessions(self)
No new fields.
Public methods (1)unpin_old_livechat_sessions(self)
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/9.0/im_livechat |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Website |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | |
| MAINTAINERS | |
| MAINTAINERS | |
| COMMITTERS | |
| COMMITTERS | Raphael Collet, Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Olivier Dony, Thibault Delavallée, Denis Ledoux, Fabien Meghazi, Christophe Simonis, Nicolas Martinelli, Nicolas Lempereur, Jérome Maes, Richard Mathot, Géry Debongnie, Aaron Bohy, Jeremy Kersten, Lucas Perais (lpe), Yannick Tivisse, qsm-odoo, Martin Geubelle |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/live-chat |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:48:30 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web_kanban - web - bus - rating |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Website Live Chat Support
==========================
Allow to drop instant messaging widgets on any web page that will communicate
with the current server and dispatch visitors request amongst several live
chat operators.
Help your customers with this chat, and analyse their feedback.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
assets_backend |
im_livechat assets backend | ir.ui.view | qweb | Inherits web.assets_backend |
external_lib |
Livechat : External Librairies of the Livechat, required to make it work | ir.ui.view | qweb | New |
external_loader |
Livechat : external_script field of livechat channel | ir.ui.view | qweb | New |
im_livechat_channel_rule_view_form |
im_livechat.channel.rule.form | im_livechat.channel.rule | form | New |
im_livechat_channel_rule_view_tree |
im.livechat.channel.rule.tree | im_livechat.channel.rule | tree | New |
im_livechat_channel_view_form |
im_livechat.channel.form | im_livechat.channel | form | New |
im_livechat_channel_view_kanban |
im_livechat.channel.kanban | im_livechat.channel | kanban | New |
im_livechat_report_channel_view_graph |
im_livechat.report.channel.graph | im_livechat.report.channel | graph | New |
im_livechat_report_channel_view_pivot |
im_livechat.report.channel.pivot | im_livechat.report.channel | pivot | New |
im_livechat_report_channel_view_search |
im_livechat.report.channel.search | im_livechat.report.channel | search | New |
im_livechat_report_operator_view_graph |
im_livechat.report.operator.graph | im_livechat.report.operator | graph | New |
im_livechat_report_operator_view_pivot |
im_livechat.report.operator.pivot | im_livechat.report.operator | pivot | New |
im_livechat_report_operator_view_search |
im_livechat.report.operator.search | im_livechat.report.operator | search | New |
loader |
Livechat : Javascript appending the livechat button | ir.ui.view | qweb | New |
mail_channel_view_form |
mail.channel.form | mail.channel | form | New |
mail_channel_view_search |
mail.channel.search | mail.channel | search | New |
mail_channel_view_tree |
mail.channel.tree | mail.channel | tree | New |
support_page |
Livechat : Support Page | ir.ui.view | qweb | New |
are_you_inside
Boolean
compute='_are_you_inside'
readonly=True
store=False
string='Are you inside the matrix?'
button_text
Char
default='Have a Question? Chat with us.'
help='Default text displayed on the Livechat Support Button'
args: 'Text of the Button'
channel_ids
One2many → mail.channel
default_message
Char
default='How may I help you?'
help="This is an automated 'welcome' message that your visitor will see when they initiate a new conversation."
args: 'Welcome Message'
image
Binary
attachment=True
default=_default_image
help='This field holds the image used as photo for the group, limited to 1024x1024px.'
args: 'Image'
image_medium
Binary
attachment=True
help='Medium-sized photo of the group. It is automatically resized as a 128x128px image, with aspect ratio preserved. Use this field in form views or some kanban views.'
args: 'Medium'
image_small
Binary
attachment=True
help='Small-sized photo of the group. It is automatically resized as a 64x64px image, with aspect ratio preserved. Use this field anywhere a small image is required.'
args: 'Thumbnail'
input_placeholder
Char
name
Char
help='The name of the channel'
required=True
args: 'Name'
nbr_channel
Integer
compute='_compute_nbr_channel'
readonly=True
store=False
args: 'Number of conversation'
rating_percentage_satisfaction
Integer
compute='_compute_percentage_satisfaction'
default=-1
help='Percentage of happy ratings over the past 7 days'
store=False
args: '% Happy'
rule_ids
One2many → im_livechat.channel.rule
script_external
Text
compute='_compute_script_external'
readonly=True
store=False
args: 'Script (external)'
user_ids
Many2many → res.users
default=_default_user_ids
string='Operators'
args: 'res.users', 'im_livechat_channel_im_user', 'channel_id', 'user_id'
web_page
Char
compute='_compute_web_page_link'
help='URL to a static page where you client can discuss with the operator of the channel.'
readonly=True
store=False
args: 'Web Page'
action_join(self)
action_quit(self)
action_view_rating(self)
create(self, vals)
get_available_users(self)
get_channel_infos(self, channel_id)
get_livechat_info(self, channel_id, username='Visitor')
get_mail_channel(self, livechat_channel_id, anonymous_name)
match_rules(self, request, channel_id, username='Visitor')
write(self, vals)
action
Selection
default='display_button'
help="* Select 'Display the button' to simply display the chat button on the pages.\n* Select 'Auto popup' for to display the button, and automatically open the conversation window.\n* Select 'Hide the button' to hide the chat button on the pages."
required=True
string='Action'
args: [('display_button', 'Display the button'), ('auto_popup', 'Auto popup'), ('hide_button', 'Hide the button')]
auto_popup_timer
Integer
default=0
help="Delay (in seconds) to automatically open the converssation window. Note : the selected action must be 'Auto popup', otherwise this parameter will not be take into account."
args: 'Auto popup timer'
channel_id
Many2one → im_livechat.channel
help='The channel of the rule'
args: 'im_livechat.channel', 'Channel'
country_ids
Many2many → res.country
help="The actual rule will match only for this country. So if you set select 'Belgium' and 'France' and you set the action to 'Hide Buttun', this 2 country will not be see the support button for the specified URL. This feature requires GeoIP installed on your server."
args: 'res.country', 'im_livechat_channel_country_rel', 'channel_id', 'country_id', 'Country'
regex_url
Char
help='Regular expression identifying the web page on which the rules will be applied.'
args: 'URL Regex'
sequence
Integer
default=10
help='Given the order to find a matching rule. If 2 rules are matching for the given url/country, the one with the lowest sequence will be chosen.'
args: 'Matching order'
match_rule(self, channel_id, url, country_id=False)
channel_id
Many2one → mail.channel
readonly=True
args: 'mail.channel', 'Conversation'
channel_name
Char
readonly=True
args: 'Channel Name'
duration
Float
digits=(16, 2)
group_operator='avg'
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_message
Integer
group_operator='avg'
help='Number of message in the conversation'
readonly=True
args: 'Average message'
nbr_speaker
Integer
group_operator='avg'
help='Number of different speakers'
readonly=True
args: '# of speakers'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Opertor'
start_date
Datetime
help='Start date of the conversation'
readonly=True
args: 'Start Date of session'
start_date_hour
Char
readonly=True
args: 'Hour of start Date of session'
technical_name
Char
readonly=True
args: 'Code'
uuid
Char
readonly=True
args: 'UUID'
init(self, cr)
channel_id
Many2one → mail.channel
readonly=True
args: 'mail.channel', 'Conversation'
duration
Float
digits=(16, 2)
group_operator='avg'
help='Duration of the conversation (in seconds)'
readonly=True
args: 'Average duration'
livechat_channel_id
Many2one → im_livechat.channel
readonly=True
args: 'im_livechat.channel', 'Channel'
nbr_channel
Integer
group_operator='sum'
help='Number of conversation'
readonly=True
args: '# of channel'
partner_id
Many2one → res.partner
readonly=True
args: 'res.partner', 'Operator'
start_date
Datetime
help='Start date of the conversation'
readonly=True
args: 'Start Date of session'
time_to_answer
Float
digits=(16, 2)
group_operator='avg'
help='Average time to give the first answer to the visitor'
readonly=True
args: 'Time to answer'
init(self, cr)
anonymous_name
Char
channel_type
Selection
selection_add=[('livechat', 'Livechat Conversation')]
create_date
Datetime
required=True
args: 'Create Date'
livechat_channel_id
Many2one → im_livechat.channel
channel_fetch_slot(self)
channel_info(self, extra_info=False)
cron_remove_empty_session(self)
No new fields.
Public methods (0)No public methods.
| REPOSITORY | |
|---|---|
| REPOSITORY | odoo/odoo |
| GIT | |
| GIT | https://github.com/odoo/odoo.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/odoo/odoo/tree/8.0/im_livechat |
| VERSION | |
| VERSION | 1.0 |
| CATEGORY | |
| CATEGORY | Tools |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | OpenERP SA |
| MAINTAINERS | |
| MAINTAINERS | OpenERP SA |
| COMMITTERS | |
| COMMITTERS | Odoo Translation Bot, Christophe Matthieu, Martin Trigaux, Fabien Pinckaers, Antony Lesuisse, Olivier Dony, Thibault Delavallée, Denis Ledoux, Fabien Meghazi, niv-openerp, Christophe Simonis, Goffin Simon, Nicolas Lempereur, Jérome Maes, Richard Mathot, Géry Debongnie, jke-openerp, ged-odoo, Jeremy Kersten |
| WEBSITE | |
| WEBSITE | https://www.odoo.com/page/live-chat |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-05 23:45:39 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
odoo/odoo: - base - base_setup - web_kanban - web - im_chat - bus |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
Live Chat Support
=================
Allow to drop instant messaging widgets on any web page that will communicate
with the current server and dispatch visitors request amongst several live
chat operators.
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
external_lib |
External Librairies of the Livechat, required to make it work | ir.ui.view | qweb | New |
external_loader |
All the scripts to launch the LiveSupport from an external Web Page | ir.ui.view | qweb | New |
im_message_form |
im.chat.message.tree | im_chat.message | tree | New |
im_message_search |
im.chat.message.search | im_chat.message | search | New |
internal_lib |
Librairies of the Livechat | ir.ui.view | qweb | New |
internal_loader |
All the scripts to launch the LiveSupport from an internal Web Page | ir.ui.view | qweb | New |
loader |
Javascript initializing the LiveSupport | ir.ui.view | qweb | New |
support_channel_form |
support_channel.form | im_livechat.channel | form | New |
support_channel_kanban |
support_channel.kanban | im_livechat.channel | kanban | New |
support_page |
Livechat Support Page | ir.ui.view | qweb | New |
No new fields.
Public methods (2)is_in_session(self, cr, uid, uuid, user_id, context=None)
users_infos(self, cr, uid, ids, context=None)
No new fields.
Public methods (6)get_available_users(self, cr, uid, channel_id, context=None)
get_channel_session(self, cr, uid, channel_id, anonymous_name, context=None)
get_info_for_chat_src(self, cr, uid, channel, context=None)
join(self, cr, uid, ids, context=None)
quit(self, cr, uid, ids, context=None)
test_channel(self, cr, uid, channel, context=None)