telq /
sdk
telq REST API的SDK
v2.0.1
2024-04-30 00:54 UTC
Requires
- php: >=7.3
- ext-curl: *
- ext-json: *
Requires (Dev)
- phpunit/phpunit: ^9.6.16
README
安装
composer require telq/sdk
使用
use TelQ\Sdk\Api; use TelQ\Sdk\Http\HttpException; $appId = 123; $appKey = 'my-key'; $api = new Api($appId, $appKey); try { // call api } catch (HttpException $exception) { echo 'Handle http exception', PHP_EOL; echo 'Response code ', $exception->getResponse()->getStatus(), PHP_EOL; echo 'Response body ', $exception->getResponse()->getBody(), PHP_EOL; }
网络
$networks = $api->getNetworks(); foreach ($networks as $network) { echo 'Mcc: ', $network->getMcc(), PHP_EOL; echo 'Country name: ', $network->getCountryName(), PHP_EOL; echo 'Mnc: ', $network->getMnc(), PHP_EOL; echo 'Provider name: ', $network->getProviderName(), PHP_EOL; echo 'Ported from mnc: ', $network->getPortedFromMnc() ?: 'empty', PHP_EOL; echo 'Ported from provider name: ', $network->getPortedFromProviderName() ?: 'empty', PHP_EOL; echo PHP_EOL; } echo 'Networks: ', count($networks), PHP_EOL;
手动测试
创建测试
use TelQ\Sdk\Models\Destination; use TelQ\Sdk\Models\Tests; // new Destination('mcc', 'mnc', 'ported from mnc') $sendTests = Tests::fromArray([ 'destinationNetworks' => [ new Destination('222', '36', '10'), new Destination('505', '01') ] ]); $tests = $api->sendManualTests($sendTests); foreach ($tests as $test) { echo 'Id: ', $test->getId(), PHP_EOL; echo 'PhoneNumber: ', $test->getPhoneNumber(), PHP_EOL; echo 'TestIdText: ', $test->getTestIdText(), PHP_EOL; echo 'Error message: ', $test->getErrorMessage() ?: 'empty', PHP_EOL; echo 'Destination:', PHP_EOL; echo ' Mcc: ', $test->getDestinationNetwork()->getMcc(), PHP_EOL; echo ' Mnc: ', $test->getDestinationNetwork()->getMnc(), PHP_EOL; echo ' Ported from mnc: ', $test->getDestinationNetwork()->getPortedFromMnc() ?: 'empty', PHP_EOL; echo PHP_EOL; } // advanced example // docs https://api-doc.telqtele.com/#request-details $sendTests = Tests::fromArray([ 'destinationNetworks' => [ new Destination('222', '36', '10'), new Destination('505', '01') ], 'resultsCallbackUrl' => 'https://my-domain.com/telq-callback', 'maxCallbackRetries' => 3, 'testIdTextType' => 'ALPHA', 'testIdTextCase' => 'MIXED', 'testIdTextLength' => 6, 'testTimeToLiveInSeconds' => 3600 ]);
获取测试结果
$result = $api->getManualTestResult(13777294); echo 'Id: ', $result->getId(), PHP_EOL; echo 'TestIdText: ', $result->getTestIdText(), PHP_EOL; echo 'Sender delivered: ', $result->getSenderDelivered() ?: 'empty', PHP_EOL; echo 'Text delivered: ', $result->getTextDelivered() ?: 'empty', PHP_EOL; echo 'Test created: ', $result->getTestCreatedAt()->format('Y-m-d H:i:s'), PHP_EOL; // return DateTime https://php.ac.cn/manual/en/class.datetime.php echo 'Sms received: ', $result->getSmsReceivedAt() ? $result->getSmsReceivedAt()->format('Y-m-d H:i:s'): 'empty', PHP_EOL; echo 'Receipt delay: ', $result->getReceiptDelay() ?: 'empty', PHP_EOL; echo 'Test status: ', $result->getTestStatus(), PHP_EOL; echo 'Network:', PHP_EOL; if ($result->getDestinationNetworkDetails()) { echo ' Mcc: ', $result->getDestinationNetworkDetails()->getMcc(), PHP_EOL; echo ' Country name: ', $result->getDestinationNetworkDetails()->getCountryName(), PHP_EOL; echo ' Mnc: ', $result->getDestinationNetworkDetails()->getMnc(), PHP_EOL; echo ' Provider name: ', $result->getDestinationNetworkDetails()->getProviderName(), PHP_EOL; echo ' Ported from mnc: ', $result->getDestinationNetworkDetails()->getPortedFromMnc() ?: 'empty', PHP_EOL; echo ' Ported from provider name: ', $result->getDestinationNetworkDetails()->getPortedFromProviderName() ?: 'empty', PHP_EOL; } else { echo ' empty', PHP_EOL; } echo 'Smsc info:', PHP_EOL; if ($result->getSmscInfo()) { echo ' Smsc number: ', $result->getSmscInfo()->getSmscNumber() ?: 'empty', PHP_EOL; echo ' Country name: ', $result->getSmscInfo()->getCountryName() ?: 'empty', PHP_EOL; echo ' Country code: ', $result->getSmscInfo()->getCountryCode() ?: 'empty', PHP_EOL; echo ' Mcc: ', $result->getSmscInfo()->getMcc() ?: 'empty', PHP_EOL; echo ' Mnc: ', $result->getSmscInfo()->getMnc() ?: 'empty', PHP_EOL; echo ' Provider name: ', $result->getSmscInfo()->getProviderName() ?: 'empty', PHP_EOL; } else { echo ' empty', PHP_EOL; } echo 'Pdu delivered: ', $result->getPdusDelivered() ? implode(', ', $result->getPdusDelivered()) : 'empty', PHP_EOL;
搜索测试结果
// last 20 results $results = $api->getManualTestsResults(0, 20, 'desc'); echo 'Page: ', $results->getPage(), PHP_EOL; echo 'Size: ', $results->getSize(), PHP_EOL; echo 'Order: ', $results->getOrder(), PHP_EOL; echo 'Error: ', $results->getError() ?: 'empty', PHP_EOL; foreach ($results->getContent() as $result) { echo 'Id: ', $result->getId(), PHP_EOL; echo 'TestIdText: ', $result->getTestIdText(), PHP_EOL; } // today tests $range = new RangeFilter( new DateTime('today 00:00:00'), new DateTime('today 23:59:59') ); $results = $api->getManualTestsResults(0, 20, 'desc', $range); echo 'Page: ', $results->getPage(), PHP_EOL; echo 'Size: ', $results->getSize(), PHP_EOL; echo 'Order: ', $results->getOrder(), PHP_EOL; echo 'Error: ', $results->getError() ?: 'empty', PHP_EOL; foreach ($results->getContent() as $result) { echo 'Id: ', $result->getId(), PHP_EOL; echo 'TestIdText: ', $result->getTestIdText(), PHP_EOL; }
实时号码测试
创建测试
use TelQ\Sdk\Models\Lnt\LiveNumberTest; use TelQ\Sdk\Models\Lnt\LiveNumberTests; use TelQ\Sdk\Models\UdhTlv; $sendTests = LiveNumberTests::fromArray([ 'tests' => [ LiveNumberTest::fromArray([ 'sender' => 'Google', 'text' => 'message', 'supplierId' => 946, 'mcc' => '262', 'mnc' => '14' ]) ] ]); $response = $api->sendLiveNumberTests($sendTests); foreach ($response->getTests() as $test) { echo 'Id: ', $test->getId(), PHP_EOL; echo 'PhoneNumber: ', $test->getPhoneNumber(), PHP_EOL; echo 'TestIdText: ', $test->getTestIdText(), PHP_EOL; echo 'Error message: ', $test->getErrorMessage() ?: 'empty', PHP_EOL; echo 'Destination:', PHP_EOL; echo ' Mcc: ', $test->getDestinationNetwork()->getMcc(), PHP_EOL; echo ' Mnc: ', $test->getDestinationNetwork()->getMnc(), PHP_EOL; echo ' Ported from mnc: ', $test->getDestinationNetwork()->getPortedFromMnc() ?: 'empty', PHP_EOL; echo PHP_EOL; } echo 'Error: ', $response->getError(), PHP_EOL; // advanced example $sendTests = LiveNumberTests::fromArray([ 'tests' => [ LiveNumberTest::fromArray([ 'sender' => 'Google', 'text' => 'message', 'testIdTextType' => 'ALPHA', 'testIdTextCase' => 'LOWER', 'testIdTextLength' => 7, 'supplierId' => 946, 'mcc' => '262', 'mnc' => '14', 'portedFromMnc' => '01' ]) ], 'resultsCallbackUrl' => 'https://some-callback-url.com/some-path', 'maxCallbackRetries' => 1, 'dataCoding' => '01', // 00, 01, 03, 08, F0 'sourceTon' => '01', // 00, 01, 02, 03, 04, 05, 06 'sourceNpi' => '12', // 00, 01, 03, 04, 06, 08, 09, 0A, 0E, 12 'testTimeToLiveInSeconds' => 600, 'smppValidityPeriod' => 120, 'scheduledDeliveryTime' => new DateTime(), 'replaceIfPresentFlag' => 0, 'priorityFlag' => 1, 'sendTextAsMessagePayloadTlv' => 0, 'commentText' => 'Optional comment', 'tlv' => [ new UdhTlv('1B1A', '1AAF') ], 'udh' => [ new UdhTlv('1F', '11BB') ], ]);
获取测试结果
$result = $api->getLiveTestResult(1155470); echo 'Id: ', $result->getId(), PHP_EOL; echo 'TestIdText: ', $result->getTestIdText(), PHP_EOL; echo 'DLR status: ', $result->getDlrStatus(), PHP_EOL; echo 'Receipt status: ', $result->getReceiptStatus(), PHP_EOL;
搜索测试结果
// last 20 results $results = $api->getLiveNumberTestsResults(0, 20, 'desc'); echo 'Page: ', $results->getPage(), PHP_EOL; echo 'Size: ', $results->getSize(), PHP_EOL; echo 'Order: ', $results->getOrder(), PHP_EOL; echo 'Error: ', $results->getError() ?: 'empty', PHP_EOL; foreach ($results->getContent() as $result) { echo 'Id: ', $result->getId(), PHP_EOL; echo 'TestIdText: ', $result->getTestIdText(), PHP_EOL; echo 'DLR status: ', $result->getDlrStatus(), PHP_EOL; echo 'Receipt status: ', $result->getReceiptStatus(), PHP_EOL; } // today tests $range = new RangeFilter( new DateTime('today 00:00:00'), new DateTime('today 23:59:59') ); $results = $api->getLiveNumberTestsResults(0, 20, 'desc', $range); echo 'Page: ', $results->getPage(), PHP_EOL; echo 'Size: ', $results->getSize(), PHP_EOL; echo 'Order: ', $results->getOrder(), PHP_EOL; echo 'Error: ', $results->getError() ?: 'empty', PHP_EOL; foreach ($results->getContent() as $result) { echo 'Id: ', $result->getId(), PHP_EOL; echo 'TestIdText: ', $result->getTestIdText(), PHP_EOL; echo 'DLR status: ', $result->getDlrStatus(), PHP_EOL; echo 'Receipt status: ', $result->getReceiptStatus(), PHP_EOL, PHP_EOL; }
会话
创建会话
$session = $api->createSession(CreateUpdateSession::fromArray([ 'hostIp' => '127.0.0.1', 'hostPort' => 9998, 'systemId' => 'login', 'password' => 'password', 'systemType' => null, 'throughput' => 5, 'destinationTon' => 1, 'destinationNpi' => 1, 'enabled' => false, 'windowSize' => 1, 'useSSL' => false, 'windowWaitTimeout' => 60000 ])); echo 'ID: ', $session->getSmppSessionId(), PHP_EOL; echo 'Host: ', $session->getHostIp(), ':', $session->getHostPort(), PHP_EOL; echo 'System ID: ', $session->getSystemId(), PHP_EOL; echo 'System type: ', $session->getSystemType(), PHP_EOL; echo 'Enabled: ', $session->getEnabled() ? 'ON' : 'OFF', PHP_EOL;
更新会话
$api->updateSession(CreateUpdateSession::fromArray([ 'smppSessionId' => 20603, 'hostIp' => '127.0.0.1', 'hostPort' => 9997, 'systemId' => 'login', 'password' => 'password', 'systemType' => null, 'throughput' => 5, 'destinationTon' => 1, 'destinationNpi' => 1, 'enabled' => false, 'windowSize' => 1, 'useSSL' => false, 'windowWaitTimeout' => 60000 ]));
获取会话
$session = $api->getSession(20603); echo 'ID: ', $session->getSmppSessionId(), PHP_EOL; echo 'Host: ', $session->getHostIp(), ':', $session->getHostPort(), PHP_EOL; echo 'System ID: ', $session->getSystemId(), PHP_EOL; echo 'System type: ', $session->getSystemType(), PHP_EOL; echo 'Enabled: ', $session->getEnabled() ? 'ON' : 'OFF', PHP_EOL; echo 'Throughput: ', $session->getThroughput(), PHP_EOL; echo 'Destination TON: ', $session->getDestinationTon(), PHP_EOL; echo 'Destination NPI: ', $session->getDestinationNpi(), PHP_EOL; echo 'Window size: ', $session->getWindowSize(), PHP_EOL; echo 'Window wait timeout: ', $session->getWindowWaitTimeout(), PHP_EOL; echo 'SSL: ', $session->getUseSSL() ? 'YES' : 'NO', PHP_EOL; echo 'User: ', $session->getUserId(), ' ', $session->getUserName(), PHP_EOL; echo 'Online: ', $session->getOnline() ? 'YES' : 'NO', PHP_EOL; echo 'Suppliers: ', $session->getSupplierCount(), PHP_EOL;
获取所有会话
// first page, 20 items per page, sort - desc by id $sessions = $api->getSessions(0, 20, 'desc'); echo 'Total count: ', $sessions->getTotalElements(), PHP_EOL; echo 'Total pages: ', $sessions->getTotalPages(), PHP_EOL, PHP_EOL; foreach ($sessions->getContent() as $session) { echo 'ID: ', $session->getSmppSessionId(), PHP_EOL; echo 'Host: ', $session->getHostIp(), ':', $session->getHostPort(), PHP_EOL; echo 'System ID: ', $session->getSystemId(), PHP_EOL; echo 'System type: ', $session->getSystemType(), PHP_EOL; echo 'Enabled: ', $session->getEnabled() ? 'ON' : 'OFF', PHP_EOL; echo 'Throughput: ', $session->getThroughput(), PHP_EOL; echo 'Destination TON: ', $session->getDestinationTon(), PHP_EOL; echo 'Destination NPI: ', $session->getDestinationNpi(), PHP_EOL; echo 'Window size: ', $session->getWindowSize(), PHP_EOL; echo 'Window wait timeout: ', $session->getWindowWaitTimeout(), PHP_EOL; echo 'SSL: ', $session->getUseSSL() ? 'YES' : 'NO', PHP_EOL; echo 'User: ', $session->getUserId(), ' ', $session->getUserName(), PHP_EOL; echo 'Online: ', $session->getOnline() ? 'YES' : 'NO', PHP_EOL; echo 'Suppliers: ', $session->getSupplierCount(), PHP_EOL, PHP_EOL; }
删除会话
$api->deleteSession(20603);
供应商
创建供应商
$supplier = $api->createSupplier(CreateUpdateSupplier::fromArray([ 'supplierName' => 'TestSupplier', 'routeType' => 'direct', 'attributeList' => ['TWO_WAY', 'P2P'], 'comment' => null, 'serviceType' => null, 'tlv' => [ new UdhTlv('1B1A', '1AAF') ], 'udh' => [ new UdhTlv('1F', '11BB') ], 'smppSessionId' => 20602 ])); echo 'Supplier ID: ', $supplier->getSupplierId(), PHP_EOL; echo 'Session ID: ', $supplier->getSmppSessionId(), PHP_EOL; echo 'Name: ', $supplier->getSupplierName(), PHP_EOL; echo 'Route type: ', $supplier->getRouteType(), PHP_EOL; echo 'Attributes: ', implode(', ', $supplier->getAttributeList()), PHP_EOL; echo 'Service type: ', $supplier->getServiceType(), PHP_EOL; echo 'Comment: ', $supplier->getComment(), PHP_EOL;
更新供应商
$api->updateSupplier(CreateUpdateSupplier::fromArray([ 'supplierId' => 73115, 'supplierName' => 'TestSupplier', 'routeType' => 'direct', 'attributeList' => ['TWO_WAY', 'P2P'], 'comment' => 'My comment', 'serviceType' => null, 'tlv' => [ new UdhTlv('1B1A', '1AAF') ], 'udh' => [ new UdhTlv('1F', '11BB') ], 'smppSessionId' => 20602 ]));
获取供应商
$supplier = $api->getSupplier(73115); echo 'Supplier ID: ', $supplier->getSupplierId(), PHP_EOL; echo 'Session ID: ', $supplier->getSmppSessionId(), PHP_EOL; echo 'Name: ', $supplier->getSupplierName(), PHP_EOL; echo 'Route type: ', $supplier->getRouteType(), PHP_EOL; echo 'Attributes: ', implode(', ', $supplier->getAttributeList()), PHP_EOL; echo 'Service type: ', $supplier->getServiceType(), PHP_EOL; echo 'UDH: ', count($supplier->getUdh()), PHP_EOL; echo 'TLV: ', count($supplier->getTlv()), PHP_EOL; echo 'Comment: ', $supplier->getComment(), PHP_EOL; echo 'User: ', $supplier->getUserId(), PHP_EOL;
获取所有供应商
// first page, 20 items per page, sort - desc by id $suppliers = $api->getSuppliers(0, 20, 'desc'); echo 'Total count: ', $suppliers->getTotalElements(), PHP_EOL; echo 'Total pages: ', $suppliers->getTotalPages(), PHP_EOL, PHP_EOL; foreach ($suppliers->getContent() as $supplier) { echo 'Supplier ID: ', $supplier->getSupplierId(), PHP_EOL; echo 'Session ID: ', $supplier->getSmppSessionId(), PHP_EOL; echo 'Name: ', $supplier->getSupplierName(), PHP_EOL; echo 'Route type: ', $supplier->getRouteType(), PHP_EOL; echo 'Attributes: ', implode(', ', $supplier->getAttributeList()), PHP_EOL; echo 'Service type: ', $supplier->getServiceType(), PHP_EOL; echo 'UDH: ', count($supplier->getUdh()), PHP_EOL; echo 'TLV: ', count($supplier->getTlv()), PHP_EOL; echo 'Comment: ', $supplier->getComment(), PHP_EOL; echo 'User: ', $supplier->getUserId(), PHP_EOL, PHP_EOL; }
根据会话获取供应商
$suppliers = $api->getSuppliersBySessionId(20602); foreach ($suppliers as $supplier) { echo 'Supplier ID: ', $supplier->getSupplierId(), PHP_EOL; echo 'Session ID: ', $supplier->getSmppSessionId(), PHP_EOL; echo 'Name: ', $supplier->getSupplierName(), PHP_EOL; echo 'Route type: ', $supplier->getRouteType(), PHP_EOL; echo 'Attributes: ', implode(', ', $supplier->getAttributeList()), PHP_EOL; echo 'Service type: ', $supplier->getServiceType(), PHP_EOL; echo 'UDH: ', count($supplier->getUdh()), PHP_EOL; echo 'TLV: ', count($supplier->getTlv()), PHP_EOL; echo 'Comment: ', $supplier->getComment(), PHP_EOL; echo 'User: ', $supplier->getUserId(), PHP_EOL, PHP_EOL; }
删除供应商
$api->deleteSupplier(73115);
获取会话与供应商对应关系
// first page, 20 items per page, sort - desc by id $pairs = $api->getSessionsSuppliers(0, 20, 'desc'); echo 'Total count: ', $pairs->getTotalElements(), PHP_EOL; echo 'Total pages: ', $pairs->getTotalPages(), PHP_EOL, PHP_EOL; foreach ($pairs->getContent() as $pair) { echo 'Supplier ID: ', $pair->getSupplierId(), PHP_EOL; echo 'Session ID: ', $pair->getSmppSessionId(), PHP_EOL; echo 'Name: ', $pair->getSupplierName(), PHP_EOL; echo 'Route type: ', $pair->getRouteType(), PHP_EOL; echo 'Attributes: ', implode(', ', $pair->getAttributes()), PHP_EOL; echo 'Online: ', $pair->getOnline() ? 'YES' : 'NO', PHP_EOL, PHP_EOL; }
将供应商分配给会话
$supplierIds = [73115, 73113]; $sessionId = 20602; $api->assignSuppliersToSession($supplierIds, $sessionId);
配置
HTTP客户端
use TelQ\Sdk\Api; use TelQ\Sdk\Http\CurlClient; $appId = 123; $appKey = 'my-key'; $httpClient = new CurlClient([ // curl options https://php.ac.cn/manual/en/function.curl-setopt.php CURLOPT_CONNECTTIMEOUT => 5 ]) $api = new Api($appId, $appKey, $httpClient);
令牌存储
为了提高性能,SDK可以将授权令牌存储在文件中。因此,只有在必要时才会更新令牌,从而避免不必要的授权请求。该文件必须是可读可写的
use TelQ\Sdk\Api; use TelQ\Sdk\Http\CurlClient; use TelQ\Sdk\Token\FileStorage; $appId = 123; $appKey = 'my-key'; $httpClient = new CurlClient(); $tokenStorage = new FileStorage('/path/to/token'); $api = new Api($appId, $appKey, $httpClient, $tokenStorage);