【问题标题】:Transforming Twilio library request into Guzzle request将 Twilio 库请求转换为 Guzzle 请求
【发布时间】:2021-11-30 13:50:04
【问题描述】:

不幸的是,我们的项目在 PHP 7.0 上运行,我们目前无法升级它。并且 Twilio 的库在包含 trusthub API 支持的版本上使用 PHP 7.2+。

所以我正在尝试使用 Guzzle 而不是他们的库,从这个 doc page 执行“创建类型的最终用户:customer_profile_business_information”的请求,并且我正在按照 curl 示例中的说明进行操作。

除了看起来被忽略的 Attributes 字段之外,一切都运行良好,它返回一个空白对象,当然在他们的界面上它也没有显示。

所以万一链接断开,curl代码示例如下:

ATTRIBUTES=$(cat << EOF
{
    "business_identity": "direct_customer",
    "business_industry": "EDUCATION",
    "business_name": "acme business",
    "business_regions_of_operation": "USA_AND_CANADA",
    "business_registration_identifier": "DUNS",
    "business_registration_number": "123456789",
    "business_type": "Partnership",
    "social_media_profile_urls": "",
    "website_url": "test.com"
}
EOF
)

curl -X POST https://trusthub.twilio.com/v1/EndUsers \
--data-urlencode "Attributes=$ATTRIBUTES" \
--data-urlencode "FriendlyName=friendly name" \
--data-urlencode "Type=customer_profile_business_information" \
-u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN

这是我制作的 PHP 代码:

<?php
// $company is a model
$token = base64_encode(\Config::get('twilio.accountSid') . ':' . \Config::get('twilio.authToken'));
$client = new \GuzzleHttp\Client(['base_uri' => 'https://trusthub.twilio.com/v1/', 'headers' => ['Authorization' => "Basic {$token}", 'Content-Type' => 'application/x-www-form-urlencoded']]);
$client->post("EndUsers", [
    'form_params' => [
        'FriendlyName' => $company->business_name,
        'Type' => 'customer_profile_business_information',
        'Attributes' => [
            'business_name' => $company->business_name,
            'business_identity' => 'direct_customer',
            'business_type' => $company->business_type,
            'business_industry' => $company->industry->twilio_name,
            'business_registration_identifier' => 'EIN',
            'business_registration_number' => $company->tax_id_number,
            'business_regions_of_operation' => $company->region,
            'website_url' => $company->website,
            'social_media_profile_urls' => '',
        ]
    ]
]);

我在这里遗漏了什么没有保存Attributes 数据吗?

PS:其他字段(FriendlyName 和 Type)正在成功保存。

谢谢!

【问题讨论】:

    标签: php twilio guzzle twilio-api twilio-php


    【解决方案1】:

    这里是 Twilio 开发者宣传员。

    Twilio 资源的 Attributes 属性往往是 JSON 字符串,我认为这也是这种情况。因此,您需要先json_encode 数组,而不是传递属性数组。这应该适合你:

    <?php
    // $company is a model
    $token = base64_encode(\Config::get('twilio.accountSid') . ':' . \Config::get('twilio.authToken'));
    $client = new \GuzzleHttp\Client(['base_uri' => 'https://trusthub.twilio.com/v1/', 'headers' => ['Authorization' => "Basic {$token}", 'Content-Type' => 'application/x-www-form-urlencoded']]);
    $client->post("EndUsers", [
        'form_params' => [
            'FriendlyName' => $company->business_name,
            'Type' => 'customer_profile_business_information',
            'Attributes' => json_encode([
                'business_name' => $company->business_name,
                'business_identity' => 'direct_customer',
                'business_type' => $company->business_type,
                'business_industry' => $company->industry->twilio_name,
                'business_registration_identifier' => 'EIN',
                'business_registration_number' => $company->tax_id_number,
                'business_regions_of_operation' => $company->region,
                'website_url' => $company->website,
                'social_media_profile_urls' => '',
            ])
        ]
    ]);
    

    【讨论】:

    • 我之前试过了,得到了错误 20500(Twilio 内部服务器错误)
    • 哦,奇怪。我的意思是,那是what the Twilio PHP library does too,所以我不确定还有什么建议。可以用上面的代码再试一次吗?
    • 是的,刚刚做了,得到了同样的 20500 错误:(
    • 您能否使用curl 发出示例请求?使用示例数据还是使用您自己的数据?最好的办法可能是 contact Twilio support,因为 20500 错误在 Twilio 方面。
    • 是的,根据文档在终端上使用 curl 可以正常工作。是的,我不久前打开了一张支持他们的票,仍在等待他们的回复。我将深入研究 Twilio 库,看看我是否发现了它们的不同之处。感谢您尝试帮助我 :)
    猜你喜欢
    • 2017-01-13
    • 2015-06-01
    • 2019-12-17
    • 2015-11-02
    • 1970-01-01
    • 2016-12-04
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多