ASP.NET(C#)版本开发短信接口,新用户注册·验证码短信、语音接口demo以及解决方案
在用户注册验证手机号环节,用户可能会遇到以下两个主要问题:一.短信接口被刷产生原因因为新用户注册页面暴露在公开的网络环境中,任何人都可以调用该功能;部分违规软件会利用这一特点,会模拟人工大量获取短信验证码;不利后果因为软件可以高并发循环请求短信,所以会导致如下一些不利后果:短信被大量恶意消耗;对品牌造成一定的负面影响;被骚扰的用户可能会进行投诉,影响短信正常发送、短信通道安全稳定造成一定影响。方案
在用户注册验证手机号环节,用户可能会遇到以下两个主要问题:
一.短信接口被刷
产生原因
因为新用户注册页面暴露在公开的网络环境中,任何人都可以调用该功能;部分违规软件会利用这一特点,会模拟人工大量获取短信验证码;
不利后果
因为软件可以高并发循环请求短信,所以会导致如下一些不利后果:
短信被大量恶意消耗;
对品牌造成一定的负面影响;
被骚扰的用户可能会进行投诉,影响短信正常发送、短信通道安全稳定造成一定影响。
方案
除了贵公司在新用户注册页面做好必要防护之外,
√配置异常发送拦截:实时分析接口提交的每条短信的发送特征,如遇异常立即执行实时拦截,可节约大量短信成本。
√最大发送量设置:根据业务实际情况,设置账户每日最大短信发送量,达到设置的阈值后,系统暂停短信发送,并给管理员推送短信通知。
√每号码每日最大发送量:可对单一手机号码的最大日发送量进行限制。
二.用户收不到短信
产生原因
因用户退订、投诉、运营商通道故障、通道拥堵、用户手机问题等因素,导致一部分客户无法收到验证码短信,从而影响推广转化。
不利后果
新注册用户收不到验证码短信,会产生如下影响:
因用户收不到注册验证短信导致客户流失;
部分收不到短信的用户,会向公司客服反馈,增加售后工作压力;
对公司品牌的认可度降低。
方案
为了最大限度的提升验证码短信的到达率,可配置
√失败自动补发:实时侦测短信送达状态,如遇失败,系统实时自动使用另一条短信通道进行补发;
√异常自动补发:针对某些特殊情况,如遇客户未在10秒内(时间可设置)收到注册验证短信,系统会自动调用另外一条短信通道重发一条;
√语音自动补呼:可设置用户在第三次点击获取验证码短信按钮时,系统以电话语音的方式给客户播报验证码数字。
本文为您提供了ASP.NET(C#)版本的验证码短信接口对接DEMO示例
//接口类型:互亿无线触发短信接口,支持发送验证码短信、订单通知短信等。
//账户注册:请通过该地址开通账户http://user.ihuyi.com/?t9nyDN
//注意事项:
//(1)调试期间,请使用用系统默认的短信内容:您的验证码是:【变量】。请不要把验证码泄露给其他人。
//(2)请使用 APIID 及 APIKEY来调用接口,可在会员中心获取;
//(3)该代码仅供接入互亿无线短信接口参考使用,客户可根据实际需要自行编写;
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.IO;
using System.Net;
using System.Text;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Post : System.Web.UI.Page
{
public static string PostUrl = ConfigurationManager.AppSettings["WebReference.Service.PostUrl"];
protected void Page_Load(object sender, EventArgs e)
{
string account = "用户名";//查看用户名 登录用户中心->验证码通知短信>产品总览->API接口信息->APIID
string password = "密码"; //查看密码 登录用户中心->验证码通知短信>产品总览->API接口信息->APIKEY
string mobile = Request.QueryString["mobile"];
Random rad = new Random();
int mobile_code = rad.Next(1000, 10000);
string content = "您的验证码是:" + mobile_code + " 。请不要把验证码泄露给其他人。";
//Session["mobile"] = mobile;
//Session["mobile_code"] = mobile_code;
string postStrTpl = "account={0}&password={1}&mobile={2}&content={3}";
UTF8Encoding encoding = new UTF8Encoding();
byte[] postData = encoding.GetBytes(string.Format(postStrTpl, account, password, mobile, content));
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(PostUrl);
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = postData.Length;
Stream newStream = myRequest.GetRequestStream();
// Send the data.
newStream.Write(postData, 0, postData.Length);
newStream.Flush();
newStream.Close();
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
if (myResponse.StatusCode == HttpStatusCode.OK)
{
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
//Response.Write(reader.ReadToEnd());
string res = reader.ReadToEnd();
int len1 = res.IndexOf("</code>");
int len2 = res.IndexOf("<code>");
string code=res.Substring((len2+6),(len1-len2-6));
//Response.Write(code);
int len3 = res.IndexOf("</msg>");
int len4 = res.IndexOf("<msg>");
string msg=res.Substring((len4+5),(len3-len4-5));
Response.Write(msg);
Response.End();
}else{
//访问失败
}
}
}
更多推荐
所有评论(0)