PHP阿里云号码隐私服务
这里介绍一下使用阿里云服务号码隐私服务 使用场景例如外卖送餐、挪车等场景,对号码进行隐私保护
首先装一下阿里云的composer
composer require alibabacloud/client
下面直接上代码 首先可以封装一个类
<?php
namespace app\api\controller;
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
use AlibabaCloud\Client\Request\Request;
use AlibabaCloud\Dyplsapi\Dyplsapi;
use app\common\controller\Wap;
// Download:https://github.com/aliyun/openapi-sdk-php
// Usage:https://github.com/aliyun/openapi-sdk-php
// 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
// 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
// 本示例以把AccessKey ID和AccessKey Secret保存在环境变量为例说明,来实现API访问的身份验证。
class Mobile extends Wap
{
public static function phone($withPhoneNoA,$withPhoneNoB)
{
AlibabaCloud::accessKeyClient('xxxxxxxxxxxx', 'xxxxxxxxxxxx')
->regionId('cn-shanghai')
->asDefaultClient();
try {
$request = Dyplsapi::v20170525()->bindAxb();
$result = $request
->withPoolKey("xxxxxxxxxxx") //号码池key
->withPhoneNoA($withPhoneNoA) //号码A
->withPhoneNoB($withPhoneNoB) //号码B
// ->withPhoneNoX($withPhoneNoX) //隐私号
->withExpiration(date('Y-m-d H:i:s',time()+65)) //过期时间 两分钟后 date('Y-m-d H:i:s',time()+120)
->withIsRecordingEnabled(true)
// ->withExpectCity("北京")
// ->withOutId("abcdef")
// ->withOutOrderId("34553330****")
// ->withCallRestrict("CONTROL_AX_DISABLE")
->withCallDisplayType(1)
// ->withRingConfig("{\"AXBRing_B\":\"100000001\",\"AXBRing_A\":\"100000001\"}")
->withASRModelId("7ee372834d2f4cc7ac0d0ab2d0ae1aac")
->withCallTimeout(20)
->debug(false) // Enable the debug will output detailed information
->connectTimeout(1) // Throw an exception when Connection timeout
->timeout(1) // Throw an exception when timeout
->request();
return $result->toArray();
} catch (ClientException $exception) {
echo $exception->getMessage() . PHP_EOL;
} catch (ServerException $exception) {
echo $exception->getMessage() . PHP_EOL;
echo $exception->getErrorCode() . PHP_EOL;
echo $exception->getRequestId() . PHP_EOL;
echo $exception->getErrorMessage() . PHP_EOL;
}
}
}
然后就可以根据业务逻辑进行调用了
$data = Mobile::phone($this->user_info['mobile'],$user['mobile']);
if ($data['Code'] == 'isv.NO_AVAILABLE_NUMBER'){
return self::error('','当前占线中,请稍后再试');
}
// print_r($data);
return self::success('获取信息成功',$data['SecretBindDTO']['SecretNo']);
进行一个简单的判断 请求成功之后会返回隐私号 传参时 A呼叫隐私号 B接通隐私号 过期呼叫隐私号就会变为空号
我所使用的框架是TP6
请求参数
| 名称 | 类型 | 必填 | 描述 | 示例值及参考API |
|---|---|---|---|---|
|
PoolKey |
String | 是 |
号码池Key。 请登录号码隐私保护控制台,在号码池管理中查看号码池Key。 |
示例值: FC5526***** |
|
PhoneNoA |
String | 是 |
AXB中的A号码。 A号码可设置为手机号码或固定电话,固定电话需要加区号,区号和号码中间不需要加连字符。 |
示例值: 139****0000 参考取值来源: 查QueryPhoneNoAByTrackNo 增BindAxnExtension |
|
PhoneNoB |
String | 是 |
AXB中的B号码,A号码拨打X号码时会转接到B号码。 B号码可设置为手机号码或固定电话,固定电话需要加区号,区号和号码中间不需要加连字符。 说明如需更新B号码,请调用UpdateSubscription接口更新。 |
示例值: 139****0000 参考取值来源: 查QueryPhoneNoAByTrackNo |
|
PhoneNoX |
String | 否 |
AXB中的X号码。 X号码是您绑定号码前在号码隐私保护控制台或通过BuySecretNo接口购买的电话号码,用于转接电话。 如果未指定X号码,将根据参数ExpectCity从指定号码池中随机指定一个号码作为X号码。 |
示例值: 139****0000 参考取值来源: 查QueryPhoneNoAByTrackNo |
|
Expiration |
String | 是 |
绑定关系的过期时间。 说明必须晚于当前时间1分钟以上。 |
示例值: 2021-09-05 12:00:00 |
|
ExpectCity |
String | 否 |
指定城市进行X号码的选号。
|
示例值: 北京 |
|
IsRecordingEnabled |
Boolean | 否 |
是否需要针对该绑定关系产生的所有通话进行通话录音。取值:
|
示例值: true |
|
OutId |
String | 否 |
外部业务扩展字段,通话记录回执消息中会回传此参数。 |
示例值: abcdef |
|
OutOrderId |
String | 否 |
外部业务ID。 |
示例值: 34553330**** |
|
CallRestrict |
String | 否 |
单通呼叫限制的状态。取值:
|
示例值: CONTROL_AX_DISABLE |
|
CallDisplayType |
Integer | 否 |
重置绑定关系中的号码显示逻辑。固定取值:1(主被叫显示中间号码X)。 说明由于运营商监管限制,呼叫时显示真实号码的设置不生效。 |
示例值: 1 |
|
RingConfig |
String | 否 |
设置AXB绑定关系中的企业彩铃放音编码,内容如下:
企业彩铃编码:企业彩铃编码可以在管理控制台中查询,具体请登录号码隐私保护控制台,通过号码池管理>企业彩铃管理进行查看,支持上传、删除等操作。 说明企业彩铃优先使用绑定级别设置的彩铃,如果未设置或设置未生效,则会使用号码池级别的彩铃音。 |
示例值: { "AXBRing_B": "1000****1", "AXBRing_A": "1000****1" } |
|
ASRStatus |
Boolean | 否 |
ASR状态。取值:
|
示例值: false |
|
ASRModelId |
String | 否 |
ASR模型ID。可以在ASR模型管理页面查看ASR模型ID。 |
示例值: 1、通用-电话-中文普通话模型7ee372834d2f4cc7ac0d0ab2d0ae1aac 。 2、通用-电话-中文粤语模型 9b4afe3d224e4fa3bf963697113e2f77。 3、通用-电话-地方口音模型 3655a6cb94764145a1f9a38a3c3b3b4b。 |
|
CallTimeout |
Integer | 否 |
顺振时长。单位:秒。取值范围为5~20。 |
示例值: 10 |
|
DtmfConfig |
String | 否 |
设置AXB绑定关系中的dtmf按键配置,可配置内容如下:
|
示例值: { "endCallIvrPhoneNo":"A", "waitingDtmfTime":10, "maxLoop":3, "step1File":"62ab72f8-4750-4234-859e-e8d678c0cad3-flow_tts_test_1.wav", "step2File":"62ab72f8-4750-4234-859e-e8d678c0cad3-flow_tts_test_2.wav", "validKey":"1,2", "waitingEndCall":2 } |
响应参数
| 名称 | 类型 | 描述 | 示例 |
|---|---|---|---|
|
Code |
String |
请求状态码。
|
OK |
|
Message |
String |
状态码的描述。 |
OK |
|
RequestId |
String |
请求ID。 |
9297B722-A016-43FB-B51A-E54050D9369D |
|
SecretBindDTO |
Object |
号码绑定成功后返回的结构体。 |
|
|
Extension |
String |
分机号码。 说明接口BindAxb不涉及分机号码,请忽略该返回参数。 |
130 |
|
SubsId |
String |
绑定关系ID。 |
1**************3 |
|
SecretNo |
String |
隐私号码,即X号码。 |
139****0000 |
下面附上阿里云官方文档 参数里面有详细说明
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)