dhalsted/sms-utils

使用libphonenumber和Twilio验证短信号码

0.0.0 2017-09-29 21:52 UTC

This package is not auto-updated.

Last update: 2024-09-29 04:03:29 UTC


README

sms-utils 包含了我发现有用的处理短信的方法。我主要使用 Twilio,但最终我希望添加对其他供应商的支持。

第一个版本包含验证字符串是否表示有效短信号码的代码——这是 Twilio 不会卡住的地方。这意味着它必须满足某些格式限制,并且,此外,还必须是能够发送短信的手机号码(即,不是固定电话)。这些规则很复杂。SMS Validator 类将接受一个字符串,检查它是否可以解析为电话号码,检查它是否不是固定电话,并返回一个为 Twilio 使用的格式化号码版本。它可以处理来自不同国家和地区的号码。格式验证通过 Google 的 libphonenumber 完成,而短信功能的检查通过 Twilio 完成。

请注意,您需要 Twilio API 凭证才能使用 Validator。

安装

克隆或下载存储库。然后

composer install

要运行测试,首先将 .env.example 复制到 .env,然后运行

composer test

这将运行一组不需要 Twilio 凭证的测试。要运行更完整的测试套件,在 .env 中填写 Twilio 凭证和一些示例电话号码,然后再次运行

composer test 

快速入门

要使用验证器,可以这样做

php cli_validate.php '(444) 111-2222'

其中 (444) 111-2222 是有效的美国固定电话。你应该得到

Not mobile exception: Number does not appear to be a mobile number

然后尝试使用一个手机号码。在这种情况下,你会得到

+14441112222

要在您的代码中调用 SMSValidator 类,只需这样做

$sv = new \Dhalsted\SMS\SMSValidator(TWILIO_SID, TWILIO_TOKEN);
$validated_number = $sv->validateMobileNumber($phone_number, $country_code);

默认情况下,验证器检查提交的电话号码是手机号码还是VoIP号码。如果您想具体检查其中一种,可以这样做

$validated_number = $sv->validateMobileNumber($phone_number, $country_code, array('mobile'));

SMSValidator 会抛出几种类型的异常,这可以帮助您的用户了解为什么一个号码不适合短信。

  • SMSTwilioMisconfigException(代码 20100)会在提交的 Twilio 凭证缺失、不完整或无效时发生。

  • SMSBadNumberException(代码 20101)会在提交的用于电话号码的数据无法解析或不完整时发生。提交不存在的国家或地区代码、无法解析的字符串(如“电话号码 888 555 1212”而不是“888 555 1212”)或截断的号码将引发此异常。

  • SMSNotMobileException(代码 20102)会在提交的号码不是有效的类型时发生,默认情况下为手机号码或VoIP号码。