PHP code example of operation-hardcode / smpp-php
1. Go to this page and download the library: Download operation-hardcode/smpp-php library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
operation-hardcode / smpp-php example snippets
declare(strict_types=1);
OperationHardcode\Smpp\Interaction\Connector;
use OperationHardcode\Smpp\Protocol\PDU;
use OperationHardcode\Smpp\Transport\ConnectionContext;
Amp\Loop::run(function (): \Generator {
$executor = Connector::connect()
->asReceiver(ConnectionContext::default(uri: 'smscsim.melroselabs.com:2775', systemId: '900238', password: 'c58775'));
try {
yield $executor->consume(function (PDU $pdu, Smpp\Interaction\SmppExecutor $executor): \Generator {
var_dump($pdu);
yield $executor->fin();
});
} catch (Smpp\Interaction\ConnectionWasNotEstablished) {
yield $executor->fin();
Amp\Loop::stop();
}
});
declare(strict_types=1);
raction\Connector;
use OperationHardcode\Smpp\Protocol\Command\SubmitSm;
use OperationHardcode\Smpp\Protocol\Destination;
use OperationHardcode\Smpp\Transport\ConnectionContext;
Amp\Loop::run(function (): \Generator {
$transmitter = Connector::connect()
->asTransmitter(ConnectionContext::default(uri: 'smscsim.melroselabs.com:2775', systemId: '900238', password: 'c58775'));
yield $transmitter->produce(new SubmitSm(new Destination('xxxx'), new Destination('xxxxx'), 'Hello, world'));
yield $transmitter->fin();
});
declare(strict_types=1);
se Amp\Log\StreamHandler;
use Monolog\Logger;
use Monolog\Processor\MemoryPeakUsageProcessor;
use Monolog\Processor\MemoryUsageProcessor;
use Monolog\Processor\PsrLogMessageProcessor;
use OperationHardcode\Smpp;
use OperationHardcode\Smpp\Interaction\Connector;
use OperationHardcode\Smpp\Protocol\PDU;
use OperationHardcode\Smpp\Transport\ConnectionContext;
use Psr\Log\LoggerInterface;
function stdoutLogger(string $loggerName): LoggerInterface
{
$handler = new StreamHandler(Amp\ByteStream\getStdout());
$handler->setFormatter(new ConsoleFormatter());
return new Logger($loggerName, [$handler], [new PsrLogMessageProcessor(), new MemoryUsageProcessor(), new MemoryPeakUsageProcessor()]);
}
Amp\Loop::run(function (): \Generator {
$transceiver = Connector::connect()->asTransceiver(
ConnectionContext::default(uri: 'smscsim.melroselabs.com:2775', systemId: '900238', password: 'c58775'),
stdoutLogger('transceiver'),
);
try {
yield $transceiver->consume(function (PDU $pdu, Smpp\Interaction\SmppExecutor $executor): \Generator {
if ($pdu instanceof Smpp\Protocol\Command\Replyable) {
yield $executor->produce($pdu->reply());
}
var_dump($pdu);
return new Amp\Success();
});
} catch (\Throwable $e) {
echo $e->getMessage() . \PHP_EOL;
Amp\Loop::stop();
}
});
declare(strict_types=1);
Smpp\Interaction\Connector;
use OperationHardcode\Smpp\Transport\ConnectionContext;
use OperationHardcode\Smpp;
Amp\Loop::run(function (): \Generator {
$logger = stdoutLogger('transceiver');
$transceiver = Connector::connect()
->asTransceiver(
ConnectionContext::default(uri: 'smscsim.melroselabs.com:2775', systemId: '900238', password: 'c58775'),
$logger
);
Amp\Loop::unreference(
Amp\Loop::onSignal(\SIGINT, function () use ($transceiver): \Generator {
yield $transceiver->fin();
})
);
try {
yield $transceiver->consume(function (PDU $pdu, SmppExecutor $executor): \Generator {
if ($pdu instanceof Smpp\Protocol\Command\Replyable) {
$reply = $pdu->reply();
yield $executor->produce($reply);
}
return new Amp\Success();
});
} catch (\Throwable $e) {
echo $e->getMessage() . \PHP_EOL;
Amp\Loop::stop();
}
});
declare(strict_types=1);
Smpp\Interaction\Connector;
use OperationHardcode\Smpp\Transport\ConnectionContext;
use OperationHardcode\Smpp;
use OperationHardcode\Smpp\Interaction\SmppExecutor;
use OperationHardcode\Smpp\Protocol\PDU;
use Psr\Log\LoggerInterface;
use OperationHardcode\Smpp\Interaction\Extensions\AfterConnectionEstablishedExtension;
use OperationHardcode\Smpp\Interaction\Extensions\AfterConnectionClosedExtension;
use OperationHardcode\Smpp\Interaction\Extensions\AfterPduConsumedExtension;
use OperationHardcode\Smpp\Interaction\Extensions\AfterPduProducedExtension;
final class Debug implements
AfterConnectionEstablishedExtension,
AfterConnectionClosedExtension,
AfterPduConsumedExtension,
AfterPduProducedExtension
{
public function __construct(private LoggerInterface $logger)
{
}
public function afterConnectionEstablished(SmppExecutor $smppExecutor): Amp\Promise
{
return Amp\call(function (): void {
$this->logger->debug('Connection was established.');
});
}
public function afterConnectionClosed(?\Throwable $e = null): Amp\Promise
{
return Amp\call(function () use ($e): void {
$this->logger->debug('Connection was closed.');
});
}
public function afterPduConsumed(PDU $pdu, SmppExecutor $smppExecutor): Amp\Promise
{
return Amp\call(function () use ($pdu): void {
$this->logger->debug('The pdu "{pdu}" was consumed.', [
'pdu' => get_class($pdu),
]);
});
}
public function afterPduProduced(PDU $pdu, SmppExecutor $smppExecutor): Amp\Promise
{
return Amp\call(function () use ($pdu): void {
$this->logger->debug('The pdu "{pdu}" was produced.', [
'pdu' => get_class($pdu),
]);
});
}
}
Amp\Loop::run(function (): \Generator {
$logger = stdoutLogger('transceiver');
$transceiver = Connector::connect()
->asTransceiver(
ConnectionContext::default(uri: 'smscsim.melroselabs.com:2775', systemId: '900238', password: 'c58775'),
$logger
)
->withExtensions([
new Debug($logger),
]);
Amp\Loop::unreference(
Amp\Loop::onSignal(\SIGINT, function () use ($transceiver): \Generator {
yield $transceiver->fin();
})
);
try {
yield $transceiver->consume(function (PDU $pdu, SmppExecutor $executor): \Generator {
if ($pdu instanceof Smpp\Protocol\Command\Replyable) {
$reply = $pdu->reply();
yield $executor->produce($reply);
}
return new Amp\Success();
});
} catch (\Throwable $e) {
echo $e->getMessage() . \PHP_EOL;
Amp\Loop::stop();
}
});
declare(strict_types=1);
Smpp\Interaction\Connector;
use OperationHardcode\Smpp\Transport\ConnectionContext;
use OperationHardcode\Smpp\Interaction\SmppExecutor;
use OperationHardcode\Smpp\Interaction\Heartbeat\Heartbeat;
use OperationHardcode\Smpp\Time;
Amp\Loop::run(function (): \Generator {
$logger = stdoutLogger('transceiver');
$transceiver = Connector::connect()
->asTransceiver(
ConnectionContext::default(uri: 'smscsim.melroselabs.com:2775', systemId: '900238', password: 'c58775'),
$logger
)
->withExtensions([
new Heartbeat(
Time::fromSeconds(10), // interval
Time::fromSeconds(2), // timeout
$logger,
),
]);
Amp\Loop::unreference(
Amp\Loop::onSignal(\SIGINT, function () use ($transceiver): \Generator {
yield $transceiver->fin();
})
);
try {
yield $transceiver->consume(function (PDU $pdu, SmppExecutor $executor): \Generator {
if ($pdu instanceof Smpp\Protocol\Command\Replyable) {
$reply = $pdu->reply();
yield $executor->produce($reply);
}
return new Amp\Success();
});
} catch (\Throwable $e) {
echo $e->getMessage() . \PHP_EOL;
Amp\Loop::stop();
}
});
bash
composer