def do(self, test=False): """Send the SMS message.""" client = self.dyad.study.twilio_number.client() success = -1 tem = Template(self.created_by_script.script_body) con = Context(self.create_observation_context()) message = tem.render(con) to_number = international_string(self.user.userprofile.mobile) from_number = self.dyad.study.twilio_number.number() try: success = 1 result = client.sms.messages.create(to=to_number, from_=from_number, body=message, status_callback=current_site_url() + reverse('sms_callback'),) self.add_data(key="external_id", value=result.sid) except TwilioException as e: success = -1 result = str(e) self.add_data(key="failure", value=result) self.update(success) return (success, result)
def do(self): """Place the Call and update Observation.""" self.status = -1 # in progress self.save() client = self.dyad.study.twilio_number.client() to_number = international_string(self.user.userprofile.get_voice_number()) from_number = self.dyad.study.twilio_number.number() if not to_number: return (-1, "No number available for this user.") try: call = client.calls.create(to=to_number, from_=from_number, url=self.link(), method="POST") self.touch() self.increment_attempts() self.add_data(key="external_id", value=call.sid) self.save() return (1, "Call %s is %s. %s" % (call.sid, call.status, call.uri)) except Exception as e: self.touch() self.increment_attempts() self.add_data(key="failure", value=str(e)) self.save() return (-1, str(e))
def do(self, test=False): """Send the SMS message.""" client = self.dyad.study.twilio_number.client() success = -1 tem = Template(self.created_by_script.script_body) con = Context(self.create_observation_context()) message = tem.render(con) to_number = international_string(self.user.userprofile.mobile) from_number = self.dyad.study.twilio_number.number() try: success = 1 result = client.sms.messages.create( to=to_number, from_=from_number, body=message, status_callback=current_site_url() + reverse('sms_callback'), ) self.add_data(key="external_id", value=result.sid) except TwilioException as e: success = -1 result = str(e) self.add_data(key="failure", value=result) self.update(success) return (success, result)
def formatted_mobile(self): return phone_field.international_string(self.mobile)