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

我从供应商处收到了 SMPP 服务器详细信息,因此我可以使用他们的 SMPP 服务器向我的客户发送 SMS 消息。然而,我似乎发现 PHP 对此几乎没有支持。我查看了以下 github 项目,但当我尝试发送时,我不断收到错误“无效命令 ID”。有人可以看一下我的代码并看看我是否遗漏了什么吗?

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

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


月关宝盒
浏览 150回答 1
1回答

元芳怎么了

尝试使用另一个库composer require glushkovds/php-smpp发送短信:<?phprequire_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');
打开App,查看更多内容
随时随地看视频慕课网APP