我从供应商处收到了 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
元芳怎么了