Repository
OCA/connector-telephony · module folder · Try on Runboat
Module version
1.0.1
Category
Productivity/VOIP
Folder size
2.12 MB
License
AGPL-3
Application
No
Auto-installable
No
Website
https://github.com/OCA/connector-telephony
Last tracking update
2026-08-07 09:06:27
Authors
Odoo Community Association (OCA), Dixmit
Maintainers
Odoo Community Association (OCA), Dixmit
Committers
Enric Tobella, Carlos Lopez, OCA-git-bot, oca-ci, Luis Rodriguez
Odoo dependencies
odoo/odoo:
- web
- bus
Python dependencies
None
System dependencies
None
Required by
None
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 form Inherits base.view_users_form
view_users_form_simple_modif res.users form 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
HTTP endpoints (0)

No HTTP endpoints found for this module.

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.

Loading…

Loading…