telnyx/telnyx-php

Telnyx PHP 库

2.8.1 2023-09-14 10:09 UTC

README

Build Status Latest Stable Version Total Downloads License Code Coverage Join Slack

Telnyx PHP 库提供了从 PHP 编写的应用程序中方便地访问 Telnyx API 的方法。它包含一组预定义的类,这些类可以从 API 响应中动态初始化自身。

库还提供了其他功能。例如

  • 易于配置路径,快速设置和使用。
  • 分页助手。
  • 根据 Telnyx API 的预期内置参数序列化机制。

您可以在 telnyx.com 注册 Telnyx 账户。

要求

PHP 5.6.0 及更高版本。

Composer

您可以通过 Composer 安装绑定。运行以下命令

$ composer require telnyx/telnyx-php

手动安装

如果您不想使用 Composer,可以下载最新的 发布版。然后,为了使用绑定,包括 init.php 文件。

require_once('/path/to/telnyx-php/init.php');

依赖

需要一些 PHP 扩展

  • curl,尽管您可以选择使用自己的非 cURL 客户端
  • json
  • mbstring(多字节字符串)

Composer 将处理这些依赖。如果您手动安装,请确保这些扩展可用。

入门

基本示例

\Telnyx\Telnyx::setApiKey('YOUR_API_KEY_HERE');

// Get a list of messaging profiles
$result = \Telnyx\MessagingProfile::all();

// Output list of messaging profiles
print_r($result);

文档

请参阅最新文档:https://developers.telnyx.com/docs/api/v2/overview

自定义请求超时

要修改请求超时(连接或总时间,以秒为单位),您需要告诉 API 客户端使用其默认值之外的 CurlClient。您将在那个 CurlClient 中设置超时。

// set up your tweaked Curl client
$curl = new \Telnyx\HttpClient\CurlClient();
$curl->setTimeout(10); // default is Telnyx\HttpClient\CurlClient::DEFAULT_TIMEOUT
$curl->setConnectTimeout(5); // default is Telnyx\HttpClient\CurlClient::DEFAULT_CONNECT_TIMEOUT

echo $curl->getTimeout(); // 10
echo $curl->getConnectTimeout(); // 5

// tell Telnyx to use the tweaked client
\Telnyx\ApiRequestor::setHttpClient($curl);

// use the Telnyx API client as you normally would

自定义 cURL 选项(代理)

需要为请求设置代理?将必需的 CURLOPT_* 数组传递给 CurlClient 构造函数,使用与 curl_stopt_array() 相同的语法。这将设置 SDK 所做的每个 HTTP 请求的默认 cURL 选项,尽管即使在此处设置,客户端也会覆盖许多更常见的选项(例如超时;有关如何设置这些超时,请参见上面)。

// set up your tweaked Curl client
$curl = new \Telnyx\HttpClient\CurlClient([CURLOPT_PROXY => 'proxy.local:80']);
// tell Telnyx to use the tweaked client
\Telnyx\ApiRequestor::setHttpClient($curl);

或者,可以将可调用的函数传递给 CurlClient 构造函数,该函数根据请求输入返回上述数组。请参见 tests/CurlClientTest.php 中的 testDefaultOptions() 以了解此行为的示例。请注意,在发送请求之前,在每次 API 请求的开始时调用该可调用的函数。

配置记录器

库执行最少的日志记录,但它可以配置为使用 PSR-3 兼容的记录器,以便消息最终出现在那里而不是 error_log

\Telnyx\Telnyx::setLogger($logger);

访问响应数据

您可以通过 getLastResponse() 在任何对象上访问最后 API 响应的数据。

$order = \Telnyx\NumberOrder::create(['phone_number' => '+18665552368']);
print_r($order->getLastResponse()->headers);

SSL / TLS 兼容性问题

Telnyx 的 API 现在要求所有连接都使用 TLS 1.2。一些系统(尤其是某些较旧的 CentOS 和 RHEL 版本)能够使用 TLS 1.2,但默认会使用 TLS 1.0 或 1.1。

建议的操作是升级您的cURL和OpenSSL包,以便默认使用TLS 1.2,但如果这不可能实现,您可能可以通过将CURLOPT_SSLVERSION选项设置为CURL_SSLVERSION_TLSv1CURL_SSLVERSION_TLSv1_2来解决此问题。

$curl = new \Telnyx\HttpClient\CurlClient([CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1]);
\Telnyx\ApiRequestor::setHttpClient($curl);

按请求配置

对于在进程生命周期内需要使用多个密钥的应用,也可以设置每个请求的密钥和/或账户。

\Telnyx\NumberOrder::all([], [
    'api_key' => 'KEY0123...'
]);

\Telnyx\NumberOrder::retrieve("12ade33a-21c0-473b-b055-b3c836e1c292", [
    'api_key' => 'KEY0123...'
]);

自动重试

库可以被配置为自动重试因间歇性网络问题而失败的请求。

\Telnyx\Telnyx::setMaxNetworkRetries(2);

开发

单元测试依赖于模拟服务器,因此所有单元测试都通过Docker运行。要运行所有单元测试,请执行

docker-compose run --rm php composer test

使用代码覆盖率运行单元测试需要您构建带有XDEBUG=1的Docker容器

docker-compose build --build-arg XDEBUG=1

然后以以下方式运行单元测试

docker-compose run --rm php composer test-coverage

插件开发者

您正在编写一个集成Telnyx并嵌入我们库的插件吗?那么请使用setAppInfo函数来标识您的插件。例如

\Telnyx\Telnyx::setAppInfo("MyCustomPlugin", "1.2.3", "https://customplugin.yoursite.com");

该方法应在发送任何请求到API之前调用一次。第二个和第三个参数是可选的。

SSL / TLS配置选项

请参阅上面的“SSL / TLS兼容性问题”段落以获取完整上下文。如果您想确保您的插件可以在所有系统上使用,您应该添加一个配置选项,让用户选择不同的CURLOPT_SSLVERSION值:无(默认),CURL_SSLVERSION_TLSv1CURL_SSLVERSION_TLSv1_2

致谢

感谢Telnyx PHP的贡献者和维护者向Stripe PHP的作者表示深深的感激,该项目基于此项目。感谢您开发出如此优雅、实用和可扩展的代码,并与社区分享。