首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Perl中的Net::SMPP发送SMS?

如何使用Perl中的Net::SMPP发送SMS?
EN

Stack Overflow用户
提问于 2011-02-06 13:00:32
回答 1查看 6.8K关注 0票数 4

我正在尝试使用Net::SMPP模块发送SMPP消息,但它提供了下面的错误:

代码语言:javascript
复制
Message state is 2
Response indicated error: Message ID is invalid (ESME_RINVMSGID=0x0000000C) at send.pl line 28.
代码语言:javascript
复制
#!/usr/bin/perl
#use strict;
#use warnings;
use Net::SMPP;

my $host = 'iphost';
my $port = 2345;
my $smpp = Net::SMPP->new_transmitter(
    $host,
    port      => $port,
    system_id => 'username',
    password  => 'pass',
) or die;

$resp_pdu = $smpp->submit_sm(
    destination_addr => '+44206064379',
    short_message    => 'test message'
) or die;
die "Response indicated error: " . $resp_pdu->explain_status()
if $resp_pdu->status;
$msg_id = $resp_pdu->{message_id};

$resp_pdu = $smpp->query_sm(message_id => $msg_id) or die;
die "Response indicated error: " . $resp_pdu->explain_status()
if $resp_pdu->status;
print "Message state is $resp_pdu->{message_state}\n";

$resp_pdu = $smpp->replace_sm(
    message_id    => $msg_id,
    short_message => 'another test'
) or die;
die "Response indicated error: " . $resp_pdu->explain_status()
if $resp_pdu->status;

$resp_pdu = $smpp->cancel_sm(message_id => $msg_id) or die;
die "Response indicated error: " . $resp_pdu->explain_status()
if $resp_pdu->status;
EN

回答 1

Stack Overflow用户

发布于 2011-02-08 14:18:33

如果你想传递一个信息,那么你就是成功了。消息是使用submit_sm方法发送的。

输出的第一行显示来自query_sm的结果,它返回消息的状态。状态2对应于传递状态(来自SMPPv3.4规范)。这意味着SMSC已经将消息传递给移动设备。

错误是由replace_sm方法生成的。replace_sm方法将只替换仍然在SMSC上的消息,即仍在等待传递。如果消息已经传递,SMSC将在响应PDU中返回一个错误。同样的情况也适用于cancel_sm方法。它只适用于仍在等待传递的消息。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4913444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档