楼主要发吗?用下面这个平台试试,你发出的也是021开头的随机短信,跟旺旺一样 :) 在系统里发短信,只要使用HTTP协议的发送接口,方法用POST和GET均可,很简单的! 可以在下面的地址注册获得10条自己做测试的(10条免费,再多就得买了。价格根据量,每条在几分到1毛之间) http://ad.smsadmin.cn/ API开发接口格式如下: 
地址:http://221.130.185.108/smseting/wwwroot/api/get_send/ 
类型:GET 方式 
参数: ?uid=ID&pwd=密码&mobile=手机号&msg=短信内容&dtime=时间(时间为空为立即发送,格式:2007-12-01 00:00:00) 
返值:0发送成功!;2余额不足!;1用户名或密码错误!;3超过发送最大量100条;4此用户不允许发送!;5手机号或发送信息不能为空!;6含有敏感字,请修改后发送!;7超过70个字,请修改后发送! 
GET 接口目前只支持100个号码,以分号“;”分隔。 地址:http://221.130.185.108/smseting/wwwroot/api/post_send/ 
类型:POST 方式 
参数: ?uid=ID&pwd=密码&mobile=手机号&msg=短信内容&dtime=时间(时间为空为立即发送,格式:2007-12-01 00:00:00) 
返值:0发送成功!;2余额不足!;1用户名或密码错误!;3超过发送最大量1000条;4此用户不允许发送!;5手机号或发送信息不能为空!;6含有敏感字,请修改后发送!;7超过70个字,请修改后发送! 
POST 接口目前只支持1000个号码,以分号“;”分隔。 http://221.130.185.108/smseting/wwwroot/api/user_info/?uid=ID&pwd=密码    
查询用户余额接口 
其中ID和密码可以直接使用您在本系统中的帐号信息。在本系统中,您同样可以查看到调用接口发送的扣费明细,方便对接口的管理。 
再有问题,留言或发站内信问我。

解决方案 »

  1.   

    楼上的,那么我继续解释 :)现在的短信市场上,确实有卡发这么一回事。就是使用手机卡+短信群发器,通过透支发送的方式来大量群发。手机卡有“大卡”和“小卡”之分。根据实际能够发送的条数不同。但是企业级的正规应用很少用卡发,一般都是用正规的企业短信网关通道来做。阿里巴巴用的就是上海电信的企业信使业务提供的企业短信通道。这就是显示021+8位号的原因。上海电信企业信使的系统是深圳协尔开发的,原理就要研究协尔的系统啦。我们也负担了这块业务的推广,所以您说我前头写的“广告”,其实我的理解,本质还是一种大家的信息交互吧。您需要的话、能使用的话,我公司那边能解决这个问题,当然对咱们双方都是好事啦。不需要,也是一种参考。我们自己也经常研究同行的产品,希望得到他们的信息做参考。大家需要交流。此刻谢谢CSDN这个平台,呵呵。楼主您提到2点,一个是回复的实现,一个是这些021的号码会变。实际上在去年315之前,正规完善的企业短信通道都支持回复。回复一般实现方式是通过企业短信通道的特服号加上扩展位来实现。例如:10669160这个码号后面加个扩展位18601860是属于您的,那么您下发显示的号码是1066916018601860,用户回复这个号码,接口也把它传递给您的ID。去年315晚会,CCTV批判垃圾短信,导致移动把企业短信通道关闭。所以用户不得不转而使用电信的通道。而移动对电信跨网发来的短信也有屏蔽,以免出现垃圾短信问题。如果电信发来的短信来自某个固定的号码如02188888888在某个时间段内超过一定数量,移动就会把它当成垃圾短信而封杀这个号码,所以电信无法用一个固定的号码做特服号或者做前置号码。电信想出的办法是,建立一个缓冲池,放进去大量号码资源,几万个021的小灵通号码,系统随机调用,这样的话移动那边就无法屏蔽,因为它和普通点对点的正常发送类似。电信可以给某个重要用户如阿里巴巴专门建立一个小的缓冲池,给他专门分配一个号段。针对这些号码收到的回复,电信就转给阿里巴巴的ID。至于这些回复怎么处理,阿里巴巴的系统来定义。比如,阿里巴巴使用02100000001为某个淘宝用户A下行时,系统里有个记录,这个号码收到回复时,系统会找到这个号码对应的下行ID,把回复内容转给这个ID,就是这么回事。时间周期也是阿里巴巴自己设定的。我们做过类似系统,定义的原则是,某个号码的上行收到,系统去寻找最近使用这个号码下发的ID,把回复分配给它。这么说不知您能否理解。如果过了一天,哪怕一周,还没有第二个人使用02100000001下发,那么这个回复依然分配给A。但如果过了1分钟就有用户B使用02100000001下发了,那么很抱歉,这个回复就给B了。如果再要匹配得更精确,那么就再加一个判断:02100000001下发时接口的那个手机号例如13812345678是和哪个ID对应。假设A发送短信给13812345678了,阿里的系统无论调用哪个021号码下发、也无论13812345678回复到哪个021号码,系统都和A对应起来。除非A和B都给13812345678发送了,这下子,回复的分配就更复杂些。以上是我们技术人员实现过的逻辑。
      

  2.   

    很简单。
    假设有50个卡 CID01,CID02, ... , CID50 。估计更多,毕竟一卡现在不值钱。
    200 个用户 U001,U002,U003, ... ,U200有人留言那么你手机上会收到信息Unnn 留言, 系统找到你 Ummm的 手机号 Pmmm,注意手机号是唯一的。 也就是 Ummm 和 手机号 Pmmm是 1对1.系统选择并通过一个号码CIDxx(如果选择,后面解释) 发信息给 Pmmm, 并在数据库表 callHistory (呼叫人, 被叫人,时间,系统卡号,状态) 中记录 (Unnn,Ummm,now(),CIDxx,0)
    当你回消息的时候。系统可以知道 哪个手机发来的 Pmmm,发给什么号的 CIDxx, 这样 通过下列查询 即可找到呼叫人 Unnn
    select * 
    from callHistory inner join Users on callHistory.被叫人=users.uid  
    where users.phoneNumber = Pmmm and 系统卡号=CIDxx and 状态=0系统选择号码CIDxx的算法
    select 系统卡号 from 系统卡资源表 where 系统卡号 not in (select 系统卡号 from callHistory where 状态=0 and 被叫人=Ummm)在系统收到你Ummm的回复后 更新这条 callHistory中的记录状态为 1
    系统定时清除未回复的记录。比较每天把三天前的记录的状态清除为 2