错误:[HTTP 400] 无法创建记录:+xxxxxxx 不适用于所有号码 IncomingPhoneNumber API

问题描述 投票:0回答:2

以下代码经过测试凭证进行了测试并按预期工作,但是当尝试使用生产凭证购买号码时,我总是得到

[HTTP 400] Unable to create record: +xxxxxxx is not available

下面是检索可用号码的代码。

public function getAvailablePhoneNumbers(): array
    {
        if ($this->useTestClient) {
            return [self::VALID_TEST_MAGIC_PHONE];
        }

        $numbers = $this->getClient()
            ->availablePhoneNumbers('US')
            ->local
            ->read([
                'smsEnabled' => true,
            ]);

        /* @var LocalInstance $number */
        return array_map(function ($number) {
            return $number->phoneNumber;
        }, $numbers);
    }

检索

phoneNumber
列表后,我尝试获取列表中的一个数字,或者如果失败则传递到列表中的下一个数字,列表中的所有数字都会失败并出现相同的错误,尝试获取它的代码是.

public function purchaseNumber(string $number): \Twilio\Rest\Api\V2010\Account\IncomingPhoneNumber\LocalInstance
    {
        return $this->getClient()
            ->incomingPhoneNumbers
            ->local
            ->create($number, [
                'SmsApplicationSid' => config('twilio.sms_app_sid'),
            ]);
    }

编辑:我尝试从 Twilio 控制台的日志中获取不可用的数字之一,并且成功了。

php twilio twilio-api twilio-php
2个回答
1
投票

我对 PHP 不是很熟悉,但根据文档,语法是:

$incoming_phone_number = $twilio->incomingPhoneNumbers
                                ->create(["phoneNumber" => "+15017122661"]);

尝试使用示例代码和已知的可用电话号码 - 包括正确的“phoneNumber”参考。如果它有效,那么问题出在您的 getAvailablePhoneNumbers() 或您如何引用 $number 数组中。


0
投票

问题是我们围绕 Twilio SDK 创建的服务包装器在错误的时间交换测试凭据,因此在测试 API 中这些数字实际上不可用。

有助于调试的方法是使用环境变量

DEBUG_HTTP_TRAFFIC
强制 Twilio SDK 输出请求的调试信息,我们注意到使用了错误的凭据。

解决方案是修复包装器代码以在测试模式之外使用正确的凭据。

© www.soinside.com 2019 - 2024. All rights reserved.