oxik / one-api-bundle
用于Symfony 2.3+的One-Api Infobip
Requires
- php: >=5.3.2
- symfony/framework-bundle: ~2.3
This package is not auto-updated.
Last update: 2022-02-01 12:47:25 UTC
README
什么是OneApiBundle?
这是一个小的symfony扩展包,充当infobip OneApi和您的symfony项目之间的桥梁。
简单地将OneApi对象包装到您的服务或控制器中。
以下文档是从OneApi移植并适应在您的symfony 2项目中使用。
安装
将以下内容添加到您的composer.json
文件中。
{ "require": { ... "infobip/oneapi": "dev-master", "oxik/one-api-bundle": "^0.0.1" } }
并在AppKernel.php
中
class AppKernel extends Kernel { public function registerBundles() { $bundles = array( ... new Oxik\OneApiBundle\OxikOneApiBundle(), ); } }
将您的用户名和密码添加到`config.yml'文件中。
# OneApiBundle Configuration oxik_one_api: username: USERNAME password: PASSWORD baseUrl: ~
使用static::functions
您仍然可以使用OneApi的静态函数,手动加载infobin/class
命名空间。
基本消息示例
首先将OneApiBundle的Wrapper
服务包含到您的代码中,并检索一个新的SmsClient
实例。
$serviceWrapper = $this->get('oxik_one_api.wrapper'); $smsClient = $serviceWrapper->getService('SmsClient', true);
第一个参数是从OneApi初始化的类,第二个参数是类的参数(如果为true,则将用户名和密码传递给函数,用数组代替以设置自己的自定义参数)。
如果您的用户名和/或密码不正确,将抛出异常。
准备消息
$smsMessage = $serviceWrapper->getModel('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 = $serviceWrapper->getModel('SMSRequest'); $smsMessage->senderAddress = SENDER_ADDRESS; $smsMessage->address = DESTINATION_ADDRESS; $smsMessage->message = 'Hello world'; $smsMessage->notifyURL = NOTIFY_URL;
当投递通知作为HTTP POST请求推送到您的服务器时,您必须使用以下代码处理消息体
$result = $smsClient->queryDeliveryStatus($send); // 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 = $serviceWrapper->getModel('SMSRequest'); $smsMessage->senderAddress = SENDER_ADDRESS; $smsMessage->address = DESTINATION_ADDRESS; $smsMessage->message = MESSAGE_TEXT; $language = $serviceWrapper->getModel('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 = $serviceWrapper->getService('DataConnectionProfileClient', true);
检索漫游状态(数字上下文)
$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>';
##检索传入消息示例
使用现有的sms客户端(请参阅基本消息示例以了解如何启动它)
$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; }
##社交邀请短信示例
如果您已注册并配置了Social Invites应用程序(教程),则可以发送邀请。
首先使用您的用户名和密码初始化社交邀请客户端
$socinv = $serviceWrapper->getService('SocialInviteClient', true);
准备社交邀请
$siReq = $serviceWrapper->getModel('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"; }
##许可证
此库(以及OneApi PHP)采用Apache许可证,版本2.0。