Twilio - 绕过 php 中的“.json 未找到”

Twilio - Bypass ".json not found" in php

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

在这些国家/地区使用相同的代码会引发 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] Unable to fetch page: The requested resource /2010-04-01/Accounts/ACxxxxx/AvailablePhoneNumbers/CY/TollFree.json was not found"

使用此代码会导致 CY 崩溃,但适用于英国、美国、加拿大等国家。我应该添加带有硬编码国家/地区的 if 语句吗? (我真的不喜欢这个解决方案,但这是我能想到的)。我的意思是:

if ($iso == 'GB' || $iso == 'US' || $iso == 'CA') {     // and many more
    $tollFreeNumbers = $twilio->availablePhoneNumbers($iso)->tollFree->read($params);
}

为什么不把它包裹在 try catch 中?

try {
    $tollFreeNumbers = $twilio->availablePhoneNumbers($iso)->tollFree->read($params);
} catch(\Exception $e) {
    $tollFreeNumbers = [];
}

这里是 Twilio 开发人员布道者。

而不是预先用条件来保护(当我们将来在其他国家/地区添加免费电话号码时它可能会过时),为什么不捕获错误并 return 向用户发送消息说免费电话号码在他们正在搜索的国家/地区不可用。

类似于:

try {
  $tollFreeNumbers = $twilio->availablePhoneNumbers($iso)->tollFree->read($params);
} catch (Exception $e) {
  $tollFreeNumbers = [];
  $message = "Toll free numbers are not available in this country.";
}

如果有帮助请告诉我。