Voip OCA

voip_oca
REPOSITORY
REPOSITORYOCA/connector-telephony
GIT
GIThttps://github.com/OCA/connector-telephony.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/connector-telephony/tree/19.0/voip_oca
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYProductivity/VOIP
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Dixmit
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Dixmit
COMMITTERS
COMMITTERSEnric Tobella, Carlos Lopez, OCA-git-bot, oca-ci, Luis Rodriguez
WEBSITE
WEBSITEhttps://github.com/OCA/connector-telephony
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:48
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows the use of VOIP directly from Odoo.

It relies on SIP.js to connect to the PBX using a websocket directly from the browser.

Odoo server will not connect directly to the PBX server, but will have users and passwords stored.

In order to use this module, you need to have a PBX server that allows websocket connection.
Otherwise, you need to use a proxy that will be the bridge between Odoo and PBX.
Websocket connection is required because browsers prefer this kind of connections.
Also, this is an standard connection defined on RFC 7118 by IETF.
Several PBX servers support this protocol.

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
view_users_form res.users xpath Inherits base.view_users_form
view_users_form_simple_modif res.users xpath Inherits base.view_users_form_simple_modif
voip_call_list_view voip.call.list voip.call list New
voip_pbx_form_view voip.pbx form New
voip_pbx_list_view voip.pbx list New
voip_pbx_search_view voip.pbx search New
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • session_info(self)

New fields (2)
  • main_partner Char
    compute='_compute_main_partner_id'
  • main_partner_id Many2one → res.partner
    compute='_compute_main_partner_id' string='Main Contact' args: 'res.partner'
Public methods (1)
  • get_call_activities(self, _search, offset, limit)
    @api.model

New fields (1)
  • activity_main_partner_id Many2one → res.partner
    compute='_compute_activity_main_partner_id' string='Main Contact' args: 'res.partner'
Public methods (1)
  • get_activity_main_partner_id(self)

New fields (0)

No new fields.

Public methods (3)
  • format_partner(self)
  • get_activity_main_partner_id(self)
    Override to return the partner itself.
  • voip_get_contacts(self, _search, offset, limit)
    @api.model

New fields (3)
  • voip_password Char
  • voip_pbx_id Many2one → voip.pbx
    args: 'voip.pbx'
  • voip_username Char
Public methods (2)
  • SELF_READABLE_FIELDS(self)
    @property
  • SELF_WRITEABLE_FIELDS(self)
    @property

New fields (9)
  • activity_name Char
    help='The name of the activity related to this phone call, if any.'
  • end_date Datetime
  • partner_id Many2one → res.partner
    index=True args: 'res.partner', 'Contact'
  • pbx_id Many2one → voip.pbx
    args: 'voip.pbx', 'PBX'
  • phone_number Char
    required=True
  • start_date Datetime
  • state Selection
    default='calling' index=True args: [('aborted', 'Aborted'), ('calling', 'Calling'), ('missed', 'Missed'), ('ongoing', 'Ongoing'), ('rejected', 'Rejected'), ('terminated', 'Terminated')]
  • type_call Selection
    default='outgoing' args: [('incoming', 'Incoming'), ('outgoing', 'Outgoing')]
  • user_id Many2one → res.users
    default=<expr> index=True args: 'res.users', 'Responsible'
Public methods (6)
  • accept_call(self)
  • create_call(self, values)
    @api.model
  • format_call(self)
  • get_recent_calls(self, _search, offset, limit)
    @api.model
  • reject_call(self)
  • terminate_call(self)

New fields (4)
  • domain Char
    default='localhost'
  • mode Selection
    default='test' string='Environment' args: [('test', 'Test'), ('prod', 'Production')]
  • name Char
    required=True
  • ws_server Char
    default='ws://localhost'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/connector-telephony
GIT
GIThttps://github.com/OCA/connector-telephony.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/connector-telephony/tree/18.0/voip_oca
VERSION
VERSION 1.0.3
CATEGORY
CATEGORYProductivity/VOIP
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Dixmit
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Dixmit
COMMITTERS
COMMITTERSEnric Tobella, Carlos Lopez, Weblate, OCA-git-bot, oca-ci, CarlosRoca13
WEBSITE
WEBSITEhttps://github.com/OCA/connector-telephony
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows the use of VOIP directly from Odoo.

It relies on SIP.js to connect to the PBX using a websocket directly from the browser.

Odoo server will not connect directly to the PBX server, but will have users and passwords stored.

In order to use this module, you need to have a PBX server that allows websocket connection.
Otherwise, you need to use a proxy that will be the bridge between Odoo and PBX.
Websocket connection is required because browsers prefer this kind of connections.
Also, this is an standard connection defined on RFC 7118 by IETF.
Several PBX servers support this protocol.

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
view_users_form res.users xpath Inherits base.view_users_form
view_users_form_simple_modif res.users xpath Inherits base.view_users_form_simple_modif
voip_call_list_view voip.call.list voip.call list New
voip_pbx_form_view voip.pbx form New
voip_pbx_list_view voip.pbx list New
voip_pbx_search_view voip.pbx search New
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • session_info(self)

New fields (2)
  • main_partner Char
    compute='_compute_main_partner_id'
  • main_partner_id Many2one → res.partner
    compute='_compute_main_partner_id' string='Main Contact' args: 'res.partner'
Public methods (1)
  • get_call_activities(self, _search, offset, limit)
    @api.model

New fields (1)
  • activity_main_partner_id Many2one → res.partner
    compute='_compute_activity_main_partner_id' string='Main Contact' args: 'res.partner'
Public methods (1)
  • get_activity_main_partner_id(self)

New fields (0)

No new fields.

Public methods (3)
  • format_partner(self)
  • get_activity_main_partner_id(self)
    Override to return the partner itself.
  • voip_get_contacts(self, _search, offset, limit)
    @api.model

New fields (3)
  • voip_password Char
  • voip_pbx_id Many2one → voip.pbx
    args: 'voip.pbx'
  • voip_username Char
Public methods (2)
  • SELF_READABLE_FIELDS(self)
    @property
  • SELF_WRITEABLE_FIELDS(self)
    @property

New fields (9)
  • activity_name Char
    help='The name of the activity related to this phone call, if any.'
  • end_date Datetime
  • partner_id Many2one → res.partner
    index=True args: 'res.partner', 'Contact'
  • pbx_id Many2one → voip.pbx
    args: 'voip.pbx', 'PBX'
  • phone_number Char
    required=True
  • start_date Datetime
  • state Selection
    default='calling' index=True args: [('aborted', 'Aborted'), ('calling', 'Calling'), ('missed', 'Missed'), ('ongoing', 'Ongoing'), ('rejected', 'Rejected'), ('terminated', 'Terminated')]
  • type_call Selection
    default='outgoing' args: [('incoming', 'Incoming'), ('outgoing', 'Outgoing')]
  • user_id Many2one → res.users
    default=<expr> index=True args: 'res.users', 'Responsible'
Public methods (6)
  • accept_call(self)
  • create_call(self, values)
    @api.model
  • format_call(self)
  • get_recent_calls(self, _search, offset, limit)
    @api.model
  • reject_call(self)
  • terminate_call(self)

New fields (4)
  • domain Char
    default='localhost'
  • mode Selection
    default='test' string='Environment' args: [('test', 'Test'), ('prod', 'Production')]
  • name Char
    required=True
  • ws_server Char
    default='ws://localhost'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/connector-telephony
GIT
GIThttps://github.com/OCA/connector-telephony.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/connector-telephony/tree/17.0/voip_oca
VERSION
VERSION 1.0.3
CATEGORY
CATEGORYProductivity/VOIP
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Dixmit
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Dixmit
COMMITTERS
COMMITTERSEnric Tobella, Carlos Lopez, Weblate, OCA-git-bot, oca-ci, CarlosRoca13
WEBSITE
WEBSITEhttps://github.com/OCA/connector-telephony
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:04
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module allows the use of VOIP directly from Odoo.

It relies on SIP.js to connect to the PBX using a websocket directly from the browser.

Odoo server will not connect directly to the PBX server, but will have users and passwords stored.

In order to use this module, you need to have a PBX server that allows websocket connection.
Otherwise, you need to use a proxy that will be the bridge between Odoo and PBX.
Websocket connection is required because browsers prefer this kind of connections.
Also, this is an standard connection defined on RFC 7118 by IETF.
Several PBX servers support this protocol.

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
view_users_form res.users xpath Inherits base.view_users_form
view_users_form_simple_modif res.users xpath Inherits base.view_users_form_simple_modif
voip_call_list_view voip.call.list voip.call tree New
voip_pbx_form_view voip.pbx form New
voip_pbx_list_view voip.pbx tree New
voip_pbx_search_view voip.pbx search New
Models touched (7)

New fields (0)

No new fields.

Public methods (1)
  • session_info(self)

New fields (2)
  • main_partner Char
    compute='_compute_main_partner_id'
  • main_partner_id Many2one → res.partner
    compute='_compute_main_partner_id' string='Main Contact' args: 'res.partner'
Public methods (1)
  • get_call_activities(self, _search, offset, limit)
    @api.model

New fields (1)
  • activity_main_partner_id Many2one → res.partner
    compute='_compute_activity_main_partner_id' string='Main Contact' args: 'res.partner'
Public methods (1)
  • get_activity_main_partner_id(self)

New fields (0)

No new fields.

Public methods (3)
  • format_partner(self)
  • get_activity_main_partner_id(self)
    Override to return the partner itself.
  • voip_get_contacts(self, _search, offset, limit)
    @api.model

New fields (3)
  • voip_password Char
  • voip_pbx_id Many2one → voip.pbx
    args: 'voip.pbx'
  • voip_username Char
Public methods (2)
  • SELF_READABLE_FIELDS(self)
    @property
  • SELF_WRITEABLE_FIELDS(self)
    @property

New fields (9)
  • activity_name Char
    help='The name of the activity related to this phone call, if any.'
  • end_date Datetime
  • partner_id Many2one → res.partner
    index=True args: 'res.partner', 'Contact'
  • pbx_id Many2one → voip.pbx
    args: 'voip.pbx', 'PBX'
  • phone_number Char
    required=True
  • start_date Datetime
  • state Selection
    default='calling' index=True args: [('aborted', 'Aborted'), ('calling', 'Calling'), ('missed', 'Missed'), ('ongoing', 'Ongoing'), ('rejected', 'Rejected'), ('terminated', 'Terminated')]
  • type_call Selection
    default='outgoing' args: [('incoming', 'Incoming'), ('outgoing', 'Outgoing')]
  • user_id Many2one → res.users
    default=<expr> index=True args: 'res.users', 'Responsible'
Public methods (6)
  • accept_call(self)
  • create_call(self, values)
    @api.model
  • format_call(self)
  • get_recent_calls(self, _search, offset, limit)
    @api.model
  • reject_call(self)
  • terminate_call(self)

New fields (4)
  • domain Char
    default='localhost'
  • mode Selection
    default='test' string='Environment' args: [('test', 'Test'), ('prod', 'Production')]
  • name Char
    required=True
  • ws_server Char
    default='ws://localhost'
Public methods (0)

No public methods.