我正在尝试检查免费电话号码,它按预期工作。但是,我的问题是一些国家没有免费电话号码。
在这些国家/地区使用相同的代码会引发 404 错误并在那里停止代码。
我能想到的唯一方法是制作大量的 if 语句并手动添加每个提供免费电话选项的国家/地区,但我根本不喜欢这个解决方案,因为它会被硬编码。有没有办法解决这个问题,所以它适用于有.json
的国家,而忽略那些没有的国家(而不是使代码崩溃)?
$twilio = new Client(env('TWILIO_ID'), env('TWILIO_TOKEN'));
$iso = 'CY';
$params = ["excludeLocalAddressRequired" => "true"];
$tollFreeNumbers = $twilio->availablePhoneNumbers($iso)->tollFree->read($params);
这是响应:
"[HTTP 404] 无法获取页面:找不到请求的资源/2010-04-01/Accounts/ACxxxxx/AvailablePhoneNumbers/CY/TollFree.json">
使用此代码会因 CY 而崩溃,但适用于英国、美国、加拿大等。我应该添加带有硬编码国家/地区的 if 语句吗?(我真的很不喜欢这个解决方案,但这是我能想到的)。我的意思是:
if ($iso == 'GB' || $iso == 'US' || $iso == 'CA') { // and many more
$tollFreeNumbers = $twilio->availablePhoneNumbers($iso)->tollFree->read($params);
}
Twilio开发者布道者在这里。
与其预先防范有条件(随着我们将来在其他国家/地区添加免费号码,这可能会过时),为什么不捕获错误并向用户返回一条消息,说明免费号码在他们正在搜索的国家/地区不可用。
像这样:
try {
$tollFreeNumbers = $twilio->availablePhoneNumbers($iso)->tollFree->read($params);
} catch (Exception $e) {
$tollFreeNumbers = [];
$message = "Toll free numbers are not available in this country.";
}
让我知道这是否有帮助。
为什么不把它包在try catch
里呢?
try {
$tollFreeNumbers = $twilio->availablePhoneNumbers($iso)->tollFree->read($params);
} catch(Exception $e) {
$tollFreeNumbers = [];
}