php 发 语音验证码,分享一下子语音验证码的php开发流程

分享一下语音验证码的php开发流程

首先,根据与云通讯的技术宅沟通,得知测试demo应用是不能用于上线的,因此我还要自己去创建应用和子帐号。应用就不说了,在官网的应用列表创建一个。取出其应用ID就ok了。

创建完应用后我开始写代码了,通过阅读文档我知道要先向云平台发送请求,格式如下:

XML请求示例:

POST https://app.cloopen.com:8883/2013-12-26/Accounts/ff8***13bacd54e***b29a*****03/Calls/VoiceVerify?sig=C1F20E7A9733CE9 HTTP/1.1

Accept:application/xml;

Content-Type:application/xml;charset=utf-8;

Authorization:ZmY4MDgwODEzYzM3ZGE1MzAxM2M4MDRmODA3MjAwN2M6MjAxMzAyMDExNTABCDE=

ff*****13bbcb2*****afb******b

1a8d9u

2

008613811234567

http://123.123.1.0:80/result

云平台回复的消息,如下:

HTTP/1.1 200 OK

Content-Length: 641

000000

a346467****************7123456

2014-05-01 15:38:09

云通讯的接口文档是:

http://docs.cloopen.com/index.php/%E8%AF%AD%E9%9F%B3%E9%AA%8C%E8%AF%81%E7%A0%81

在这里说明一下,我使用的是PHP开发。由于我很懒,所以我直接在云通讯的demo中找到了phpdemo,本来以为改改就行了,没想到还是遇到了些小麻烦。我先用回拨接口去修改的(因为感觉功能很接近),结果给我返回404,经过和云通讯技术宅了解,原来云通讯分为子账号鉴权和主账号鉴权。其中回拨是子账号鉴权。语音验证码是主账号鉴权。需要在url,sig和包头auth中填主账号和token。OK,继续发扬我的懒惰作风,继续抄!这次用短信的接口修改。这里要注意了,虽然同是主账号鉴权但url最后是不一样的。需要改为Calls/VoiceVerify。

改好代码后测试,终于可以成功拨打语音验证码了,但我的业务还需要知道是否拨打成功了,因此我开始部署我的result接收通知的地址。同样是通过PHP实现。我是偷的云通讯的鉴权demo,直接部署到我的服务器。

保留代码如下:

//获取POST数据

$result = file_get_contents("php://input");

//解析XML

$xml = simplexml_load_string(trim($result," \t\n\r"));

自己写的代码:

$ state = $xml-> state;

If($state == 2){

//继续套用发送语音验证码请求的代码。

}

注:云通讯的示例如下。

POST /{path} HTTP/1.1

Host: :

Content-Type: text/plain

Content-Length: 

VoiceCode

13800000000

1307241452320369000100030000002f

0

30

最后我们向云平台回个向应消息,如下:

HTTP/1.1 200 ok

Date:Wed Nov 9 16:08:57 2011

Content-Length: 

000000

语音验证码通知接口:

http://docs.cloopen.com/index.php/%E8%AF%AD%E9%9F%B3%E9%AA%8C%E8%AF%81%E7%A0%81%E7%8A%B6%E6%80%81%E9%80%9A%E7%9F%A5%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E

以上是发的大体流程,在开发中遇到的其他问题:

1.显号功能,我填写了displayNum参数,但是显示的号码不是我填的号码。询问客服后知道显号功能是要配置显号规则的。

2.注意语音验证码回调地址是以respUrl属性为准。应用回调地址是不包含语音验证码的。

------解决方案--------------------

迫切想知道云通讯是什么

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的原生PHP验证码类的示例: ```php class Captcha { // 验证码字符长度 protected $length = 4; // 验证码宽度 protected $width = 100; // 验证码高度 protected $height = 40; // 验证码字符集 protected $charset = '0123456789'; // 验证码图片 protected $image; // 构造函数 public function __construct() { $this->create(); } // 生成验证码 public function create() { $this->image = imagecreatetruecolor($this->width, $this->height); $bgColor = imagecolorallocate($this->image, 255, 255, 255); imagefill($this->image, 0, 0, $bgColor); $code = $this->generateCode(); $textColor = imagecolorallocate($this->image, 0, 0, 0); $font = __DIR__ . '/arial.ttf'; for ($i = 0; $i < $this->length; $i++) { $x = ($this->width - 20) / $this->length * $i + 10; $y = $this->height / 2 + 10; imagettftext($this->image, 20, rand(-10, 10), $x, $y, $textColor, $font, $code[$i]); } header('Content-Type: image/png'); imagepng($this->image); } // 验证码校验 public function check($code) { if (strtolower($code) == strtolower($_SESSION['captcha'])) { return true; } else { return false; } } // 生成随机字符 protected function generateCode() { $code = ''; $charsetLength = strlen($this->charset); for ($i = 0; $i < $this->length; $i++) { $code .= $this->charset[rand(0, $charsetLength - 1)]; } $_SESSION['captcha'] = $code; return $code; } // 析构函数 public function __destruct() { imagedestroy($this->image); } } ``` 使用示例: ```php $captcha = new Captcha(); ``` 这将生成一个验证码图像并将其输出到浏览器。要检查用户输入的验证码是否正确,可以调用`check()`方法: ```php if ($captcha->check($_POST['captcha'])) { // 验证码正确 } else { // 验证码错误 } ``` 请注意,此示例仅用于演示目的。在实际应用程序中,您可能需要添加其他功能(例如:检查用户是否已经提交了表单,以防止滥用)并进行更多的安全检查。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值