def process_incoming_message(*args, **kwargs): try: from corehq.messaging.smsbackends.telerivet.views import TELERIVET_INBOUND_FIELD_MAP fields = {a: kwargs[a] for (a, b) in TELERIVET_INBOUND_FIELD_MAP} log = IncomingRequest(**fields) log.save() except Exception as e: notify_exception(None, "Could not save Telerivet log entry") pass backend = TelerivetBackend.by_webhook_secret(kwargs["secret"]) if backend is None: # Ignore the message if the webhook secret is not recognized return if kwargs["from_number_e164"]: from_number = strip_plus(kwargs["from_number_e164"]) else: from_number = strip_plus(kwargs["from_number"]) if kwargs["event"] == EVENT_INCOMING: if kwargs["message_type"] == MESSAGE_TYPE_SMS: incoming_sms(from_number, kwargs["content"], TelerivetBackend.get_api_id()) elif kwargs["message_type"] == MESSAGE_TYPE_CALL: incoming_ivr(from_number, None, "TELERIVET-%s" % kwargs["message_id"], None)
def clean_webhook_secret(self): # Circular import from corehq.messaging.smsbackends.telerivet.models import TelerivetBackend value = self.cleaned_data.get("webhook_secret", None) backend = TelerivetBackend.by_webhook_secret(value) if backend is not None and backend._id != self._cchq_backend_id: raise ValidationError(_("Already in use.")) return value