hipcall / telnyx-php
Hipcall的Telnyx PHP库
Requires
- php: >=8.1.0
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- paragonie/sodium_compat: ^1.13
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.15
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.3
- symfony/process: ~3.4
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扩展
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_TLSv1或CURL_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_TLSv1和CURL_SSLVERSION_TLSv1_2。
致谢
感谢Telnyx PHP的贡献者和维护者向其作者致以深深的感谢,这些作者基于此项目。感谢您开发出如此优雅、可使用和可扩展的代码,并与社区分享。