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)
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")
def call(resp): dial = Dial() numbers = parse_NUMBERS(secret) for number in numbers: dial.number(number) resp.append(dial)
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))
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('/')
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
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)
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)
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)
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)
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)
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
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>' )
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
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))
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)
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>' )
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))
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))
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')
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))
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)
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')
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)
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
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)
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')
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))
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)
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)
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)
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)
from twilio.twiml.voice_response import Dial, Number, VoiceResponse response = VoiceResponse() dial = Dial() dial.number('415-123-4567') response.append(dial) print(response)
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)
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)
from twilio.twiml.voice_response import Dial, Number, VoiceResponse response = VoiceResponse() dial = Dial(caller_id='+15551112222') dial.number('+15558675309') response.append(dial) print(response)
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)