hipcall/telnyx-php

Hipcall的Telnyx PHP库

v0.1.1 2023-07-17 15:34 UTC

This package is auto-updated.

Last update: 2024-09-17 18:21:37 UTC


README

我们([Hipcall])[https://www.hipcall.com]由于某些原因需要扩展Telnyx PHP SDK。如果您是Telnyx用户,请使用他们官方的PHP SDK

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

库还提供其他功能。例如

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

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

要求

PHP 8.1.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请求发送之前,在每个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的贡献者和维护者向其作者致以深深的感谢,这些作者基于此项目。感谢您开发出如此优雅、可使用和可扩展的代码,并与社区分享。