@csrf_exempt
@require_POST
@twilio_auth_required
def webhook_view(request: WSGIRequest):
from_number = request.POST.get('From', '')
if len(from_number) < 11:
return HttpResponseForbidden()
body = request.POST.get('Body', '')
message_sid = request.POST.get('MessageSid', '')
conversation, _ = SmsConversation.objects.get_or_create(
phone_number=from_number
)
message = conversation.add_message(
body=body,
is_inbound=True,
twilio_sid=message_sid,
)
sms_intel = sms_conversation_workflow(
request=request,
user_input=body,
message_history=conversation.generate_message_history(),
actor=from_number,
)
twiml_response = MessagingResponse()
twiml_response.message(sms_intel.body)
conversation.add_message(
body=sms_intel.body,
is_inbound=False,
twilio_sid=message_sid,
is_processed=True
)
message.is_processed = True
message.save()
return HttpResponse(twiml_response)