Base Sms Client

base_sms_client
REPOSITORY
REPOSITORYOCA/connector-telephony
GIT
GIThttps://github.com/OCA/connector-telephony.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/connector-telephony/tree/12.0/base_sms_client
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYPhone
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Julius Network Solutions, SYLEAM
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Julius Network Solutions, SYLEAM
COMMITTERS
COMMITTERS
WEBSITE
WEBSITEhttp://julius.fr
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/connector-telephony:
    - base_phone
odoo/odoo:
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
    - phone_validation
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES phonenumbers
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
email_template_form mail.template.form mail.template field Inherits mail.email_template_form
sms_gateway_form sms.gateway form New
sms_gateway_tree sms.gateway tree New
sms_sms_form sms.sms form New
sms_sms_tree sms.sms tree New
view_server_statistics_graph ir.actions.server page Inherits base.view_server_action_form
view_wizard_mass_sms wizard.mass.sms form New
Models touched (6)

New fields (4)
  • mobile Char
    help='Field to be used to fetch the mobile number, e.g. you select the invoice model and `object.invoice_address_id.mobile` will be the field providing the correct mobile number.' string='Mobile No'
  • sms Char
    size=160 string='SMS' translate=True
  • sms_server_id Many2one → sms.gateway
    comodel_name='sms.gateway' help='Select the SMS Gateway configuration to use with this action.' string='SMS Server'
  • sms_template_id Many2one → mail.template
    comodel_name='mail.template' help='Select the SMS Template configuration to use with this action.' string='SMS Template'
Public methods (0)

No public methods.

New fields (3)
  • gateway_id Many2one → sms.gateway
    args: 'sms.gateway', 'SMS Gateway'
  • mobile_to Char
    args: 'To (Mobile)'
  • sms_template Boolean
    args: 'SMS Template'
Public methods (0)

No public methods.

New fields (12)
  • body Text
    help='The message text that will be send along with the email which is send through this server.' string='Message'
  • char_limit Integer
    default=160 string='Character Limit'
  • classes Selection
    default='1' help='The SMS class' selection=CLASSES_LIST string='Class'
  • code Char
    args: 'Verification Code'
  • coding Selection
    default='1' help='The SMS coding: 1 for 7 bit (160 chracters maxlength) or 2 for unicode (70 characters maxlength)' selection=[('1', '7 bit'), ('2', 'Unicode')] string='Coding'
  • company_id Many2one → res.company
    comodel_name='res.company'
  • default_gateway Boolean
  • deferred Integer
    help='The time -in minute(s)- to wait before sending the message.'
  • nostop Boolean
    default=True help='Do not display STOP clause in the message, this requires that this is not an advertising message.'
  • priority Selection
    default='3' help='The priority of the message' selection=PRIORITY_LIST string='Priority'
  • tag Char
    help='an optional tag' args: 'Tag'
  • validity Integer
    default=10 help='The maximum time - in minute(s) - before the message is dropped.'
Public methods (0)

No public methods.

New fields (6)
  • from_provider Char
    string='From'
  • method Selection
    selection=[] string='API Method'
  • name Char
    required=True string='Gateway Name'
  • state Selection
    default='new' index=True readonly=True selection=[('new', 'Not Verified'), ('waiting', 'Waiting for Verification'), ('confirm', 'Verified')] string='Gateway Status'
  • url Char
    help='Base url for message' string='Gateway URL'
  • user_ids Many2many → res.users
    comodel_name='res.users' string='Users Allowed to use the gateway'
Public methods (0)

No public methods.

New fields (6)
  • error Text
    readonly=True size=256 states={'draft': [('readonly', False)]} string='Last Error'
  • gateway_id Many2one → sms.gateway
    comodel_name='sms.gateway' readonly=True states={'draft': [('readonly', False)]} string='SMS Gateway'
  • message Text
    readonly=True required=True size=256 states={'draft': [('readonly', False)]}
  • mobile Char
    readonly=True required=True states={'draft': [('readonly', False)]}
  • partner_id Many2one → res.partner
    readonly=True states={'draft': [('readonly', False)]} string='Partner' args: 'res.partner'
  • state Selection
    default='draft' readonly=True selection=[('draft', 'Queued'), ('sent', 'Sent'), ('cancel', 'Cancel'), ('error', 'Error')] string='Message Status'
Public methods (4)
  • cancel(self)
    @api.multi
  • onchange_partner_id(self)
    @api.onchange('partner_id')
  • retry(self)
    @api.multi
  • send(self)
    @api.multi

New fields (10)
  • classes Selection
    help='The sms class: flash(0),phone display(1),SIM(2),toolkit(3)' args: [('0', 'Flash'), ('1', 'Phone display'), ('2', 'SIM'), ('3', 'Toolkit')]
  • coding Selection
    help='The sms coding: 1 for 7 bit or 2 for unicode' args: [('1', '7 bit'), ('2', 'Unicode')]
  • deferred Integer
    help='The time -in minute(s)- to wait before sending the message'
  • gateway_id Many2one → sms.gateway
    default=_default_get_gateway required=True args: 'sms.gateway'
  • message Text
    required=True
  • nostop Boolean
    help='Do not display STOP clause in the message, this requires that this is not an advertising message'
  • partner_ids Many2many → res.partner
    default=_default_get_partner args: 'res.partner'
  • priority Selection
    help='The priority of the message' args: [('0', '0'), ('1', '1'), ('2', '2'), ('3', '3')]
  • tag Char
    help='An optional tag' size=256
  • validity Integer
    help='The maximum time -in minute(s)- before the message is dropped'
Public methods (2)
  • onchange_gateway_mass(self)
    @api.onchange('gateway_id')
  • send(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/connector-telephony
GIT
GIThttps://github.com/OCA/connector-telephony.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/connector-telephony/tree/11.0/base_sms_client
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYPhone
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Julius Network Solutions, SYLEAM
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Julius Network Solutions, SYLEAM
COMMITTERS
COMMITTERSAlexis de Lattre
WEBSITE
WEBSITEhttp://julius.fr
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:23:57
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/connector-telephony:
    - base_phone
OCA/server-auth:
    - keychain
odoo/odoo:
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
    - phone_validation
    - base_sparse_field
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES phonenumbers
cryptography
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
email_template_form mail.template.form mail.template field Inherits mail.email_template_form
sms_gateway_form sms.gateway form New
sms_gateway_tree sms.gateway tree New
sms_sms_form sms.sms form New
sms_sms_tree sms.sms tree New
view_server_statistics_graph ir.actions.server page Inherits base.view_server_action_form
view_wizard_mass_sms wizard.mass.sms form New
Models touched (6)

New fields (4)
  • mobile Char
    help='Field to be used to fetch the mobile number, e.g. you select the invoice model and `object.invoice_address_id.mobile` will be the field providing the correct mobile number.' string='Mobile No'
  • sms Char
    size=160 string='SMS' translate=True
  • sms_server_id Many2one → sms.gateway
    comodel_name='sms.gateway' help='Select the SMS Gateway configuration to use with this action.' string='SMS Server'
  • sms_template_id Many2one → mail.template
    comodel_name='mail.template' help='Select the SMS Template configuration to use with this action.' string='SMS Template'
Public methods (0)

No public methods.

New fields (3)
  • gateway_id Many2one → sms.gateway
    args: 'sms.gateway', 'SMS Gateway'
  • mobile_to Char
    args: 'To (Mobile)'
  • sms_template Boolean
    args: 'SMS Template'
Public methods (0)

No public methods.

New fields (12)
  • body Text
    help='The message text that will be send along with the email which is send through this server.' string='Message'
  • char_limit Integer
    default=160 string='Character Limit'
  • classes Selection
    default='1' help='The SMS class' selection=CLASSES_LIST string='Class'
  • code Char
    args: 'Verification Code'
  • coding Selection
    default='1' help='The SMS coding: 1 for 7 bit (160 chracters maxlength) or 2 for unicode (70 characters maxlength)' selection=[('1', '7 bit'), ('2', 'Unicode')] string='Coding'
  • company_id Many2one → res.company
    comodel_name='res.company'
  • default_gateway Boolean
  • deferred Integer
    help='The time -in minute(s)- to wait before sending the message.'
  • nostop Boolean
    default=True help='Do not display STOP clause in the message, this requires that this is not an advertising message.'
  • priority Selection
    default='3' help='The priority of the message' selection=PRIORITY_LIST string='Priority'
  • tag Char
    help='an optional tag' args: 'Tag'
  • validity Integer
    default=10 help='The maximum time - in minute(s) - before the message is dropped.'
Public methods (0)

No public methods.

New fields (6)
  • from_provider Char
    string='From'
  • method Selection
    selection=[] string='API Method'
  • name Char
    required=True string='Gateway Name'
  • state Selection
    default='new' index=True readonly=True selection=[('new', 'Not Verified'), ('waiting', 'Waiting for Verification'), ('confirm', 'Verified')] string='Gateway Status'
  • url Char
    help='Base url for message' string='Gateway URL'
  • user_ids Many2many → res.users
    comodel_name='res.users' string='Users Allowed to use the gateway'
Public methods (0)

No public methods.

New fields (6)
  • error Text
    readonly=True size=256 states={'draft': [('readonly', False)]} string='Last Error'
  • gateway_id Many2one → sms.gateway
    comodel_name='sms.gateway' readonly=True states={'draft': [('readonly', False)]} string='SMS Gateway'
  • message Text
    readonly=True required=True size=256 states={'draft': [('readonly', False)]}
  • mobile Char
    readonly=True required=True states={'draft': [('readonly', False)]}
  • partner_id Many2one → res.partner
    readonly=True states={'draft': [('readonly', False)]} string='Partner' args: 'res.partner'
  • state Selection
    default='draft' readonly=True selection=[('draft', 'Queued'), ('sent', 'Sent'), ('cancel', 'Cancel'), ('error', 'Error')] string='Message Status'
Public methods (4)
  • cancel(self)
    @api.multi
  • onchange_partner_id(self)
    @api.onchange('partner_id')
  • retry(self)
    @api.multi
  • send(self)
    @api.multi

New fields (10)
  • classes Selection
    help='The sms class: flash(0),phone display(1),SIM(2),toolkit(3)' args: [('0', 'Flash'), ('1', 'Phone display'), ('2', 'SIM'), ('3', 'Toolkit')]
  • coding Selection
    help='The sms coding: 1 for 7 bit or 2 for unicode' args: [('1', '7 bit'), ('2', 'Unicode')]
  • deferred Integer
    help='The time -in minute(s)- to wait before sending the message'
  • gateway_id Many2one → sms.gateway
    default=_default_get_gateway required=True args: 'sms.gateway'
  • message Text
    required=True
  • nostop Boolean
    help='Do not display STOP clause in the message, this requires that this is not an advertising message'
  • partner_ids Many2many → res.partner
    default=_default_get_partner args: 'res.partner'
  • priority Selection
    help='The priority of the message' args: [('0', '0'), ('1', '1'), ('2', '2'), ('3', '3')]
  • tag Char
    help='An optional tag' size=256
  • validity Integer
    help='The maximum time -in minute(s)- before the message is dropped'
Public methods (2)
  • onchange_gateway_mass(self)
    @api.onchange('gateway_id')
  • send(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/connector-telephony
GIT
GIThttps://github.com/OCA/connector-telephony.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/connector-telephony/tree/10.0/base_sms_client
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYPhone
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Akretion, Julius Network Solutions, SYLEAM
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Akretion, Julius Network Solutions, SYLEAM
COMMITTERS
COMMITTERSOCA Transbot, oca-travis, Weblate, OCA-git-bot, Wolfgang Pichler, MonsieurB
WEBSITE
WEBSITEhttp://julius.fr
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:55
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/connector-telephony:
    - base_phone
OCA/server-tools:
    - keychain
odoo/odoo:
    - mail
    - base
    - base_setup
    - web_kanban
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES phonenumbers
cryptography
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (7)
XML IDNameModelTypeStatus
email_template_form mail.template.form mail.template field Inherits mail.email_template_form
sms_gateway_form sms.gateway form New
sms_gateway_tree sms.gateway tree New
sms_sms_form sms.sms form New
sms_sms_tree sms.sms tree New
view_server_statistics_graph ir.actions.server page Inherits base.view_server_action_form
view_wizard_mass_sms wizard.mass.sms form New
Models touched (6)

New fields (4)
  • mobile Char
    help='Field to be used to fetch the mobile number, e.g. you select the invoice model and `object.invoice_address_id.mobile` will be the field providing the correct mobile number.' string='Mobile No'
  • sms Char
    size=160 string='SMS' translate=True
  • sms_server_id Many2one → sms.gateway
    comodel_name='sms.gateway' help='Select the SMS Gateway configuration to use with this action.' string='SMS Server'
  • sms_template_id Many2one → mail.template
    comodel_name='mail.template' help='Select the SMS Template configuration to use with this action.' string='SMS Template'
Public methods (0)

No public methods.

New fields (3)
  • gateway_id Many2one → sms.gateway
    args: 'sms.gateway', 'SMS Gateway'
  • mobile_to Char
    args: 'To (Mobile)'
  • sms_template Boolean
    args: 'SMS Template'
Public methods (0)

No public methods.

New fields (12)
  • body Text
    help='The message text that will be send along with the email which is send through this server.' string='Message'
  • char_limit Integer
    default=160 string='Character Limit'
  • classes Selection
    default='1' help='The SMS class' selection=CLASSES_LIST string='Class'
  • code Char
    args: 'Verification Code'
  • coding Selection
    default='1' help='The SMS coding: 1 for 7 bit (160 chracters maxlength) or 2 for unicode (70 characters maxlength)' selection=[('1', '7 bit'), ('2', 'Unicode')] string='Coding'
  • company_id Many2one → res.company
    comodel_name='res.company'
  • default_gateway Boolean
  • deferred Integer
    help='The time -in minute(s)- to wait before sending the message.'
  • nostop Boolean
    default=True help='Do not display STOP clause in the message, this requires that this is not an advertising message.'
  • priority Selection
    default='3' help='The priority of the message' selection=PRIORITY_LIST string='Priority'
  • tag Char
    help='an optional tag' args: 'Tag'
  • validity Integer
    default=10 help='The maximum time - in minute(s) - before the message is dropped.'
Public methods (0)

No public methods.

New fields (6)
  • from_provider Char
    string='From'
  • method Selection
    selection=[] string='API Method'
  • name Char
    required=True string='Gateway Name'
  • state Selection
    default='new' index=True readonly=True selection=[('new', 'Not Verified'), ('waiting', 'Waiting for Verification'), ('confirm', 'Verified')] string='Gateway Status'
  • url Char
    help='Base url for message' string='Gateway URL'
  • user_ids Many2many → res.users
    comodel_name='res.users' string='Users Allowed to use the gateway'
Public methods (0)

No public methods.

New fields (6)
  • error Text
    readonly=True size=256 states={'draft': [('readonly', False)]} string='Last Error'
  • gateway_id Many2one → sms.gateway
    comodel_name='sms.gateway' readonly=True states={'draft': [('readonly', False)]} string='SMS Gateway'
  • message Text
    readonly=True required=True size=256 states={'draft': [('readonly', False)]}
  • mobile Char
    readonly=True required=True states={'draft': [('readonly', False)]}
  • partner_id Many2one → res.partner
    readonly=True states={'draft': [('readonly', False)]} string='Partner' args: 'res.partner'
  • state Selection
    default='draft' readonly=True selection=[('draft', 'Queued'), ('sent', 'Sent'), ('cancel', 'Cancel'), ('error', 'Error')] string='Message Status'
Public methods (4)
  • cancel(self)
    @api.multi
  • onchange_partner_id(self)
    @api.onchange('partner_id')
  • retry(self)
    @api.multi
  • send(self)
    @api.multi

New fields (10)
  • classes Selection
    help='The sms class: flash(0),phone display(1),SIM(2),toolkit(3)' args: [('0', 'Flash'), ('1', 'Phone display'), ('2', 'SIM'), ('3', 'Toolkit')]
  • coding Selection
    help='The sms coding: 1 for 7 bit or 2 for unicode' args: [('1', '7 bit'), ('2', 'Unicode')]
  • deferred Integer
    help='The time -in minute(s)- to wait before sending the message'
  • gateway_id Many2one → sms.gateway
    default=_default_get_gateway required=True args: 'sms.gateway'
  • message Text
    required=True
  • nostop Boolean
    help='Do not display STOP clause in the message, this requires that this is not an advertising message'
  • partner_ids Many2many → res.partner
    default=_default_get_partner args: 'res.partner'
  • priority Selection
    help='The priority of the message' args: [('0', '0'), ('1', '1'), ('2', '2'), ('3', '3')]
  • tag Char
    help='An optional tag' size=256
  • validity Integer
    help='The maximum time -in minute(s)- before the message is dropped'
Public methods (2)
  • onchange_gateway_mass(self)
    @api.onchange('gateway_id')
  • send(self)
    @api.multi