infobip/infobip-api-php-client

PHP库,用于调用Infobip的API

5.1.4 2023-06-19 10:41 UTC

README

Packagist MIT License

这是一个Infobip API的PHP客户端,你可以将其作为依赖项添加到你的应用程序中,以便使用Infobip API。要使用它,你需要一个Infobip账户。如果没有账户,你可以在这里创建一个免费试用账户。

infobip-api-php-client基于OpenAPI规范构建,由Infobip OSCAR服务生成,该服务由OpenAPI Generator提供支持。

Infobip

目录

文档

有关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以及responseHeadersresponseBody。此外,您还可以使用getResponseObject方法获取反序列化后的响应体。

    $apiException->getCode();
    $apiException->getResponseHeaders();
    $apiException->getResponseBody();
    $apiException->getResponseObject();

此外,您还可以从SmsResponse对象中检索到bulkIdmessageId,用于故障排除或获取特定消息或大批量的投递报告。只有当您向多个目标地址发送消息或在单个请求中发送多条消息时,才会收到批处理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";
    }

如果您希望使用自己的序列化器,请注意支持的日期格式

获取投递报告

如果您无法在端点接收实时投递报告,您可以使用messageIdbulkId来获取它们。每个请求将返回一批投递报告 - 仅一次。有关更多详细信息,请参阅文档

    $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

有关WhatsApp快速入门指南,请查看这些示例

寻求帮助

对于任何问题或功能请求,请随时在存储库中提交问题。至于拉取请求,请查看与它相关的CONTRIBUTING 文件中的详细信息 - 简而言之,我们不会合并任何拉取请求,此代码是自动生成的。

此代码是自动生成的,我们无法从此处合并任何拉取请求,但我们将直接在我们的流水线中审查和实现更改,如CONTRIBUTING 文件中所述。

对于需要我们立即关注的事项,请联系我们 @ support@infobip.com