caherrera/infobip-api-php-client

2.6.6 2021-03-03 21:33 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