尝试使用 SMPP 和 PHP 发送 SMS 时命令 ID 无效

Invalid Command ID when trying to send SMS using SMPP and PHP

我从供应商那里收到了 SMPP 服务器的详细信息,因此我可以使用他们的 SMPP 服务器向我的客户发送 SMS 消息。然而,我似乎发现 PHP 对此几乎没有支持。我查看了以下 github 项目,但在尝试发送时我一直收到错误 'Invalid Command ID'。有人可以看看我的代码,看看我是否遗漏了什么吗?

我已经使用 telnet 连接到 SMPP 服务器并且连接建立成功。我也尝试过单步执行代码,但无法确定问题所在。我检查了每次调用中传递的每个命令 ID,根据 smpp 网站 here,它们似乎都是有效的,所以我不知所措。如有任何帮助,我们将不胜感激。

Github 项目:https://github.com/onlinecity/php-smpp

我的代码(省略服务器 IP、端口号、用户名和密码):

<?php

require_once 'smppclient.class.php';
require_once 'gsmencoder.class.php';
require_once 'sockettransport.class.php';

// Construct transport and client
$transport = new SocketTransport(array('SMPP_SERVER_IP'),PORT_NUMBER);
$transport->setRecvTimeout(10000);
$smpp = new SmppClient($transport);

// Activate binary hex-output of server interaction
$smpp->debug = true;
$transport->debug = true;

// Open the connection
$transport->open();
$smpp->bindTransmitter("USERNAME","PASSWORD");

// Optional connection specific overrides
SmppClient::$sms_null_terminate_octetstrings = false;
SmppClient::$csms_method = SmppClient::CSMS_PAYLOAD;
SmppClient::$sms_registered_delivery_flag = SMPP::REG_DELIVERY_SMSC_BOTH;

// Prepare message
$message = 'Hello World €$£';
$encodedMessage = GsmEncoder::utf8_to_gsm0338($message);
$from = new SmppAddress('MyAppName',SMPP::TON_ALPHANUMERIC);
$to = new SmppAddress(27798817281,SMPP::TON_INTERNATIONAL,SMPP::NPI_E164);

// Send
$messageID = $smpp->sendSMS($from,$to,$encodedMessage,null);

// Close connection
$smpp->close();

php 中的堆栈跟踪:

致命错误:未捕获 SmppException:第 622 行 /Applications/XAMPP/xamppfiles/htdocs/projects/smpp_test/src/libs/smpp/smppclient.class.php 中的命令 ID 无效

( !) SmppException:第 622 行 /Applications/XAMPP/xamppfiles/htdocs/projects/smpp_test/src/libs/smpp/smppclient.class.php 中的命令 ID 无效

调用堆栈

Time    Memory  Function    Location

1 0.0015 412144 {main}( ) .../test.php:0

2 2.2379 687472 SmppClient->close() .../test.php:35

3 2.2381 687472 SmppClient->sendCommand() .../smppclient.class.php:150

尝试使用其他库

composer require glushkovds/php-smpp

发送短信:

<?php
require_once 'vendor/autoload.php';

$service = new \PhpSmpp\Service\Sender(['SMPP_SERVER_IP:SMPP_SERVER_PORT'], 'login', 'pass');
$message = 'Hello World €$£';
$smsId = $service->send(27798817281, $message, 'MyAppName');