Ejemplo n.º 1
0
def process_incoming_message(*args, **kwargs):
    try:
        from corehq.apps.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)
Ejemplo n.º 2
0
def sms_in(request):
    """
    Handles tropo messaging requests
    """
    if request.method == "POST":
        data = json.loads(request.body)
        session = data["session"]
        # Handle when Tropo posts to us to send an SMS
        if "parameters" in session:
            params = session["parameters"]
            if ("_send_sms" in params) and ("numberToDial"
                                            in params) and ("msg" in params):
                numberToDial = params["numberToDial"]
                msg = params["msg"]
                t = Tropo()
                t.call(to=numberToDial, network="SMS")
                t.say(msg)
                return HttpResponse(t.RenderJson())
        # Handle incoming SMS
        phone_number = None
        text = None
        if "from" in session:
            phone_number = session["from"]["id"]
        if "initialText" in session:
            text = session["initialText"]
        if phone_number is not None and len(phone_number) > 1:
            if phone_number[0] == "+":
                phone_number = phone_number[1:]
        incoming_sms(phone_number, text, TropoBackend.get_api_id())
        t = Tropo()
        t.hangup()
        return HttpResponse(t.RenderJson())
    else:
        return HttpResponseBadRequest("Bad Request")
Ejemplo n.º 3
0
    def obj_create(self, bundle, request=None, **kwargs):
        bundle = self.full_hydrate(bundle)

        if bundle.obj.is_complete:
            incoming_sms(bundle.obj.phonenumber, bundle.obj.text, GrapevineBackend.get_api_id())

        return bundle
Ejemplo n.º 4
0
def sms_in(request):
    """
    Handles tropo messaging requests
    """
    if request.method == "POST":
        data = json.loads(request.body)
        session = data["session"]
        # Handle when Tropo posts to us to send an SMS
        if "parameters" in session:
            params = session["parameters"]
            if ("_send_sms" in params) and ("numberToDial" in params) and ("msg" in params):
                numberToDial = params["numberToDial"]
                msg = params["msg"]
                t = Tropo()
                t.call(to = numberToDial, network = "SMS")
                t.say(msg)
                return HttpResponse(t.RenderJson())
        # Handle incoming SMS
        phone_number = None
        text = None
        if "from" in session:
            phone_number = session["from"]["id"]
        if "initialText" in session:
            text = session["initialText"]
        if phone_number is not None and len(phone_number) > 1:
            if phone_number[0] == "+":
                phone_number = phone_number[1:]
        incoming_sms(phone_number, text, SQLTropoBackend.get_api_id())
        t = Tropo()
        t.hangup()
        return HttpResponse(t.RenderJson())
    else:
        return HttpResponseBadRequest("Bad Request")
Ejemplo n.º 5
0
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 = SQLTelerivetBackend.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:
            domain_scope = backend.domain if not backend.is_global else None
            incoming_sms(from_number,
                         kwargs["content"],
                         SQLTelerivetBackend.get_api_id(),
                         domain_scope=domain_scope,
                         backend_id=backend.couch_id)
        elif kwargs["message_type"] == MESSAGE_TYPE_CALL:
            incoming_ivr(from_number, "TELERIVET-%s" % kwargs["message_id"],
                         None)
Ejemplo n.º 6
0
    def post(self, request, api_key, *args, **kwargs):
        request_body = json.loads(request.body)
        media_urls = []
        for message in request_body.get('results'):
            message_sid = message.get('messageId')
            from_ = message.get('from')
            message_content = message.get('message')
            if message_content.get('type') == 'TEXT':
                body = message_content.get('text', '')
            elif message_content.get('type') in ['IMAGE', 'AUDIO', 'VIDEO', 'DOCUMENT']:
                body = message_content.get('caption', '')
                media_url = message_content.get('url', None)
                if media_url:
                    media_urls.append(media_url)

            incoming_sms(
                from_,
                body,
                InfobipBackend.get_api_id(),
                backend_message_id=message_sid,
                domain_scope=self.domain,
                backend_id=self.backend_couch_id,
                media_urls=media_urls
            )
        return HttpResponse("")
Ejemplo n.º 7
0
    def obj_create(self, bundle, request=None, **kwargs):
        bundle = self.full_hydrate(bundle)

        if bundle.obj.is_complete:
            incoming_sms(bundle.obj.phonenumber, bundle.obj.text,
                         SQLGrapevineBackend.get_api_id())

        return bundle
Ejemplo n.º 8
0
def process_incoming_message(*args, **kwargs):
    backend = TelerivetBackend.by_webhook_secret(kwargs["secret"])
    if backend is None:
        # Ignore the message if the webhook secret is not recognized
        return

    if kwargs["event"] == EVENT_INCOMING:
        if kwargs["message_type"] == MESSAGE_TYPE_SMS:
            incoming_sms(kwargs["from_number"], kwargs["content"], TelerivetBackend.get_api_id())
Ejemplo n.º 9
0
def sms_in(request):
    pid = request.GET.get("pid", None)
    msg = request.GET.get("msg", None)
    cel = request.GET.get("cel", None)
    tcs = request.GET.get("tcs", None)

    phone_number = "%s%s" % ("63", cel)
    incoming_sms(phone_number, msg, SQLMegamobileBackend.get_api_id())
    return HttpResponse("")
Ejemplo n.º 10
0
def sms_in(request, backend_id=None):
    dest = request.GET.get("dest")
    sender = request.GET.get("sender")
    message = request.GET.get("message")
    incoming_sms(sender,
                 message,
                 SQLYoBackend.get_api_id(),
                 backend_id=backend_id)
    return HttpResponse("OK")
Ejemplo n.º 11
0
def sms_in(request):
    pid = request.GET.get("pid", None)
    msg = request.GET.get("msg", None)
    cel = request.GET.get("cel", None)
    tcs = request.GET.get("tcs", None)

    megamobile_attrs = {"megamobile_pid": pid, "megamobile_tcs": tcs}

    phone_number = "%s%s" % ("63", cel)
    incoming_sms(phone_number, msg, MegamobileBackend.get_api_id(), backend_attributes=megamobile_attrs)
    return HttpResponse("")
Ejemplo n.º 12
0
def sms_in(request):
    if request.method == "POST":
        message_sid = request.POST.get("MessageSid")
        account_sid = request.POST.get("AccountSid")
        from_ = request.POST.get("From")
        to = request.POST.get("To")
        body = request.POST.get("Body")
        incoming_sms(from_, body, TwilioBackend.get_api_id(), backend_message_id=message_sid)
        return HttpResponse(EMPTY_RESPONSE)
    else:
        return HttpResponseBadRequest("POST Expected")
Ejemplo n.º 13
0
 def post(self, request, api_key, *args, **kwargs):
     message_sid = request.POST.get('MessageSid')
     from_ = SQLTwilioBackend.convert_from_whatsapp(
         request.POST.get('From'))
     body = request.POST.get('Body')
     incoming_sms(from_,
                  body,
                  SQLTwilioBackend.get_api_id(),
                  backend_message_id=message_sid,
                  domain_scope=self.domain,
                  backend_id=self.backend_couch_id)
     return HttpResponse(EMPTY_RESPONSE)
Ejemplo n.º 14
0
 def post(self, request, api_key, *args, **kwargs):
     message_sid = request.POST.get('MessageSid')
     account_sid = request.POST.get('AccountSid')
     from_ = request.POST.get('From')
     to = request.POST.get('To')
     body = request.POST.get('Body')
     incoming_sms(from_,
                  body,
                  SQLTwilioBackend.get_api_id(),
                  backend_message_id=message_sid,
                  backend_id=self.backend_couch_id)
     return HttpResponse(EMPTY_RESPONSE)
Ejemplo n.º 15
0
def sms_in(request):
    pid = request.GET.get("pid", None)
    msg = request.GET.get("msg", None)
    cel = request.GET.get("cel", None)
    tcs = request.GET.get("tcs", None)

    phone_number = "%s%s" % ("63", cel)
    incoming_sms(
        phone_number,
        msg,
        SQLMegamobileBackend.get_api_id()
    )
    return HttpResponse("")
Ejemplo n.º 16
0
def sms_in(request):
    """
    sender - the number of the person sending the sms
    receiver - the number the sms was sent to
    msgdata - the message
    """
    sender = request.GET.get("sender", None)
    receiver = request.GET.get("receiver", None)
    msgdata = request.GET.get("msgdata", None)
    if sender is None or msgdata is None:
        return HttpResponse(status=400)
    else:
        incoming_sms(sender, msgdata, "SISLOG")
        return HttpResponse()
Ejemplo n.º 17
0
def sms_in(request):
    """
    sender - the number of the person sending the sms
    receiver - the number the sms was sent to
    msgdata - the message
    """
    sender = request.GET.get("sender", None)
    receiver = request.GET.get("receiver", None)
    msgdata = request.GET.get("msgdata", None)
    if sender is None or msgdata is None:
        return HttpResponse(status=400)
    else:
        incoming_sms(sender, msgdata, "SISLOG")
        return HttpResponse()
Ejemplo n.º 18
0
 def post(self, request, api_key, *args, **kwargs):
     message_sid = request.POST.get('MessageSid')
     account_sid = request.POST.get('AccountSid')
     from_ = request.POST.get('From')
     to = request.POST.get('To')
     body = request.POST.get('Body')
     incoming_sms(
         from_,
         body,
         SQLTwilioBackend.get_api_id(),
         backend_message_id=message_sid,
         backend_id=self.backend_couch_id
     )
     return HttpResponse(EMPTY_RESPONSE)
Ejemplo n.º 19
0
def sms_in(request):
    """
    sender - the number of the person sending the sms
    receiver - the number the sms was sent to
    msgdata - the message
    """
    sender = request.GET.get("sender", None)
    receiver = request.GET.get("receiver", None)
    msgdata = request.GET.get("msgdata", None)
    if sender is None or msgdata is None:
        return HttpResponse(status=400)
    else:
        cleaned_text = convert_raw_string(msgdata)
        incoming_sms(sender, cleaned_text, "SISLOG", raw_text=msgdata)
        return HttpResponse()
Ejemplo n.º 20
0
def sms_in(request):
    """
    sender - the number of the person sending the sms
    receiver - the number the sms was sent to
    msgdata - the message
    """
    sender = request.GET.get("sender", None)
    receiver = request.GET.get("receiver", None)
    msgdata = request.GET.get("msgdata", None)
    if sender is None or msgdata is None:
        return HttpResponse(status=400)
    else:
        cleaned_text = convert_raw_string(msgdata)
        incoming_sms(sender, cleaned_text, "SISLOG", raw_text=msgdata)
        return HttpResponse()
Ejemplo n.º 21
0
def sms_in(request, backend_id=None):
    """
    sender - the number of the person sending the sms
    receiver - the number the sms was sent to
    msgdata - the message
    """
    sender = request.GET.get("sender", None)
    receiver = request.GET.get("receiver", None)
    msgdata = request.GET.get("msgdata", None)
    if sender is None or msgdata is None:
        return HttpResponse(status=400)
    else:
        cleaned_text = convert_raw_string(msgdata)
        incoming_sms(sender, cleaned_text, SQLSislogBackend.get_api_id(), raw_text=msgdata, backend_id=backend_id)
        return HttpResponse()
Ejemplo n.º 22
0
def sms_in(request):
    if request.method == "POST":
        message_sid = request.POST.get("MessageSid")
        account_sid = request.POST.get("AccountSid")
        from_ = request.POST.get("From")
        to = request.POST.get("To")
        body = request.POST.get("Body")
        incoming_sms(
            from_,
            body,
            TwilioBackend.get_api_id(),
            backend_message_id=message_sid
        )
        return HttpResponse(EMPTY_RESPONSE)
    else:
        return HttpResponseBadRequest("POST Expected")
Ejemplo n.º 23
0
    def post(self, request, api_key, *args, **kwargs):
        request_body = json.loads(request.body)
        for message in request_body.get('results'):
            message_sid = message.get('messageId')
            from_ = message.get('from')
            message_content = message.get('message')
            if message_content.get('type') == 'TEXT':
                body = message_content.get('text', {})
            # TODO: Add other message types here

        incoming_sms(from_,
                     body,
                     SQLInfobipBackend.get_api_id(),
                     backend_message_id=message_sid,
                     domain_scope=self.domain,
                     backend_id=self.backend_couch_id)
        return HttpResponse("")
Ejemplo n.º 24
0
def sms_in(request):
    pid = request.GET.get("pid", None)
    msg = request.GET.get("msg", None)
    cel = request.GET.get("cel", None)
    tcs = request.GET.get("tcs", None)

    megamobile_attrs = {
        "megamobile_pid": pid,
        "megamobile_tcs": tcs,
    }

    phone_number = "%s%s" % ("63", cel)
    incoming_sms(phone_number,
                 msg,
                 MegamobileBackend.get_api_id(),
                 backend_attributes=megamobile_attrs)
    return HttpResponse("")
Ejemplo n.º 25
0
def process_incoming_message(*args, **kwargs):
    backend = TelerivetBackend.by_webhook_secret(kwargs["secret"])
    if backend is None:
        # Ignore the message if the webhook secret is not recognized
        return

    from_number = strip_plus(kwargs["from_number"])
    if backend.country_code:
        if not from_number.startswith(backend.country_code):
            from_number = "%s%s" % (backend.country_code, 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)
Ejemplo n.º 26
0
    def post(self, request, api_key, *args, **kwargs):
        request_body = json.loads(request.body)
        for message in request_body.get('messages', []):
            message_id = message.get('id')
            from_ = message.get('from')
            if message.get('type') == 'text':
                body = message.get('text', {}).get('body')
            elif message.get('type') == 'image':
                body = message.get('image', {}).get(
                    'caption')  # this doesn't seem to work yet

            incoming_sms(from_,
                         body,
                         SQLTurnWhatsAppBackend.get_api_id(),
                         backend_message_id=message_id,
                         domain_scope=self.domain,
                         backend_id=self.backend_couch_id)
        return HttpResponse("")
Ejemplo n.º 27
0
 def post(self, request, api_key, *args, **kwargs):
     request_body = json.loads(request.body)
     message = request_body.get('Message')
     subscribe_url = request_body.get('SubscribeURL')
     if subscribe_url:
         urlopen(subscribe_url)
     elif message:
         message = json.loads(message)
         message_sid = message.get('inboundMessageId')
         from_ = message.get('originationNumber')
         body = message.get('messageBody')
         incoming_sms(from_,
                      body,
                      PinpointBackend.get_api_id(),
                      backend_message_id=message_sid,
                      domain_scope=self.domain,
                      backend_id=self.backend_couch_id)
     return HttpResponse("")
Ejemplo n.º 28
0
def sms_in(request, backend_id=None):
    """
    sender - the number of the person sending the sms
    receiver - the number the sms was sent to
    msgdata - the message
    """
    sender = request.GET.get("sender", None)
    receiver = request.GET.get("receiver", None)
    msgdata = request.GET.get("msgdata", None)
    if sender is None or msgdata is None:
        return HttpResponse(status=400)
    else:
        cleaned_text = convert_raw_string(msgdata)
        incoming_sms(sender,
                     cleaned_text,
                     SQLSislogBackend.get_api_id(),
                     raw_text=msgdata,
                     backend_id=backend_id)
        return HttpResponse()
Ejemplo n.º 29
0
def incoming_message(request):
    event = request.POST.get("event")
    message_id = request.POST.get("id")
    message_type = request.POST.get("message_type")
    from_number = request.POST.get("from_number")
    contact_id = request.POST.get("contact_id")
    phone_id = request.POST.get("phone_id")
    to_number = request.POST.get("to_number")
    time_created = request.POST.get("time_created")
    time_sent = request.POST.get("time_sent")
    content = request.POST.get("content")
    project_id = request.POST.get("project_id")
    secret = request.POST.get("secret")
    
    backend = TelerivetBackend.by_webhook_secret(secret)
    if backend is None:
        return HttpResponse(status=404)
    
    if event == EVENT_INCOMING:
        if message_type == MESSAGE_TYPE_SMS:
            incoming_sms(from_number, content, TelerivetBackend.get_api_id())
    
    return HttpResponse()
Ejemplo n.º 30
0
def sms_in(request):
    dest = request.GET.get("dest")
    sender = request.GET.get("sender")
    message = request.GET.get("message")
    incoming_sms(sender, message, "YO")
    return HttpResponse("OK")
Ejemplo n.º 31
0
def sms_in(request, backend_id=None):
    dest = request.GET.get("dest")
    sender = request.GET.get("sender")
    message = request.GET.get("message")
    incoming_sms(sender, message, SQLYoBackend.get_api_id(), backend_id=backend_id)
    return HttpResponse("OK")
Ejemplo n.º 32
0
def incoming_sms_async(phone_number, text, backend_api):
    incoming_sms(phone_number, text, backend_api)
Ejemplo n.º 33
0
def sms_in(request):
    dest = request.GET.get("dest")
    sender = request.GET.get("sender")
    message = request.GET.get("message")
    incoming_sms(sender, message, "YO")
    return HttpResponse("OK")