Ejemplo n.º 1
0
def make_outbound_call():
    phone_number = request.form['Digits']
    response = VoiceResponse()
    dial = Dial(record=True, recording_status_callback='/recording/callback', recording_status_callback_event='completed')
    dial.number(f"+{phone_number}", url='/seek/consent')
    response.append(dial)
    return str(response)
Ejemplo n.º 2
0
def incoming_call():
    response = VoiceResponse()
    dial = Dial()
    incoming_number = request.values.get('From')
    msg = f'Incoming call from {incoming_number}'
    print(msg)
    msg_attachments = [{
        'color': 'danger',
        'title': 'Incoming Call',
        'fallback': msg,
        'text': f'From *{incoming_number}*',
        "mrkdwn_in": ["text", "pretext"],
    }]
    send_slack_message(f'<!channel>', msg_attachments)
    status_url = url_for('call_status',
                         _external=True,
                         _scheme=get_http_scheme())

    for number in get_hotline_numbers():
        dial.number(
            number,
            status_callback_event='initiated ringing answered completed',
            status_callback_method='POST',
            status_callback=status_url,
        )

    response.append(dial)

    return Response(str(response), 200, mimetype="application/xml")
Ejemplo n.º 3
0
def call(resp):

    dial = Dial()
    numbers = parse_NUMBERS(secret)
    for number in numbers:
        dial.number(number)
    resp.append(dial)
Ejemplo n.º 4
0
def call():
    """Returns TwiML instructions to Twilio's POST requests"""
    response = VoiceResponse()
    number = ""
    zipCode = ""
    dict = request.form
    for value in dict:
        if dict[value].startswith('number'):
            number = dict[value].split(":")[-1]
        if dict[value].startswith('zipCode'):
            zipCode = dict[value].split(":")[-1]
    phone_number = number  # or default_client
    zip_code = zipCode
    print(phone_number)
    print(zip_code)
    # undecoded_phone = number
    # base64_bytes = undecoded_phone.encode('ascii')
    # message_bytes = base64.b64decode(base64_bytes)
    # phone_number = str(decrypt(message_bytes, FERNET_KEY)).replace("b'","").replace("'","")
    dial = Dial(callerId=NUMBERS_OUTBOUND)
    try:
        dial.number(numberVerify(zip_code, phone_number)['number'])
    except:
        dial.number(NUMBERS_OUTBOUND)
    return str(response.append(dial))
Ejemplo n.º 5
0
def outbound(request):
    if request.method == "POST":
        response = VoiceResponse()
        dial = Dial()
        dial.number(getattr(settings, 'TO_BE_CONNECTED_TO'))
        response.say("This is your new Copyfighters overlords.", voice='alice')
        response.append(dial)
        return HttpResponse(response)
    return HttpResponseRedirect('/')
Ejemplo n.º 6
0
def auto_call():

    # Get Emergency Service for location


    # Dial number (Would be emergency service)
    response = VoiceResponse()
    dial = Dial()
    dial.number('470-705-7212')
    response.append(dial)
    print(response)

    # Get pickup status
    response = VoiceResponse()
    response.dial('415-123-4567', action='/handleDialCallStatus', method='GET')
    response.say('I am unreachable')
    # Twilio will submit a request to the action URL with the parameter 'DialCallStatus'.
    # If nobody picks up, 'DialCallStatus' will be 'no-answer'.
    # If the line is busy, 'DialCallStatus' will be 'busy'.
    # If the called party picks up, 'DialCallStatus' will be 'completed'.
    # If a conference is successfully dialed, 'DialCallStatus' will be 'answered'.
    # If an invalid phone number was provided, 'DialCallStatus' will be 'failed'.

    print(response)

    # Automated Voice Intro = "(person's name)"

    # Get information from Smart911Connect Account
    # http://www.smart911connect.com/get-access/
    # Development Block :(
    # no free APIs that send medical info to Emergency Services, however they all return JSON
    # Use Mongoose, JSON -> DB -> JSON

    # Get information as JSON - Python NamedTuple -> String

    # Feed into IBM Watson
    import json
    from watson_developer_cloud import DialogV1 as Dialog

    dialog = Dialog(username='******', password='******')
    dialog_id = 'YOUR_DIALOGID'
    conversation = dialog.conversation(dialog_id)
    client_id = conversation['client_id']
    print dialog.update_profile(dialog_id=dialog_id, client_id=client_id,
                                name_values={"name_values": [{"name": "Product_Name", "value": "Sunglasses"}]})
    print dialog.update_profile(dialog_id=dialog_id, client_id=client_id,
                                name_values=[{"name": "Product_Name", "value": "Sunglasses"}])


    # Operator Interface with Twilio





    return
Ejemplo n.º 7
0
 def dial_phone(self, outbound_dial):
     # Creates call to user_number then dials outbound_dial
     call = self.client.calls.create(
         url=self.twiml_file,
         to=self.config_save.get_user_number(),
         from_=self.config_save.get_twilio_number())
     response = VoiceResponse()
     dial = Dial(url='xml/callinfo.xml')
     dial.number(outbound_dial)
     response.append(dial)
Ejemplo n.º 8
0
def dial(numbers, flavor=''):
    response = VoiceResponse()
    for num in numbers:
        dial = Dial()
        dial.number(num)
        response.append(dial)

    if flavor:
        response.say(flavor, voice='woman', language='en')

    return str(response)
Ejemplo n.º 9
0
def perform_call(number, caller_id=None):
    response = VoiceResponse()
    d = Dial()
    if number == PRIVATE_NUMBER:
        p = Play("http://phone.ehnerd.com/music/intro.wav")
        response.append(p)
        d.number(number, url="/callscreen")
    else:
        d.number(number)
    response.append(d)
    return str(response)
Ejemplo n.º 10
0
def call_reply():
    phone_numbers_list = db.session.query(Contact).filter(
        Contact.number == request.form["From"]).first().contacts.split(',')
    db.session.remove()
    print(phone_numbers_list, file=sys.stderr)
    response = VoiceResponse()
    dial = Dial()
    for number in phone_numbers_list:
        dial.number(number)
    response.append(dial)
    return str(response)
Ejemplo n.º 11
0
def twilio_dial_number(number):
    if not "accept" in request.values.get("SpeechResult","accept").lower():
        response = VoiceResponse()
        response.reject()
        return str(response)
    response = VoiceResponse()
    dial = Dial(answerOnBridge=True)
    dial.number(number)
    response.append(dial)
    response.hangup()
    return str(response)
Ejemplo n.º 12
0
    def generate_twilio_dial_response(self, from_number: str, to_number: str):
        """Generates voice call instructions to forward the call to agents Phone.
		"""
        resp = VoiceResponse()
        dial = Dial(
            caller_id=from_number,
            record=self.settings.record_calls,
            recording_status_callback=self.get_recording_status_callback_url(),
            recording_status_callback_event='completed')
        dial.number(to_number)
        resp.append(dial)
        return resp
Ejemplo n.º 13
0
    def test_add_number(self):
        """ add a number to a dial """
        d = Dial()
        d.number('1231231234')

        r = VoiceResponse()
        r.append(d)

        assert_equal(
            self.strip(r),
            '<?xml version="1.0" encoding="UTF-8"?><Response><Dial><Number>1231231234</Number></Dial></Response>'
        )
Ejemplo n.º 14
0
    def generate_twilio_dial_response(self, from_number: str, to_number: str):
        """Generates voice call instructions needed for twilio.
		"""
        url_path = "/api/method/twilio_integration.twilio_integration.api.update_recording_info"
        recording_status_callback = get_public_url(url_path)

        resp = VoiceResponse()
        dial = Dial(caller_id=from_number,
                    record=self.settings.record_calls,
                    recording_status_callback=recording_status_callback,
                    recording_status_callback_event='completed')
        dial.number(to_number)
        resp.append(dial)
        return resp
Ejemplo n.º 15
0
def call(request):
    """Returns TwiML instructions to Twilio's POST requests"""
    response = Dial(caller_id=settings.TWILIO_NUMBER)

    # If the browser sent a phoneNumber param, we know this request
    # is a support agent trying to call a customer's phone
    if 'phoneNumber' in request.POST:
        response.number(request.POST['phoneNumber'])
    else:
        # Otherwise we assume this request is a customer trying
        # to contact support from the home page
        response.client('support_agent')

    return HttpResponse(str(response))
Ejemplo n.º 16
0
def call():
    numbers = ['720-938-7168', '774-232-6921', '513-675-5664', '310-502-9285']
    response = VoiceResponse()
    caller = request.values['From']
    if not validateNumber(caller):
        response.reject()
    else:
        response.say('Thank you for calling LikeWallet!  Please remain on the line and the next available representative will assist you.', voice='woman', language='en')
        dial = Dial()
        for number in numbers:
            dial.number(number)
            response.append(dial)

    return str(response)
Ejemplo n.º 17
0
    def test_add_number_status_callback_event(self):
        """ add a number to a dial with status callback events"""
        d = Dial()
        d.number('1231231234',
                 status_callback='http://example.com',
                 status_callback_event='initiated completed')

        r = VoiceResponse()
        r.append(d)

        assert_equal(
            self.strip(r),
            '<?xml version="1.0" encoding="UTF-8"?><Response><Dial><Number statusCallback="http://example.com" statusCallbackEvent="initiated completed">1231231234</Number></Dial></Response>'
        )
Ejemplo n.º 18
0
def my_conference_line(request):
    response = VoiceResponse()
    dial = Dial()

    target_number = config('TARGET_NUMBER')
    number = Number(target_number)

    response.say(
        'Thank you for allowing TireTutor to make tire buying easier ' +
        'for you! Please wait while we connect you to your tire dealer now!')
    dial.number(target_number, url=CALL_WHISPER_URL, method='GET')
    response.append(dial)

    return HttpResponse(str(response))
Ejemplo n.º 19
0
def call():
    """Returns TwiML instructions to Twilio's POST requests"""
    response = VoiceResponse()

    dial = Dial(callerId=app.config['TWILIO_NUMBER'])
    # If the browser sent a phoneNumber param, we know this request
    # is a support agent trying to call a customer's phone
    if 'phoneNumber' in request.form:
        dial.number(request.form['phoneNumber'])
    else:
        # Otherwise we assume this request is a customer trying
        # to contact support from the home page
        dial.client('support_agent')

    return str(response.append(dial))
Ejemplo n.º 20
0
def call():
    """Returns TwiML instructions to Twilio's POST requests"""
    response = VoiceResponse()

    dial = Dial(callerId=app.config['TWILIO_NUMBER'])
    # If the browser sent a phoneNumber param, we know this request
    # is a support agent trying to call a customer's phone
    if 'phoneNumber' in request.form:
        dial.number(request.form['phoneNumber'])
    else:
        # Otherwise we assume this request is a customer trying
        # to contact support from the home page
        dial.client('support_agent')

    return str(response.append(dial))
Ejemplo n.º 21
0
def voice():
    resp = VoiceResponse()
    if "To" in request.form and request.form["To"] != '':
        dial = Dial(caller_id=os.environ['TWILIO_CALLER_ID'])
        # wrap the phone number or client name in the appropriate TwiML verb
        # by checking if the number given has only digits and format symbols
        if phone_pattern.match(request.form["To"]):
            dial.number(request.form["To"])
        else:
            dial.client(request.form["To"])
        resp.append(dial)
    else:
        resp.say("Thanks for calling!")

    return Response(str(resp), mimetype='text/xml')
Ejemplo n.º 22
0
def call():
    p.pprint(request.form)
    response = VoiceResponse()
    dial = Dial(callerId=twilio_number)

    if 'To' in request.form and request.form['To'] != twilio_number:
        print('outbound call')
        dial.number(request.form['To'])
    else:
        print('incoming call')
        caller = request.form['Caller']
        dial = Dial(callerId=caller)
        dial.client(twilio_number)

    return str(response.append(dial))
Ejemplo n.º 23
0
def voice(request):
    """Returns TwiML instructions to Twilio's POST requests"""
    resp = VoiceResponse()
    dial = Dial(caller_id='+6625088681')

    # If the browser sent a phoneNumber param, we know this request
    # is a support agent trying to call a customer's phone
    if 'phoneNumber' in request.POST:
        dial.number(request.POST['phoneNumber'])
    else:
        # Otherwise we assume this request is a customer trying
        # to contact support from the home page
        dial.client('support_agent')
    
    resp.append(dial)
    return HttpResponse(resp)
Ejemplo n.º 24
0
def get_voice_twiml():
    """Respond to incoming calls with a simple text message."""

    resp = VoiceResponse()
    if "To" in request.form:
        dial = Dial(callerId="+15017122661")
        # wrap the phone number or client name in the appropriate TwiML verb
        # by checking if the number given has only digits and format symbols
        if phone_pattern.match(request.form["To"]):
            dial.number(request.form["To"])
        else:
            dial.client(request.form["To"])
        resp.append(dial)
    else:
        resp.say("Thanks for calling!")

    return Response(str(resp), mimetype='text/xml')
def get_voice_twiml():
    """Respond to incoming calls with a simple text message."""

    resp = VoiceResponse()
    if "To" in request.form:
        dial = Dial(callerId="+15017250604")
        # wrap the phone number or client name in the appropriate TwiML verb
        # by checking if the number given has only digits and format symbols
        if phone_pattern.match(request.form["To"]):
            dial.number(request.form["To"])
        else:
            dial.client(request.form["To"])
        resp.append(dial)
    else:
        resp.say("Thanks for calling!")

    return Response(str(resp), mimetype='text/xml')
Ejemplo n.º 26
0
def twilio_call(matrix_id):
    twilio_client = util.getTwilioClient(matrix_id)
    direction = request.values['Direction']
    to_number = request.values['To']
    from_number = request.values['From']
    call_status = request.values["CallStatus"]
    forwarded_from = request.values.get("ForwardedFrom", None)
    json_config = util.getIncomingNumberConfig(matrix_id, to_number)
    url = util.getAppserviceAddress().rstrip('/') + urllib.parse.urlparse(request.url).path
    response = VoiceResponse()
    if direction == 'inbound':
        from_hunt_number = False
        for entry in json_config["hunt_numbers"]:
            if entry[0] == from_number or entry[0] == forwarded_from:
                from_hunt_number = True
                matching_hunt_number = entry[0]
                break

        loop_detected = False
        if from_hunt_number:
            ringing_calls = twilio_client.calls.list(status="ringing",to=matching_hunt_number,limit=2)
            queued_calls = twilio_client.calls.list(status="queued",to=matching_hunt_number,limit=2)
            for call in ringing_calls + queued_calls:
                loop_detected = True
                parent_call = twilio_client.calls(call.parent_call_sid).fetch()
                parent_call.update(url=util.adjustUrl(url,"voicemail-no-notify"))

        if json_config["hunt_enabled"] and not from_hunt_number:
            dial = Dial(action = util.adjustUrl(url,"voicemail"),timeout=json_config["hunt_timeout"],answerOnBridge=True)
            for pair in json_config["hunt_numbers"]:
                if pair[2] == "":
                    url = util.getAppserviceAddress() + "/twilio/check-accept"
                elif pair[2] == "key":
                    url = util.getAppserviceAddress() + "/twilio/check-key"
                elif pair[2] == "speech":
                    url = util.getAppserviceAddress() + "/twilio/check-speech"
                dial.number(pair[0], send_digits=pair[1], url=url)
            response.append(dial)
        elif not loop_detected:
            return twilio_voicemail(True)
        else:
            response.reject()
    return str(response)
Ejemplo n.º 27
0
def generate_call_agent(from_, agent_id, callback_url, is_sip=False):
    account_sid = ENV['TWILIO_ACCOUNT_SID']
    auth_token = ENV['TWILIO_AUTH_TOKEN']
    my_number = ENV['TWILIO_NUMBER']
    #from_ = my_number
    #from_ = my_number
    if 'sip:' in from_:
        from_numbers = from_.split(':')[1]
        from_ = from_numbers.split('@')[0]
    twiml_response = VoiceResponse()
    dial = Dial(caller_id=from_)
    if is_sip:
        dial.sip(agent_id)
    else:
        dial.number(agent_id)
    twiml_response.append(dial)
    res = str(twiml_response)
    print res
    return res
Ejemplo n.º 28
0
 def make_dialout_response(self,
                           *,
                           sim: str = None,
                           to: str = None,
                           from_: str = None) -> TwiML:
     """Dial a number."""
     response = VoiceResponse()
     if from_:
         dial = Dial(caller_id=f'+{from_}')
     else:
         dial = Dial()
     if sim:
         dial.sim(sim)
     elif to:
         dial.number(to)
     else:
         raise Exception("dialout response did not get anything to dial")
     response.append(dial)
     return str(response)
Ejemplo n.º 29
0
def voice():
    resp = VoiceResponse()
    add_ons = json.loads(request.values['AddOns'])
    if "To" in request.form and request.form["To"] != '':
        dial = Dial(
            caller_id=os.environ['TWILIO_CALLER_ID'],
            record='record-from-answer-dual',
            recording_status_callback='insertURL'
        )
        # wrap the phone number or client name in the appropriate TwiML verb
        # by checking if the number given has only digits and format symbols
        if phone_pattern.match(request.form["To"]):
            dial.number(request.form["To"])
        else:
            dial.client(request.form["To"])
        resp.append(dial)
    else:
        resp.say("Thanks for calling!")

    return Response(str(resp), mimetype='text/xml')
Ejemplo n.º 30
0
def handle_key(request):
    """Handle key press from a user."""

    # Get the digit pressed by the user
    digit_pressed = request.POST.get('Digits', '')
    if digit_pressed == "1":

        resp = VoiceResponse()
        dial = Dial()
        dial.number('516-640-7250')
        resp.append(dial)

        return HttpResponse(str(resp))

    elif digit_pressed == "2":

        resp = VoiceResponse()
        resp.say("Record your message after the tone.")
        resp.record(maxLength="30", action="/phone/ring/handle_recording/")
        return HttpResponse(str(resp))
Ejemplo n.º 31
0
from twilio.twiml.voice_response import Client, Dial, Number, VoiceResponse

response = VoiceResponse()
dial = Dial(caller_id='+1888XXXXXXX')
dial.number('858-987-6543')
dial.client('joey')
dial.client('charlie')
response.append(dial)

print(response)
Ejemplo n.º 32
0
from twilio.twiml.voice_response import Dial, Number, VoiceResponse

response = VoiceResponse()
dial = Dial()
dial.number(
    '+14158675310',
    status_callback_event=['initiated', 'ringing', 'answered', 'completed']
    status_callback='https://myapp.com/calls/events',
    status_callback_method='POST'
)
response.append(dial)

print(response)
Ejemplo n.º 33
0
from twilio.twiml.voice_response import Dial, Number, VoiceResponse

response = VoiceResponse()
dial = Dial()
dial.number('415-123-4567', send_digits='wwww1928')
response.append(dial)

print(response)
Ejemplo n.º 34
0
from twilio.twiml.voice_response import Dial, Number, VoiceResponse

response = VoiceResponse()
dial = Dial()
dial.number('858-987-6543')
dial.number('415-123-4567')
dial.number('619-765-4321')
response.append(dial)

print(response)
Ejemplo n.º 35
0
from twilio.twiml.voice_response import Dial, Number, VoiceResponse

response = VoiceResponse()
dial = Dial()
dial.number('415-123-4567')
response.append(dial)

print(response)
Ejemplo n.º 36
0
def route_call(request):


    digits = int(request.POST.get('Digits', '0'))
    call_origin = request.POST.get('From', None)

    call_log = Call.objects.create(twilio_id=request.POST.get('CallSid', None), 
                                   type="incoming", 
                                   incoming_number=call_origin)
    if digits == 1:
        message = "https://s3-ap-southeast-1.amazonaws.com/media.dellarobbiathailand.com/ivr/audio-transferring-sales.mp3"
        numbers = [(73, '+66819189145')]
        clients = [(73, "sidarat")]
        caller_id = call_origin or '+6625088681'

        call_log.forwarding_number = '+66819189145'
        call_log.save()

    elif digits == 2:
        message = "https://s3-ap-southeast-1.amazonaws.com/media.dellarobbiathailand.com/ivr/audio-transferring-customer-service.mp3"
        numbers = [(16, '+66914928558'), (42, '+66952471426'), (42, '+66634646465')]
        clients = [(16, "chup"), (42, 'apaporn')]
        caller_id = '+6625088681'

    elif digits == 3:
        message = "https://s3-ap-southeast-1.amazonaws.com/media.dellarobbiathailand.com/ivr/audio-transferring-accounting.mp3"
        numbers = [(63, '+66988325610')]
        clients = [(63, "mays")]
        caller_id = '+6625088681'

    elif digits == 8:
        message = "https://s3-ap-southeast-1.amazonaws.com/media.dellarobbiathailand.com/ivr/audio-transferring-accounting.mp3"
        numbers = [(1, '+66990041468')]
        clients = [(1, "charliephairoj")]
        caller_id = "+6625088681"

        call_log.forwarding_number = '+66990041468'
        call_log.save()

    else:
        message = "https://s3-ap-southeast-1.amazonaws.com/media.dellarobbiathailand.com/ivr/audio-transferring-customer-service.mp3"
        numbers = [(16, '+66914928558'), (42, '+66952471426')]
        clients = [(16, "chup"), (42, 'apaporn')]
        caller_id = '+6625088681' or '+6625088681'

    resp = VoiceResponse()
    resp.play(message)

    dial = Dial(caller_id=caller_id, 
                record='record-from-ringing', 
                recording_status_callback="/api/v1/ivr/recording/")

    for number in numbers:
        dial.number(number[1],
                    status_callback_event='answered completed',
                    status_callback=_get_status_callback_url(number[0]),
                    status_callback_method="GET")
    
    for client in clients:
        dial.client(client[1],
                    status_callback_event='answered completed',
                    status_callback=_get_status_callback_url(client[0]),
                    status_callback_method="GET")

    resp.append(dial)

    return HttpResponse(resp)
Ejemplo n.º 37
0
from twilio.twiml.voice_response import Dial, Number, VoiceResponse

response = VoiceResponse()
dial = Dial()
dial.number(
    '+14155555555',
    status_callback_event='initiated ringing answered completed',
    status_callback='https://myapp.com/calls/events',
    status_callback_method='POST'
)
dial.number(
    '+14153333333',
    status_callback_event='initiated ringing answered completed',
    status_callback='https://example.com/events',
    status_callback_method='POST'
)
response.append(dial)

print(response)
Ejemplo n.º 38
0
from twilio.twiml.voice_response import Dial, Number, VoiceResponse

response = VoiceResponse()
dial = Dial(caller_id='+15551112222')
dial.number('+15558675309')
response.append(dial)

print(response)
Ejemplo n.º 39
0
from twilio.twiml.voice_response import Client, Dial, Number, VoiceResponse

response = VoiceResponse()
dial = Dial(caller_id='+1888XXXXXXX')
dial.number('858-987-6543')
dial.client('jenny')
dial.client('tommy')
response.append(dial)

print(response)