infobip/oneapi

此包已被放弃,不再维护。作者建议使用 infobip-api-php-client 包。

PHP 的 Infobip OneAPI 库

1.1.3 2014-12-30 14:14 UTC

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 许可。