caherrera / infobip-api-php-client
PHP短信库
Requires
- netresearch/jsonmapper: 3.1.1
Replaces
This package is auto-updated.
Last update: 2024-08-29 05:41:53 UTC
README
先决条件
安装
要在项目中使用Infobip API PHP客户端,您需要在composer.json
文件中添加以下内容
"require": {
"caherrera/infobip-api-php-client": "dev-master"
}
然后在项目的根目录中运行composer install
命令。
如果您的设置阻止您使用composer
,您可以手动下载此包及其所有依赖项,并在代码中引用它们。但是,有解决方案可以自动化此过程。其中之一是php-download
在线工具。您可以使用它查找预构建的infobip客户端包,从中下载并用于您的项目,而无需手动收集依赖项。
运行示例
在开始任何示例之前,您必须将特定数据(发送者地址、接收者地址等)填充到caherrera/examples/examples.php
文件中。
然后,取消注释您想测试的示例,并使用以下方式运行PHP脚本,将您的用户名和密码(明文)作为参数
php caherrera/examples/examples.php YOUR_USERNAME YOUR_PASSWORD
基本消息示例
首先需要执行的操作是包含autoload.php
并初始化消息客户端
require_once '<PATH-TO-VENDOR-FOLDER>/autoload.php';
$client = new infobip\api\client\SendSingleTextualSms(new infobip\api\configuration\BasicAuthConfiguration(USERNAME, PASSWORD));
您基本上是在登录Infobip,如果用户名和/或密码不正确,将抛出异常。
下一步是准备消息
$requestBody = new infobip\api\model\sms\mt\send\textual\SMSTextualRequest();
$requestBody->setFrom(FROM);
$requestBody->setTo(TO);
$requestBody->setText("This is an example message.");
现在您已经准备好发送消息
$response = $client->execute($requestBody);
带有通知推送的消息示例
为了发送短信并期望将投递报告推送到某个通知URL,您必须初始化消息客户端
$client = new infobip\api\client\SendMultipleTextualSmsAdvanced(new infobip\api\configuration\BasicAuthConfiguration(USERNAME, PASSWORD));
并准备高级消息
$destination = new infobip\api\model\Destination();
$destination->setTo(TO);
$message = new infobip\api\model\sms\mt\send\Message();
$message->setFrom(FROM);
$message->setDestinations([$destination]);
$message->setText("This is an example message.");
$message->setNotifyUrl(NOTIFY_URL);
$requestBody = new infobip\api\model\sms\mt\send\textual\SMSAdvancedTextualRequest();
$requestBody->setMessages([$message]);
当投递通知作为HTTP POST请求推送到您的服务器时,您可以使用以下代码处理消息体
$mapper = new JsonMapper();
$responseObject = $mapper->map(json_decode($responseBody), new infobip\api\model\sms\mt\reports\SMSReportResponse());
for ($i = 0; $i < count($responseObject->getResults()); ++$i) {
$result = $responseObject->getResults()[$i];
echo "Message ID: " . $result->getMessageId() . "\n";
echo "Sent at: " . $result->getSentAt()->format('y-M-d H:m:s T') . "\n";
echo "Receiver: " . $result->getTo() . "\n";
echo "Status: " . $result->getStatus()->getName() . "\n";
echo "Price: " . $result->getPrice()->getPricePerMessage() . " " . $result->getPrice()->getCurrency() . "\n\n";
}
发送带特殊字符的消息示例
如果您想发送带特殊字符的消息,这是初始化客户端和准备您的消息的方法
$client = new infobip\api\client\SendMultipleTextualSmsAdvanced(new infobip\api\configuration\BasicAuthConfiguration(USERNAME, PASSWORD));
$destination = new infobip\api\model\Destination();
$destination->setTo(TO);
$language = new infobip\api\model\sms\mt\send\Language();
//specific language code (TR stands for Turkish)
$language->setLanguageCode("TR");
//use single shift table for specific language ('false' or 'true')
$language->setSingleShift(true);
//use locking shift table for specific language ('false' or 'true')
$language->setLockingShift(false);
$message = new infobip\api\model\sms\mt\send\Message();
$message->setFrom(FROM);
$message->setDestinations([$destination]);
$message->setText("Artık Ulusal Dil Tanımlayıcısı ile Türkçe karakterli smslerinizi rahatlıkla iletebilirsiniz.");
$message->setLanguage($language);
$requestBody = new infobip\api\model\sms\mt\send\textual\SMSAdvancedTextualRequest();
$requestBody->setMessages([$message]);
当前支持的语言(及其语言代码)如下:西班牙语 - "ES"
,葡萄牙语 - "PT"
,土耳其语 - "TR"
。
号码上下文示例
初始化号码上下文查询客户端
$client = new infobip\api\client\NumberContextQuery(new infobip\api\configuration\BasicAuthConfiguration(USERNAME, PASSWORD));
创建请求体
$requestBody = new infobip\api\model\nc\query\NumberContextRequest();
$requestBody->setTo(TO);
检索号码上下文
$response = $client->execute($requestBody);
$numberContext = $response->getResults()[0];
echo "Phone number: " . $numberContext->getTo() . "\n";
echo "MccMnc: " . $numberContext->getMccMnc() . "\n";
echo "Original country prefix: " . $numberContext->getOriginalNetwork()->getCountryPrefix() . "\n";
echo "Original network prefix: " . $numberContext->getOriginalNetwork()->getNetworkPrefix() . "\n";
echo "Serving MSC: " . $numberContext->getServingMSC();
带有通知推送的号码上下文示例
与前面的示例类似,但这次您必须设置结果将被推送到的通知URL
$client = new infobip\api\client\NumberContextNotify(new infobip\api\configuration\BasicAuthConfiguration(USERNAME, PASSWORD));
$requestBody = new infobip\api\model\nc\notify\NumberContextRequest();
$requestBody->setTo(TO);
$requestBody->setNotifyUrl(NOTIFY_URL);
$response = $client->execute($requestBody);
当号码上下文通知作为HTTP POST请求推送到您的服务器时,您可以使用以下代码处理消息体
$mapper = new JsonMapper();
$responseObject = $mapper->map(json_decode($responseBody), new infobip\api\model\nc\query\NumberContextResponse());
$numberContext = $responseObject->getResults()[0];
echo "Phone number: " . $numberContext->getTo() . "\n";
echo "MccMnc: " . $numberContext->getMccMnc() . "\n";
echo "Original country prefix: " . $numberContext->getOriginalNetwork()->getCountryPrefix() . "\n";
echo "Original network prefix: " . $numberContext->getOriginalNetwork()->getNetworkPrefix() . "\n";
echo "Status: " . $numberContext->getStatus()->getName();
检索入站消息示例
需要初始化的客户端是
$client = new infobip\api\client\GetReceivedMessages(new infobip\api\configuration\BasicAuthConfiguration(USERNAME, PASSWORD));
然后您必须创建执行上下文
$context = new infobip\api\model\sms\mo\reports\GetReceivedMessagesExecuteContext;
如果您想过滤入站消息,可以通过设置执行上下文类的任何字段来实现。
响应类型将是\infobip\api\model\sms\mo\reports\MOReportResponse
$response = $client->execute($context);
for ($i = 0; $i < count($response->getResults()); ++$i) {
$result = $response->getResults()[$i];
echo "Message ID: " . $result->getMessageId() . "\n";
echo "Received at: " . $result->getReceivedAt()->format('y-M-d H:m:s T') . "\n";
echo "Sender: " . $result->getFrom() . "\n";
echo "Receiver: " . $result->getTo() . "\n";
echo "Message text: " . $result->getText() . "\n\n";
}
入站消息推送示例
接收入站消息的订阅可以在Infobip平台上设置。当入站消息通知以HTTP POST请求的形式推送到您的服务器时,您可以使用以下代码处理消息体:
$mapper = new JsonMapper();
$responseObject = $mapper->map(json_decode($responseBody), new infobip\api\model\sms\mo\reports\MOReportResponse());
$result = $responseObject->getResults()[0];
echo "Message ID: " . $result->getMessageId() . "\n";
echo "Received at: " . $result->getReceivedAt()->format('y-M-d H:m:s T') . "\n";
echo "Sender: " . $result->getFrom() . "\n";
echo "Receiver: " . $result->getTo() . "\n";
echo "Message text: " . $result->getText() . "\n";
echo "Keyword: " . $result->getKeyword() . "\n";
echo "Clean text: " . $result->getCleanText() . "\n";
echo "Sms count: " . $result->getSmsCount() . "\n";
许可证
此库遵循Apache许可证,版本2.0