我能够使用twilio从我们的应用程序向用户发送SMS消息。
此处是用于通过Twilio How to send sms using C# and twilio API
向用户发送消息的链接现在,我想生成OTP(一次性密码)。通过twilio将OTP发送给用户。用户必须将OTP回复到twilio号。twilio是否可能?
如果是,如何将OTP SMS消息回复到Twilio号码。
有人可以帮助我,并举一些例子吗?
答案 0 :(得分:0)
您必须生成OTP并通过SMS发送,然后保存并验证,Twillo不会生成该OTP。
此代码生成一个OTP:
protected void GenerateOTP(object sender, EventArgs e)
{
string alphabets = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
string small_alphabets = "abcdefghijklmnopqrstuvwxyz";
string numbers = "1234567890";
string characters = numbers;
if (rbType.SelectedItem.Value == "1")
{
characters += alphabets + small_alphabets + numbers;
}
int length = int.Parse(ddlLength.SelectedItem.Value);
string otp = string.Empty;
for (int i = 0; i < length; i++)
{
string character = string.Empty;
do
{
int index = new Random().Next(0, characters.Length);
character = characters.ToCharArray()[index].ToString();
} while (otp.IndexOf(character) != -1);
otp += character;
}
lblOTP.Text = otp;
}
答案 1 :(得分:0)
#region Namespaces
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Data.SqlTypes;
using System.Configuration;
using System.Web.UI.WebControls;
using System.Net;
using System.IO;
#endregion
/// <summary>
/// Summary description for SMSAPI
/// </summary>
public class SMSAPI
{
MyConnection con = new MyConnection();
public DataSet ds = new DataSet();
public SqlDataAdapter da = new SqlDataAdapter();
public SMSAPI()
{
//
// TODO: Add constructor logic here
//
}
/*Get The SMS API*/
public string GETSMSAPI()
{
con.Open();
string QuerySMS, StringSMS, APISMS, UserName, Password, Sender, Priority;
QuerySMS = "SP_SMSAPIMaster_GetDetail";
StringSMS = APISMS = UserName = Password = Sender = Priority = "";
con.cmd.CommandText = QuerySMS;
try
{
con.Open();
con.cmd.ExecuteNonQuery();
SqlDataAdapter da = new SqlDataAdapter(con.cmd);
da.Fill(ds, "tbl_SMSAPIMaster");
if (ds.Tables["tbl_SMSAPIMaster"].Rows.Count > 0)
{
APISMS = ds.Tables["tbl_SMSAPIMaster"].Rows[0]["SMSAPI"].ToString();
UserName = ds.Tables["tbl_SMSAPIMaster"].Rows[0]["UserName"].ToString();
Password = ds.Tables["tbl_SMSAPIMaster"].Rows[0]["Password"].ToString();
Sender = ds.Tables["tbl_SMSAPIMaster"].Rows[0]["Sender"].ToString();
Priority = ds.Tables["tbl_SMSAPIMaster"].Rows[0]["Priority"].ToString();
StringSMS = APISMS.Replace("uid", UserName).Replace("psd", Password).Replace("sndid", Sender).Replace("prt", Priority);
}
else
{
StringSMS = "";
}
}
catch
{
}
finally
{
con.Close();
}
return StringSMS;
}
/*Call The SMS API*/
public string GetAPICALL(string url)
{
HttpWebRequest httpreq = (HttpWebRequest)WebRequest.Create(url);
try
{
HttpWebResponse httpres = (HttpWebResponse)httpreq.GetResponse();
StreamReader sr = new StreamReader(httpres.GetResponseStream());
string results = sr.ReadToEnd();
sr.Close();
return results;
}
catch
{
return "0";
}
}
}
private void SendOTPSMS()
{
string Msgs, SMSString;
Msgs = SMSString = "";
SMSString = SMSAPI.GETSMSAPI();
Msgs = "D" + "OTP : " + lblOneTimePassword;
lblMessageContent = Msgs;
SMSString = SMSString.Replace("num", txtMobileNo.Value.Trim()).Replace("fedmesge", Msgs);
string Result = SMSAPI.GetAPICALL(SMSString);
}
private void GenerateOTP()
{
int MaxSize = 4;
//int MinSize = 0;
char[] chars = new char[62];
string Character;
// a = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
Character = "1234567890";
chars = Character.ToCharArray();
int Size = MaxSize;
byte[] data = new byte[1];
RNGCryptoServiceProvider crypto = new RNGCryptoServiceProvider();
crypto.GetNonZeroBytes(data);
Size = MaxSize;
data = new byte[Size];
crypto.GetNonZeroBytes(data);
StringBuilder result = new StringBuilder(Size);
foreach (byte b in data)
{
result.Append(chars[b % (chars.Length)]);
}
lblOneTimePassword = result.ToString();
}