Skip to content

views

django_spire.ai.sms.views

webhook_view

Source code in django_spire/ai/sms/views.py
@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)