brolese / infobip-api-php-client
用于消费 Infobip API 的 PHP 库,固定使用 guzzle 7.3
Requires
- php: >=7.2
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- guzzlehttp/guzzle: ^6.5
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.12
This package is auto-updated.
Last update: 2024-09-08 19:48:29 UTC
README
这是一个 Infobip API 的 PHP 客户端,你可以将其作为依赖项添加到你的应用程序中,以添加 Infobip API。使用此客户端,你需要一个 Infobip 账户。如果没有,你可以在 这里 创建一个免费试用账户。
基于 OpenAPI 规范构建,由 OpenAPI Generator 提供支持。
目录
文档
Infobip API 文档可以在 这里 找到。
基本信息
对于 infobip-api-php-client 版本,我们使用 语义版本方案。
在 MIT 许可证下发布。
PHP 版本
所有高于 7.2 的版本
安装
使用 Composer
要开始使用此库,请将其添加到 composer.json 文件中的依赖项,如下所示。
"require": { "infobip/infobip-api-php-client": "3.0.0" }
然后只需运行 composer install 即可下载依赖项。
不使用 Composer
如果你的设置阻止你使用 composer,你可以手动下载此软件包及其所有依赖项,并在你的代码中引用它们。但是,有一些解决方案可以自动化此过程。其中之一是 php-download 在线工具。你可以使用它来查找预组成的 infobip 客户端软件包,从那里下载它并在你的项目中使用,而无需手动收集依赖项。
快速入门
初始化配置和 HTTP 客户端
我们支持多种身份验证方法,例如,你可以使用 API Key Header,在这种情况下,API_KEY_PREFIX 将是 "App"。
API_KEY 可以通过 Web 界面 创建。
要查看 URL_BASE_PATH,请使用你的 Infobip 凭据登录到 Infobip API 文档 中心。
$configuration = (new Configuration()) ->setHost(URL_BASE_PATH) ->setApiKeyPrefix('Authorization', API_KEY_PREFIX) ->setApiKey('Authorization', API_KEY); $client = new GuzzleHttp\Client();
发送短信
发送短信消息的简单示例。
$sendSmsApi = new SendSMSApi($client, $configuration); $destination = (new SmsDestination())->setTo('41793026727'); $message = (new SmsTextualMessage()) ->setFrom('InfoSMS') ->setText('This is a dummy SMS message sent using infobip-api-php-client') ->setDestinations([$destination]); $request = (new SmsAdvancedTextualRequest()) ->setMessages([$message]);
try { $smsResponse = $sendSmsApi->sendSmsMessage($request); } catch (Throwable $apiException) { // HANDLE THE EXCEPTION }
在 ApiException 对象中提供的字段是 code,它指的是 HTTP 响应码,以及 responseHeaders 和 responseBody。此外,你可以使用 getResponseObject 方法获取反序列化的响应体。
$apiException->getCode(); $apiException->getResponseHeaders(); $apiException->getResponseBody(); $apiException->getResponseObject();
此外,你可以从 SmsResponse 对象中提取 bulkId 和 messageId(s),并使用它们来获取给定消息或批次的投递报告。只有在发送消息到多个目标地址或单个请求中的多个消息时,才会收到批量 ID。
$bulkId = $smsResponse->getBulkId(); $messageId = $smsResponse->getMessages()[0]->getMessageId();
接收短信消息投递报告
对于您发送的每条短信,我们都可以实时向您发送消息投递报告。您只需在发送短信时指定您的端点,例如 https://{yourDomain}/delivery-reports,在 SmsTextualMessage 的 notifyUrl 字段中,或者通过联系我们的支持团队来订阅报告。
您可以使用库中的数据模型和预配置的 \Infobip\ObjectSerializer 序列化器。
Webhook实现示例
use \Infobip\ObjectSerializer; $data = file_get_contents("php://input"); $type = '\Infobip\Model\SmsDeliveryResult'; $deliveryReports = ObjectSerializer::deserialize($data, $type); foreach ($deliveryReports->getResults() as $report) { echo $report->getMessageId() . " - " . $report->getStatus()->getName() . "\n"; }
如果您希望使用自己的序列化器,请注意支持的 日期格式。
获取投递报告
如果您无法接收端点的实时投递报告,可以使用 messageId 或 bulkId 来获取。每个请求将返回一批投递报告 - 只返回一次。
$numberOfReportsLimit = 10; $deliveryReports = $sendSmsApi->getOutboundSmsMessageDeliveryReports($bulkId, $messageId, $numberOfReportsLimit); foreach ($deliveryReports->getResults() as $report) { echo $report->getMessageId() . " - " . $report->getStatus()->getName() . "\n"; }
Unicode & SMS预览
Infobip API支持Unicode字符并自动检测编码。Unicode和非标准GSM字符使用额外空间,避免不愉快的惊喜,并检查不同的消息配置将如何影响您的消息文本、字符数和消息部分。
$previewResponse = $sendSmsApi->previewSmsMessage((new SmsPreviewRequest()) ->setText("Let's see how many characters will remain unused in this message.")); echo $previewResponse;
接收传入短信
如果您希望接收来自您的订阅者的短信消息,我们可以实时将它们发送给您。当您购买并配置一个能够接收短信的号码时,请指定您的端点,如此处所述,例如 https://{yourDomain}/incoming-sms。Webhook实现示例
use \Infobip\ObjectSerializer; $data = file_get_contents("php://input"); $type = '\Infobip\Model\SmsInboundMessageResult'; $messages = ObjectSerializer::deserialize($data, $type); foreach ($messages->getResults() as $message) { echo $message-> getFrom() . " - " . $message-> getCleanText() . "\n"; }
双因素认证(2FA)
有关2FA快速入门指南,请参阅这些示例。
寻求帮助
请随意在存储库中提出任何问题或功能请求。关于拉取请求,请查看与它相关的CONTRIBUTING 文件 - 简而言之,我们不会合并任何拉取请求,此代码是自动生成的。
然而,如果这是一些需要我们立即关注的事情,请随时通过support@infobip.com联系我们。