def init_call(self, mobile_number): call_url = self.initiate_call_urlformat.format(sid=self.sid) flow_url = self.flow_urlformat.format(flow_id=self.flow_id) #TODO create a call object. add the id to the CustomField. save the call object props = self.init_props() post_data = { 'From': int(mobile_number), 'CallerId': self.caller_id, 'Url': flow_url, 'TimeLimit': self.time_limit, 'TimeOut': self.time_out, 'CallType': self.call_type, 'StatusCallback': reverse(self.ServiceCallEndView.get_name()), 'CustomField': json.dumps(props), } r = requests.post(call_url, auth=(self.sid, self.token), data=post_data) response_data = json.loads(r.text) call_sid = response_data['Call']['Sid'] call = Call(exotel_call_id=call_sid) call.state = json.dumps(self.init_state()) call.props = json.dumps(self.init_props()) call.save() #return {"id": call.id, "exotel_id": call_sid} return {"exotel_id": call_sid}
def twilio_call(request): # if request.method is not 'GET': # return HttpResponse(status=400) account_sid = secrets.TWILIO_ACCOUNT_SID # Your Account SID from www.twilio.com/console auth_token = secrets.TWILIO_ACCOUNT_SECRET # Your Auth Token from www.twilio.com/console required = ['name', 'npeople', 'datetime', 'resid', 'cusphone', 'lang'] for req in required: if req not in request.GET: return JSONResponse(status=400) name = request.GET.get('name') num_people = request.GET.get('npeople') timestamp = request.GET.get('datetime') jptz = pytz.timezone('Asia/Tokyo') dt = datetime.datetime.fromtimestamp(float(timestamp), tz=jptz) shopid = request.GET.get('resid') if request.GET.get('lang') == "ja": language = Call.JAPANESE else: language = Call.ENGLISH cus_phone = request.GET.get('cusphone') shop_info = Venue.objects.get(pk = shopid) #res_phone = shop_info.phone res_phone = secrets.TEST_PHONE res_name = shop_info.name call_info = Call() call_info.name = name call_info.num_people = num_people call_info.date_time = dt call_info.res_phone = res_phone call_info.cus_phone = cus_phone call_info.language_opt = language call_info.res_name = res_name call_info.save() # After save, I have this id. pk = call_info.pk # Make request to Twilio. url = "http://tjr.tonny.me/reservation/" + str(pk) + '/' client = TwilioRestClient(account_sid, auth_token) try: call = client.calls.create(url=url, to=res_phone, from_=secrets.TWILIO_PHONE, status_callback="http://tjr.tonny.me/callingstatus/" + str(pk) + '/', status_callback_method="POST", ) except TwilioRestException as e: print(e) serializer = CallSerializer(call_info) return JSONResponse(serializer.data)
def twilio_call(request): # if request.method is not 'GET': # return HttpResponse(status=400) account_sid = "AC9fd29fc278859337de38574c25843043" # Your Account SID from www.twilio.com/console auth_token = "22388542078a89a05e264409a2ef0055" # Your Auth Token from www.twilio.com/console required = ['name', 'npeople', 'datetime', 'resid', 'cusphone', 'lang'] for req in required: if req not in request.GET: return JSONResponse(status=400) name = request.GET.get('name') num_people = request.GET.get('npeople') timestamp = request.GET.get('datetime') jptz = pytz.timezone('Asia/Tokyo') dt = datetime.datetime.fromtimestamp(float(timestamp), tz=jptz) shopid = request.GET.get('resid') if request.GET.get('lang') == "ja": language = Call.JAPANESE else: language = Call.ENGLISH cus_phone = request.GET.get('cusphone') shop_info = Venue.objects.get(pk = shopid) #res_phone = shop_info.phone res_phone = "+819071931989" res_name = shop_info.name call_info = Call() call_info.name = name call_info.num_people = num_people call_info.date_time = dt call_info.res_phone = res_phone call_info.cus_phone = cus_phone call_info.language_opt = language call_info.res_name = res_name call_info.save() # After save, I have this id. pk = call_info.pk # Make request to Twilio. url = "http://47.88.212.198:8000/reservation/" + str(pk) + '/' client = TwilioRestClient(account_sid, auth_token) try: call = client.calls.create(url=url, to=res_phone, from_="+81345304650") except TwilioRestException as e: print(e) serializer = CallSerializer(call_info) return JSONResponse(serializer.data)
def answer(): print "entered /answer" if request.method == 'POST': try: print "request call status:" print >> sys.stderr, str(request.form['CallStatus']) #create call object c= Call( timeAnswered = datetime.datetime.now(), direction = request.form['Direction'], callFrom = request.form['From'], billRate = float(request.form['BillRate']), cn = request.form['CallerName'], callTo = request.form['To'], callUUID = str(request.form['CallUUID']), #callStatus = request.form['CallStatus'], callState = 'ringing', ) #make a new sCall object print "about to save" c.save() #create state machine daddy = CallStateMachDaddy(c.callUUID) print "created daddy" daddy.e_answer() print "invoked state machine" if daddy.callXMLBuffer: r = daddy.callXMLBuffer daddy.callXMLBuffer = '' print "checked callXMLBuffer" print "type c = "+str(type(c)) print "type daddy = " +str(type(daddy)) c.callDaddyPickle = pickle.dumps(daddy) print "stuffed callDaddyPickle" c.save() #send response to Plivo cloud. output = "Plivo Call RESTXML Response => %s" % r print >> sys.stderr, output return render_template('response_template.xml', response=r) except: print "exception in /answer" print >> sys.stderr, str(sys.exc_info()[0]) # These write the nature of the error print >> sys.stderr, str(sys.exc_info()[1]) else: print >> sys.stderr, "Received GET request to /answer." return "Received GET request to /answer."
def receive_call(request, template=None, form_class=ReceiveCallForm): if request.method == 'POST': fields = request.POST else: fields = request.GET form = form_class(fields) context = {} user = None if form.is_valid(): profile = None try: fragment_type = CallFragment.OUTBOUND_WELCOME_UNKNOWN_USER profile = ApplicantProfile.objects.get(mobile_number=form.cleaned_data['From']) user = profile.user call = Call(applicant=profile, outbound=False, call_sid=form.cleaned_data['CallSid'], phone_number=form.cleaned_data['From'], call_type=INBOUND_CHECK_JOBS) call.save() fragment_type = CallFragment.OUTBOUND_WELCOME_KNOWN_USER except ApplicantProfile.DoesNotExist: call = Call(outbound=False, call_sid=form.cleaned_data['CallSid'], phone_number=form.cleaned_data['From'], call_type=INBOUND_CHECK_JOBS) call.save() fragment = CallFragment(call=call, outbound=True, fragment_type=fragment_type) fragment.save() context['user'] = user return render_to_response(template, context, context_instance=RequestContext(request))
def init_call(self, mobile_number): call_url = self.initiate_call_urlformat.format(sid=self.sid) flow_url = self.flow_urlformat.format(flow_id=self.flow_id) #TODO create a call object. add the id to the CustomField. save the call object props = self.init_props() post_data = { 'From' : int(mobile_number), 'CallerId' : self.caller_id, 'Url' : flow_url, 'TimeLimit' : self.time_limit, 'TimeOut' : self.time_out, 'CallType' : self.call_type, 'StatusCallback' : reverse(self.ServiceCallEndView.get_name()), 'CustomField' : json.dumps(props), } r = requests.post(call_url, auth=(self.sid, self.token), data=post_data) response_data = json.loads(r.text) call_sid = response_data['Call']['Sid'] call = Call(exotel_call_id = call_sid) call.state = json.dumps(self.init_state()) call.props = json.dumps(self.init_props()) call.save() #return {"id": call.id, "exotel_id": call_sid} return {"exotel_id": call_sid}
def twilio_call(request): # if request.method is not 'GET': # return HttpResponse(status=400) account_sid = secrets.TWILIO_ACCOUNT_SID # Your Account SID from www.twilio.com/console auth_token = secrets.TWILIO_ACCOUNT_SECRET # Your Auth Token from www.twilio.com/console required = ['name', 'npeople', 'datetime', 'resid', 'cusphone', 'lang'] for req in required: if req not in request.GET: return JSONResponse(status=400) name = request.GET.get('name') num_people = request.GET.get('npeople') timestamp = request.GET.get('datetime') jptz = pytz.timezone('Asia/Tokyo') dt = datetime.datetime.fromtimestamp(float(timestamp), tz=jptz) shopid = request.GET.get('resid') if request.GET.get('lang') == "ja": language = Call.JAPANESE else: language = Call.ENGLISH cus_phone = request.GET.get('cusphone') shop_info = Venue.objects.get(pk=shopid) #res_phone = shop_info.phone res_phone = secrets.TEST_PHONE res_name = shop_info.name call_info = Call() call_info.name = name call_info.num_people = num_people call_info.date_time = dt call_info.res_phone = res_phone call_info.cus_phone = cus_phone call_info.language_opt = language call_info.res_name = res_name call_info.save() # After save, I have this id. pk = call_info.pk # Make request to Twilio. url = "http://tjr.tonny.me/reservation/" + str(pk) + '/' client = TwilioRestClient(account_sid, auth_token) try: call = client.calls.create( url=url, to=res_phone, from_=secrets.TWILIO_PHONE, status_callback="http://tjr.tonny.me/callingstatus/" + str(pk) + '/', status_callback_method="POST", ) except TwilioRestException as e: print(e) serializer = CallSerializer(call_info) return JSONResponse(serializer.data)