This commit is contained in:
gsinghpal
2026-02-25 09:40:41 -05:00
parent 0e1aebe60b
commit e71bc503f9
69 changed files with 7537 additions and 82 deletions

View File

@@ -376,6 +376,34 @@ class RcConfig(models.Model):
"""Return the first connected config, or False."""
return self.search([('state', '=', 'connected')], limit=1)
def _send_sms(self, to_number, message_text, from_number=None):
"""Send an SMS via the RingCentral REST API.
:param str to_number: Recipient phone number (E.164 format).
:param str message_text: SMS body (max 1000 characters).
:param str from_number: Sender phone number. Defaults to the
company phone configured in Odoo.
:return: API response dict.
:raises UserError: If the RingCentral config is not connected.
"""
self.ensure_one()
if not from_number:
from_number = self.env.company.phone
if not from_number:
raise UserError(
_('No sender phone number configured. Set a phone number '
'on your company or pass from_number explicitly.')
)
payload = {
'to': [{'phoneNumber': to_number}],
'from': {'phoneNumber': from_number},
'text': message_text[:1000],
}
return self._api_post(
'/restapi/v1.0/account/~/extension/~/sms',
data=payload,
)
def action_rematch_contacts(self):
"""Re-run contact matching on all calls without a linked partner."""
self.ensure_one()