dhalsted / sms-utils
使用libphonenumber和Twilio验证短信号码
Requires
- php: >=5.3.0
- giggsey/libphonenumber-for-php: ^8.8
- twilio/sdk: ^5.5
- vlucas/phpdotenv: ^2.4@dev
Requires (Dev)
- phpunit/phpunit: 4.8.35
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号码。