in api/views/phones.py [0:0]
def outbound_sms(request):
"""
Send a message from the user's relay number.
POST params:
body: the body of the message
destination: E.164-formatted phone number
"""
# TODO: Create or update an OutboundContact (new model) on send, or limit
# to InboundContacts.
# TODO: Reduce user's SMS messages for the month by one
if not flag_is_active(request, "outbound_phone"):
return response.Response(
{"detail": "Requires outbound_phone waffle flag."}, status=403
)
try:
relay_number = RelayNumber.objects.get(user=request.user)
except RelayNumber.DoesNotExist:
return response.Response({"detail": "Requires a phone mask."}, status=400)
errors = {}
body = request.data.get("body")
if not body:
errors["body"] = "A message body is required."
destination_number = request.data.get("destination")
if not destination_number:
errors["destination"] = "A destination number is required."
if errors:
return response.Response(errors, status=400)
# Raises ValidationError on invalid number
to = _validate_number(request, "destination")
client = twilio_client()
client.messages.create(from_=relay_number.number, body=body, to=to.phone_number)
return response.Response(status=200)