Как отправить SMS с использованием Net :: SMPP в Perl? - PullRequest
4 голосов
/ 06 февраля 2011

Я пытаюсь отправить сообщение SMPP с помощью модуля Net :: SMPP , но выдает ошибку ниже:

Message state is 2
Response indicated error: Message ID is invalid (ESME_RINVMSGID=0x0000000C) at send.pl line 28.

#!/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;

1 Ответ

3 голосов
/ 08 февраля 2011

Если вы пытаетесь отправить сообщение, значит, вы добились успеха.Сообщение отправляется с использованием метода submit_sm.

В первой строке вывода показан результат запроса query_sm, который возвращает состояние сообщения.Состояние 2 соответствует состоянию DELIVERED (из спецификации SMPP v3.4).Это означает, что SMSC доставил сообщение на мобильное устройство.

Ошибка генерируется методом replace_sm.Метод replace_sm заменит только сообщение, которое все еще находится в SMSC, то есть все еще ожидает доставки.Если сообщение уже доставлено, SMSC возвращает ошибку в ответном PDU.То же самое относится и к методу cancel_sm.Он работает только для сообщений, которые все еще ожидают доставки.

...