Twilio - 在 php 中绕过".json not found"



我正在尝试检查免费电话号码,它按预期工作。但是,我的问题是一些国家没有免费电话号码。

在这些国家/地区使用相同的代码会引发 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 = [];
}

最新更新