예제 #1
0
def set_domain_default_backend_to_test_backend(domain):
    """
    Pass in the name of the domain to set the domain's default
    sms backend to be the test backend.
    """
    from corehq.apps.sms.models import SQLMobileBackend, SQLMobileBackendMapping
    test_backend = SQLMobileBackend.get_global_backend_by_name(
        SQLMobileBackend.SMS, 'MOBILE_BACKEND_TEST')
    if not test_backend:
        raise Exception("Expected MOBILE_BACKEND_TEST to be created")
    SQLMobileBackendMapping.set_default_domain_backend(domain, test_backend)
예제 #2
0
파일: util.py 프로젝트: dimagi/commcare-hq
def set_domain_default_backend_to_test_backend(domain):
    """
    Pass in the name of the domain to set the domain's default
    sms backend to be the test backend.
    """
    from corehq.apps.sms.models import SQLMobileBackend, SQLMobileBackendMapping

    test_backend = SQLMobileBackend.get_global_backend_by_name(SQLMobileBackend.SMS, "MOBILE_BACKEND_TEST")
    if not test_backend:
        raise Exception("Expected MOBILE_BACKEND_TEST to be created")
    SQLMobileBackendMapping.set_default_domain_backend(domain, test_backend)
예제 #3
0
def get_ivr_backend(recipient, verified_number=None, unverified_number=None):
    if verified_number and verified_number.ivr_backend_id:
        return SQLMobileBackend.load_by_name(SQLMobileBackend.IVR,
                                             verified_number.domain,
                                             verified_number.ivr_backend_id)
    else:
        phone_number = (verified_number.phone_number
                        if verified_number else unverified_number)
        phone_number = strip_plus(str(phone_number))
        prefixes = settings.IVR_BACKEND_MAP.keys()
        prefixes = sorted(prefixes, key=lambda x: len(x), reverse=True)
        for prefix in prefixes:
            if phone_number.startswith(prefix):
                return SQLMobileBackend.get_global_backend_by_name(
                    SQLMobileBackend.IVR, settings.IVR_BACKEND_MAP[prefix])
    return None
예제 #4
0
def ivr(request):
    """
    Kookoo invokes this view for its main communication with HQ.
    Point Kookoo's 'url' parameter here.
    """
    # Retrieve all parameters
    called_number = request.GET.get("called_number", None)
    outbound_sid = request.GET.get("outbound_sid", None)
    cid = request.GET.get(
        "cid", None)  # This is the caller id, format being 0..., not 91...
    sid = request.GET.get("sid", None)
    operator = request.GET.get("operator", None)
    circle = request.GET.get("circle", None)
    event = request.GET.get("event", None)
    data = request.GET.get("data", None)
    total_call_duration = request.GET.get("total_call_duration", None)

    phone_number = cid
    if phone_number is not None and phone_number.startswith("0"):
        phone_number = "91" + phone_number[1:]

    gateway_session_id = "KOOKOO-" + sid

    # Process the event
    if event == "NewCall":
        ivr_event = IVR_EVENT_NEW_CALL
    elif event == "GotDTMF":
        ivr_event = IVR_EVENT_INPUT
    elif event == "Disconnect":
        ivr_event = IVR_EVENT_DISCONNECT
    else:
        ivr_event = IVR_EVENT_DISCONNECT

    backend = SQLMobileBackend.get_global_backend_by_name(
        SQLMobileBackend.IVR, 'MOBILE_BACKEND_KOOKOO')
    with CriticalSection([gateway_session_id], timeout=300):
        result = incoming(phone_number,
                          gateway_session_id,
                          ivr_event,
                          backend=backend,
                          input_data=data,
                          duration=total_call_duration)
    return result
예제 #5
0
def get_ivr_backend(recipient, verified_number=None, unverified_number=None):
    if verified_number and verified_number.ivr_backend_id:
        return SQLMobileBackend.load_by_name(
            SQLMobileBackend.IVR,
            verified_number.domain,
            verified_number.ivr_backend_id
        )
    else:
        phone_number = (verified_number.phone_number if verified_number
            else unverified_number)
        phone_number = strip_plus(str(phone_number))
        prefixes = settings.IVR_BACKEND_MAP.keys()
        prefixes = sorted(prefixes, key=lambda x: len(x), reverse=True)
        for prefix in prefixes:
            if phone_number.startswith(prefix):
                return SQLMobileBackend.get_global_backend_by_name(
                    SQLMobileBackend.IVR,
                    settings.IVR_BACKEND_MAP[prefix]
                )
    return None
예제 #6
0
def ivr(request):
    """
    Kookoo invokes this view for its main communication with HQ.
    Point Kookoo's 'url' parameter here.
    """
    # Retrieve all parameters
    called_number = request.GET.get("called_number", None)
    outbound_sid = request.GET.get("outbound_sid", None)
    cid = request.GET.get("cid", None) # This is the caller id, format being 0..., not 91...
    sid = request.GET.get("sid", None)
    operator = request.GET.get("operator", None)
    circle = request.GET.get("circle", None)
    event = request.GET.get("event", None)
    data = request.GET.get("data", None)
    total_call_duration = request.GET.get("total_call_duration", None)
    
    phone_number = cid
    if phone_number is not None and phone_number.startswith("0"):
        phone_number = "91" + phone_number[1:]
    
    gateway_session_id = "KOOKOO-" + sid
    
    # Process the event
    if event == "NewCall":
        ivr_event = IVR_EVENT_NEW_CALL
    elif event == "GotDTMF":
        ivr_event = IVR_EVENT_INPUT
    elif event == "Disconnect":
        ivr_event = IVR_EVENT_DISCONNECT
    else:
        ivr_event = IVR_EVENT_DISCONNECT

    backend = SQLMobileBackend.get_global_backend_by_name(
        SQLMobileBackend.IVR,
        'MOBILE_BACKEND_KOOKOO'
    )
    with CriticalSection([gateway_session_id], timeout=300):
        result = incoming(phone_number, gateway_session_id, ivr_event,
            backend=backend, input_data=data, duration=total_call_duration)
    return result