infobip / oneapi
PHP 的 Infobip OneAPI 库
This package is not auto-updated.
Last update: 2022-02-01 12:42:18 UTC
README
#OneApi PHP 客户端
注意:对于非 composer 版本,切换到以下 仓库
##安装
将以下内容添加到您的 composer.json
文件中。
{
"require": {
"infobip/oneapi": "dev-master"
}
}
##基本消息示例
首先包含 autoload.php
并使用您的用户名和密码初始化消息客户端
require_once '<PATH-TO-VENDOR-FOLDER>\autoload.php';
$smsClient = new \infobip\SmsClient(USERNAME, PASSWORD);
如果您的 用户名 和/或 密码
错误,将会抛出异常。
准备消息
$smsMessage = new \infobip\models\SMSRequest();
$smsMessage->senderAddress = SENDER_ADDRESS;
$smsMessage->address = DESTINATION_ADDRESS;
$smsMessage->message = 'Hello world';
发送消息
$smsMessageSendResult = $smsClient->sendSMS($smsMessage);
稍后您可以查询消息的投递状态
// You can use $clientCorrelator or $smsMessageSendResult as an method call argument here:
$smsMessageStatus = $smsClient->queryDeliveryStatus($smsMessageSendResult);
$deliveryStatus = $smsMessageStatus->deliveryInfo[0]->deliveryStatus;
echo 'Success:', $smsMessageStatus->isSuccess(), "\n";
echo 'Status:', $deliveryStatus, "\n";
if( ! $smsMessageStatus->isSuccess()) {
echo 'Message id:', $smsMessageStatus->exception->messageId, "\n";
echo 'Text:', $smsMessageStatus->exception->text, "\n";
echo 'Variables:', $smsMessageStatus->exception->variables, "\n";
}
可能的状态有:DeliveredToTerminal(已投递到终端),DeliveryUncertain(投递不确定),DeliveryImpossible(无法投递),MessageWaiting(消息等待)和 DeliveredToNetwork(已投递到网络)。
##带有通知推送的消息示例
与标准消息示例相同,但在准备消息时
$smsMessage = new \infobip\models\SMSRequest();
$smsMessage->senderAddress = SENDER_ADDRESS;
$smsMessage->address = DESTINATION_ADDRESS;
$smsMessage->message = 'Hello world';
$smsMessage->notifyURL = NOTIFY_URL;
当投递通知作为 HTTP POST 请求推送到您的服务器时,您必须使用以下代码处理消息体
$result = \infobip\SmsClient::unserializeDeliveryStatus();
// Process $result here, e.g. just save it to a file:
$f = fopen(FILE_NAME, 'w');
fwrite($f, "\n-------------------------------------\n");
fwrite($f, 'status: ' . $result->deliveryInfo->deliveryStatus . "\n") ;
fwrite($f, 'address: ' . $result->deliveryInfo->address . "\n");
fwrite($f, 'messageId: ' . $result->deliveryInfo->messageId . "\n");
fwrite($f, 'clientCorrelator: '. $result->deliveryInfo->clientCorrelator . "\n");
fwrite($f, 'callback data: ' . $result->callbackData . "\n");
fwrite($f, "\n-------------------------------------\n");
fclose($f);
##带有特殊字符的消息发送示例
如果您想发送包含特殊字符的消息,这是您准备消息的方法
$smsMessage = new \infobip\models\SMSRequest();
$smsMessage->senderAddress = SENDER_ADDRESS;
$smsMessage->address = DESTINATION_ADDRESS;
$smsMessage->message = MESSAGE_TEXT;
$language = new \infobip\models\Language();
//specific language code
$language->languageCode = LANGUAGE_CODE;
//use locking shift table for specific language ('false' or 'true')
$language->useLockingShift = USE_LOCKING_SHIFT;
//use single shift table for specific language ('false' or 'true')
$language->useSingleShift = USE_SINGLE_SHIFT;
$smsMessage->language = $language;
当前支持的语言(及其语言代码)包括:西班牙语 - "SP"
,葡萄牙语 - "PT"
,土耳其语 - "TR"
。
##号码上下文示例
初始化并登录数据连接客户端
$client = new \infobip\DataConnectionProfileClient(USERNAME, PASSWORD);
检索漫游状态(号码上下文)
$response = $client->retrieveRoamingStatus(DESTINATION_ADDRESS);
echo 'Number context result: \n<br>';
echo 'servingMccMnc: ', $response->servingMccMnc,'\n<br>';
echo 'address: ', $response->address,'\n<br>';
echo 'currentRoaming: ', $response->currentRoaming,'\n<br>';
echo 'resourceURL: ', $response->resourceURL,'\n<br>';
echo 'retrievalStatus: ', $response->retrievalStatus,'\n<br>';
echo 'callbackData: ', $response->callbackData,'\n<br>';
echo 'extendedData: ', $response->extendedData,'\n<br>';
echo 'IMSI: ', $response->extendedData->imsi,'\n<br>';
echo 'destinationAddres: ', $response->extendedData->destinationAddress,'\n<br>';
echo 'originalNetworkPrefix: ', $response->extendedData->originalNetworkPrefix,'\n<br>';
echo 'portedNetworkPrefix: ', $response->extendedData->portedNetworkPrefix,'\n<br>';
##带有通知推送的号码上下文示例
类似于前面的示例,但这次您必须设置通知 URL,结果将推送到该 URL
$response = $client->retrieveRoamingStatus(DESTINATION_ADDRESS, NOTIFY_URL);
// if there is no error the query has been succesfully executed
if(!$response->isSuccess()) {
echo 'Error:', $response->exception, "\n";
infobip\utils\Logs::printLogs();
}
当漫游状态通知作为 HTTP POST 请求推送到您的服务器时,您必须使用以下代码处理消息体
$result = DataConnectionProfileClient::unserializeRoamingStatus();
// Process $result here, e.g. just save it to a file:
$f = fopen(FILE_NAME, 'w');
fwrite($f, "\n-------------------------------------\n");
fwrite($f, 'callbackData: ' . $result->callbackData . "\n") ;
fwrite($f, 'servingMccMnc: '. $result->terminalRoamingStatus->servingMccMnc . "\n") ;
fwrite($f, 'address: '. $result->terminalRoamingStatus->address . "\n") ;
fwrite($f, 'currentRoaming: ' . $result->terminalRoamingStatus->currentRoaming . "\n") ;
fwrite($f, 'resourceURL: ' . $result->terminalRoamingStatus->resourceURL . "\n") ;
fwrite($f, 'retrievalStatus: ' . $result->terminalRoamingStatus->retrievalStatus . "\n") ;
fwrite($f, 'terminalRoamingStatus callbackData: ' . $result->terminalRoamingStatus->callbackData . "\n") ;
fwrite($f, 'extendedData: ' . $result->terminalRoamingStatus->extendedData . "\n") ;
fwrite($f, 'IMSI: ', $response->extendedData->imsi,'\n');
fwrite($f, 'destinationAddress: ', $response->extendedData->destinationAddress,'\n');
fwrite($f, 'originalNetworkPrefix: ', $response->extendedData->originalNetworkPrefix,'\n');
fwrite($f, 'portedNetworkPrefix: ', $response->extendedData->portedNetworkPrefix,'\n');
fwrite($f, "\n-------------------------------------\n");
fclose($f);
##检索入站消息示例
使用现有的短信客户端(请参阅基本消息示例以了解如何启动)
$inboundMessages = $smsClient->retrieveInboundMessages();
foreach($inboundMessages->inboundSMSMessage as $message) {
echo $message->dateTime;
echo $message->destinationAddress;
echo $message->messageId;
echo $message->message;
echo $message->resourceURL;
echo $message->senderAddress;
}
##入站消息推送示例
可以在我们的网站上设置接收入站消息的订阅。当入站消息通知作为 HTTP POST 请求推送到您的服务器时,您必须使用以下代码处理消息体
// returns a single message not array of messages
$inboundMessages = \infobip\SmsClient::unserializeInboundMessages();
// Process $inboundMessages here, e.g. just save it to a file:
$f = fopen(FILE_NAME, 'w');
fwrite($f, "\n-------------------------------------\n");
fwrite($f, 'dateTime: ' . $inboundMessages->dateTime . "\n");
fwrite($f, 'destinationAddress: ' . $inboundMessages->destinationAddress . "\n");
fwrite($f, 'messageId: ' . $inboundMessages->messageId . "\n");
fwrite($f, 'message: ' . $inboundMessages->message . "\n");
fwrite($f, 'resourceURL: ' . $inboundMessages->resourceURL . "\n");
fwrite($f, 'senderAddress: ' . $inboundMessages->senderAddress . "\n");
##社交邀请短信示例
如果您已注册并配置了 Social Invites 应用程序(教程),则可以发送邀请。
首先使用您的用户名和密码初始化社交邀请客户端
$socinv = new \infobip\SocialInviteClient(USERNAME, PASSWORD);
准备社交邀请
$siReq = new \infobip\models\SocialInviteRequest();
$siReq->senderAddress = SENDER_ADDRESS;
$siReq->recipients = DESTINATION_ADDRESS;
$siReq->messageKey = SOCIAL_INVITES_MESSAGE_KEY;
发送消息
$siResult = $socinv->sendInvite($siReq, SOCIAL_INVITES_APP_SECRET);
稍后您可以查询社交邀请消息的投递状态
// You can use $siResult->sendSmsResponse->bulkId as an argument here:
$smsMessageStatus = $smsClient->queryDeliveryStatus($siResult->sendSmsResponse->bulkId);
$deliveryStatus = $smsMessageStatus->deliveryInfo[0]->deliveryStatus;
echo 'Success:', $smsMessageStatus->isSuccess(), "\n";
echo 'Status:', $deliveryStatus, "\n";
if( ! $smsMessageStatus->isSuccess()) {
echo 'Message id:', $smsMessageStatus->exception->messageId, "\n";
echo 'Text:', $smsMessageStatus->exception->text, "\n";
echo 'Variables:', $smsMessageStatus->exception->variables, "\n";
}
##许可证
此库根据 Apache 许可证,版本 2.0 许可。