How to Send and Verify OTP using TWILIO in Unity?

Iam building a survey application. I need a way to validate the Phone number one inputs into the contact number inputfield.

I have been trying to use firebase to do the same . but the documents available online are not clear and there isn’t any help/tutorails available as well.

Any kind of help is appreciated. Thanks.

Update: I found a solution. I am using Textlocal my OTP services. Here’s the tutorial I followed: How to Generate and Send OTP SMS For Free using C#.NET?[With Source Code] - YouTube
So the code is in C# but not meant for UNity I have edited the code to fit Unity.

Here is my code:

using System;
using System.Collections.Generic;
using System.Net;
using System.Collections.Specialized;
using System.IO;
using System.Text;
using UnityEngine;
using System.Collections.Generic;
using System.Net;
using System.Collections.Specialized;
using System.Threading.Tasks;
using System.Linq;
using Random = System.Random;
using UnityEngine.UI;

public class OTPSMS : MonoBehaviour
{
// public string txtPhone;
// public string txtName;
string randomNumber;
public GameObject MessageBox;
public GameObject MessageBox2;
public GameObject MessageBox3;
public GameObject MessageBox4;
public InputField txtPhone;
public InputField txtName;
public InputField txtVerOTP;

// Start is called before the first frame update
void Start()
{
    MessageBox.SetActive(false);
    MessageBox2.SetActive(false);
    MessageBox3.SetActive(false);
    MessageBox4.SetActive(false);
}

// Update is called once per frame
void Update()
{

}

public void login()
{

    String result;
    string apiKey = "YOUR API key"; //the one which you will register on textlocal
    string numbers = txtPhone.text; // in a comma seperated list
   
    string sender = "TXTLCL";
    string name = txtName.text;
    var rnd = new Random();
    randomNumber = (rnd.Next(100000, 999999)).ToString();
    string message = "Hey " +name+ " Your OTP is " +randomNumber ;

    String url = "https://api.textlocal.in/send/?apikey=" + apiKey + "&numbers=" + numbers + "&message=" + message + "&sender=" + sender;
    //refer to parameters to complete correct url string

    StreamWriter myWriter = null;
    HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);

    objRequest.Method = "POST";
    objRequest.ContentLength = Encoding.UTF8.GetByteCount(url);
    objRequest.ContentType = "application/x-www-form-urlencoded";
    try
    {
        myWriter = new StreamWriter(objRequest.GetRequestStream());
        myWriter.Write(url);
    }
    catch (Exception e)
    {
        MessageBox.SetActive(true);
    }
    finally
    {
        myWriter.Close();
    }

    HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
    using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
    {
        result = sr.ReadToEnd();
        // Close and clean up the StreamReader
        sr.Close();
    }
    MessageBox2.SetActive(true);

}

public void Verify()
{
    if(txtVerOTP.text ==randomNumber)
    {
        MessageBox3.SetActive(true);
    }
    else
    {
        MessageBox4.SetActive(true);
    }
}

}

And this is what the project lloks like

: