TelQ Platform
SMS Testing Tool
service integration options
TelQ provides a wide range of integration options for you SMS testing, including SMPP and REST API integration, as well as direct integration with the Alaris platform.

SMPP API integration
SMPP API allows you to connect directly to your SMPP server, to send and to schedule test messages from our user interface.
Quick set-up
If you already have an SMPP server, this type of integration will probably be the fastest.
Custom service type
You can assign a unique service type to each supplier for internal routing purposes.
Custom TLV parameters
Unique TLV parameters can also be used to set up flexible internal routing on your server.
Multiple connections
You can set up multiple SMPP binds from our platform to your server with a unique username and password.
Encryption
We encrypt your SMPP connection passwords on our backend side and keep them safe.
SMPP integration video tutorial
Learn how to integrate with the TelQ SMS testing service via SMPP
Integrating with service type or TLV
You can set up one SMPP connection to your server and assign a unique Service Type or TLV to different suppliers in our user interface. When you send the test message to a particular supplier, the unique parameter will automatically be added to the message, allowing you to do internal routing based on it.
Flexible routing
Assign unique identifying parameters like service type or TLV for each supplier and set up internal routing for such messages.
Secure
You have full control of the traffic since we don't connect to your suppliers directly.
Easy set-up
You only need one SMPP bind to be able to test all of your suppliers. A simple addition of new suppliers.
Upload from Excel
We can upload a list of supplier names and the above mentioned parameters from an excel file.


Integrating with SMPP bind login as an identifier
This approach requires you to set up multiple SMPP connections, one for each supplier you would like to test. This works only if you can set up custom routing for each of the connections. In this case, the SMPP bind login name would be the unique identifier for your system to do the routing and send traffic to the corresponding supplier. This takes more time to set up, however, it should be supported by most SMPP servers.
Flexible routing
Create as many SMPP binds as you need in order to include all your suppliers in our testing platform.
Secure
You have full control of the traffic since we don't connect to your suppliers directly.
Highly compatible
This integration approach works with most SMPP servers — even ones with the most basic features.
Upload from Excel
We can upload a list of suppliers and SMPP binds parameters from an excel file on your behalf.

REST API integration
REST API integration allows you to integrate directly with your system's user interface.
Complete integration
REST API allows you full flexibility as you create the SMS on your platform and receive the test results in your system.
Highest security
Since you send tests directly from your system, you have full control over your SMPP or ss7 channels.
Complete automation
Time saving -- Once set up, REST API will allow you and your colleagues to keep using only your system. No resources are needed for onboarding or training for the TelQ platform.
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')
],
'resultsCallbackUrl' => 'https://my-domain.com/telq-callback',
'maxCallbackRetries' => 3,
'testIdTextType' => 'ALPHA',
'testIdTextCase' => 'MIXED',
'testIdTextLength' => 6,
'testTimeToLiveInSeconds' => 3600
]);
$tests = $api->sendTests($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;
}
curl -X POST "https://api.telqtele.com/v2.1/client/tests" -H "accept: */*"
-H "Content-Type: application/json" -d "{ \"destinationNetworks\": [ { \"mcc\": \"208\",
\"mnc\": \"10\", \"portedFromMnc\": \"20\" } ] }"
# Example of body with all available parameters
{
"destinationNetworks": [
{
"mcc": "206",
"mnc": "10",
"portedFromMnc": "20"
},
{
"mcc": "716",
"mnc": "06",
}
],
"resultsCallbackUrl": "https://some-callback-url.com/some-path",
"testIdTextType": "ALPHA_NUMERIC",
"testIdTextCase": "MIXED",
"testIdTextLength": "6",
"maxCallbackRetries": 1,
"testTimeToLiveInSeconds": 200
}
destinationNetworks = [
{
"mcc": "206",
"mnc": "10",
"portedFromMnc": "20"
},
{
"mcc": "716",
"mnc": "06"
}
]
requested_tests = test_client.initiate_new_tests(
destinationNetworks=destinationNetworks,
resultsCallbackUrl="https://my-callback-url.com/telq_result",
maxCallbackRetries=3,
testIdTextType="ALPHA_NUMERIC",
testIdTextCase="MIXED",
testIdTextLength=7,
testTimeToLiveInSeconds=3000
)
requested_tests = test_client.initiate_new_tests(destinationNetworks=destinationNetworks)
List networks = new ArrayList<>();
Network network_1 = Network.builder()
.mcc("206")
.mnc("10")
.portedFromMnc("20")
.build();
Network network_2 = Network.builder()
.mcc("716")
.mnc("06")
.build();
networks.add(network_1);
networks.add(network_2);
int maxCallBackRetries = 1;
String resultsCallbackUrl = "https://some-callback-url.com/some-path";
int testTimeToLive = 200;
String callBackToken = "peHWFdAXikjzmMgqPTwhpeHWFdAXikjzmMgqPTwhpeHWFdAXikjzmMgqPTwh";
TestIdTextOptions testIdTextOptions = TestIdTextOptions.builder()
.testIdTextType(TestIdTextType.ALPHA_NUMERIC)
.testIdTextCase(TestIdTextCase.MIXED)
.testIdTextLength(6)
.build();
TestRequest testRequest = TestRequest.builder()
.networks(networks)
.maxCallbackRetries(maxCallBackRetries)
.callbackUrl(resultsCallbackUrl)
.callbackToken(callBackToken)
.testTimeToLive(testTimeToLive)
.timeUnit(TimeUnit.MINUTES)
.testIdTextOptions(testIdTextOptions)
.build();
List requestedTests = testClient.initiateNewTests(testRequest);