infobip / infobip-api-php-client
PHP库,用于调用Infobip的API
Requires
- php: >=8.0
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- doctrine/annotations: ~1.0
- guzzlehttp/guzzle: ~7.0
- phpdocumentor/reflection-docblock: ^5.0|^6.0
- symfony/cache: ^5.0|^6.0
- symfony/property-access: ^5.0|^6.0
- symfony/serializer: ^5.0|^6.0
- symfony/validator: ^5.0|^6.0
Requires (Dev)
- phpunit/phpunit: ~9.0
This package is auto-updated.
Last update: 2024-08-26 08:47:15 UTC
README
这是一个Infobip API的PHP客户端,你可以将其作为依赖项添加到你的应用程序中,以便使用Infobip API。要使用它,你需要一个Infobip账户。如果没有账户,你可以在这里创建一个免费试用账户。
infobip-api-php-client
基于OpenAPI规范构建,由Infobip OSCAR服务生成,该服务由OpenAPI Generator提供支持。
目录
文档
有关Infobip API的详细文档可以在这里找到。此库的当前版本包含以下Infobip产品子集
一般信息
对于infobip-api-php-client
版本,我们使用语义版本控制方案。
在MIT许可证下发布。
该库需要PHP版本>= 8.0。
安装
使用Composer
要开始使用该库,请将其添加到你的composer.json
文件中,如下所示。
"require": { "infobip/infobip-api-php-client": "5.0.0" }
然后只需运行composer install
即可下载依赖项。
不使用Composer
如果你的设置阻止你使用composer
,你可以手动下载此包及其所有依赖项,并在代码中引用它们。然而,有一些解决方案可以自动化此过程。其中之一是php-download
在线工具。你可以使用它查找预组合的infobip客户端包,从那里下载并用于你的项目,而无需手动收集依赖项。
快速入门
初始化配置和HTTP客户端
该库支持API密钥头部认证方法。一旦你拥有一个Infobip账户,你可以通过Infobip的API密钥管理页面管理你的API密钥。
要查看基本URL,请使用你的Infobip凭据登录到Infobip API资源中心或访问你的Infobip账户。
use Infobip\Configuration; $configuration = new Configuration( host: 'your-base-url', apiKey: 'your-api-key' );
发送短信
下面是一个向单个收件人发送单个短信消息的简单示例。
use Infobip\ApiException; use Infobip\Model\SmsAdvancedTextualRequest; use Infobip\Model\SmsDestination; use Infobip\Model\SmsTextualMessage; $sendSmsApi = new SmsApi(config: $configuration); $message = new SmsTextualMessage( destinations: [ new SmsDestination(to: '41793026727') ], from: 'InfoSMS', text: 'This is a dummy SMS message sent using infobip-api-php-client' ); $request = new SmsAdvancedTextualRequest(messages: [$message]); try { $smsResponse = $sendSmsApi->sendSmsMessage($request); } catch (ApiException $apiException) { // HANDLE THE EXCEPTION }
在ApiException
对象中提供的字段包括表示HTTP响应码的code
以及responseHeaders
和responseBody
。此外,您还可以使用getResponseObject
方法获取反序列化后的响应体。
$apiException->getCode(); $apiException->getResponseHeaders(); $apiException->getResponseBody(); $apiException->getResponseObject();
此外,您还可以从SmsResponse
对象中检索到bulkId
和messageId
,用于故障排除或获取特定消息或大批量的投递报告。只有当您向多个目标地址发送消息或在单个请求中发送多条消息时,才会收到批处理ID。
$bulkId = $smsResponse->getBulkId(); $messages = $smsResponse->getMessages(); $messageId = (!empty($messages)) ? current($messages)->getMessageId() : null;
接收短信投递报告
对于您发送的每条短信,我们都可以实时向您发送投递报告。您只需要在发送短信时在SmsTextualMessage
中的notifyUrl
字段中指定您的端点,或通过联系我们的支持团队support@infobip.com来订阅报告。
您可以使用库中的数据模型和预配置的Infobip\ObjectSerializer
序列化器。
webhook实现示例
use Infobip\Model\SmsReportResponse; use Infobip\ObjectSerializer; $objectSerializer = new ObjectSerializer(); $data = \file_get_contents('php://input'); /** * @var SmsReportResponse $deliveryResult */ $deliveryResult = $objectSerializer->deserialize($data, SmsReportResponse::class); foreach ($deliveryResult->getResults() ?? [] as $report) { echo $report->getMessageId() . " - " . $report->getStatus()->getName() . "\n"; }
如果您希望使用自己的序列化器,请注意支持的日期格式。
获取投递报告
如果您无法在端点接收实时投递报告,您可以使用messageId
或bulkId
来获取它们。每个请求将返回一批投递报告 - 仅一次。有关更多详细信息,请参阅文档。
$deliveryReports = $sendSmsApi ->getOutboundSmsMessageDeliveryReports( bulkId: 'some-bulk-id', messageId: 'some-message-id', limit: 10 ); foreach ($deliveryReports->getResults() ?? [] as $report) { echo $report->getMessageId() . " - " . $report->getStatus()->getName() . "\n"; }
Unicode与短信预览
Infobip API支持Unicode字符,并自动检测编码。Unicode和非标准GSM字符使用额外的空间,避免不愉快的惊喜,并检查不同的消息配置将如何影响您的消息文本、字符数和消息部分。
use Infobip\Model\SmsPreviewRequest; $previewResponse = $sendSmsApi ->previewSmsMessage( new SmsPreviewRequest( text: 'Let\'s see how many characters will remain unused in this message.' ) ); foreach ($previewResponse->getPreviews() ?? [] as $preview) { echo sprintf( 'Characters remaining: %s, text preview: %s', $preview->getCharactersRemaining(), $preview->getTextPreview() ) . PHP_EOL; }
接收传入短信
如果您希望从您的订阅者接收短信消息,我们可以实时将它们发送给您。当您购买并配置一个能够接收短信的号码时,请指定您的端点,如文档中所述。例如:https://{yourDomain}/incoming-sms
。webhook实现示例
use Infobip\ObjectSerializer; use Infobip\Model\SmsInboundMessageResult; $objectSerializer = new ObjectSerializer(); $data = \file_get_contents('php://input'); /** * @var SmsInboundMessageResult $messages */ $messages = $objectSerializer->deserialize($data, SmsInboundMessageResult::class); foreach ($messages->getResults() ?? [] as $message) { echo $message-> getFrom() . " - " . $message-> getCleanText() . "\n"; }
双因素认证(2FA)
有关2FA快速入门指南,请参阅这些示例。
发送电子邮件
有关发送电子邮件快速入门指南,请参阅这些示例。
有关WhatsApp快速入门指南,请查看这些示例。
寻求帮助
对于任何问题或功能请求,请随时在存储库中提交问题。至于拉取请求,请查看与它相关的CONTRIBUTING
文件中的详细信息 - 简而言之,我们不会合并任何拉取请求,此代码是自动生成的。
此代码是自动生成的,我们无法从此处合并任何拉取请求,但我们将直接在我们的流水线中审查和实现更改,如CONTRIBUTING
文件中所述。
对于需要我们立即关注的事项,请联系我们 @ support@infobip.com。