Вопрос по модулю Net::SMPP
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Вопрос по модулю Net::SMPP Expand / Collapse
Автор
Сообщение
12.08.2006 15:10
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 14.10.2006 22:15
Сообщ.: 2, Visits: 8
Всем привет! Есть здесь люди, которые знакомы с модулем Net::SMPP для Perl?

Есть пара вопросов по этому модулю... Вообщем нужно написать программу SMPP-клиент, который будет слать смс, проверять их доставку, выводить статистику в файл и т.д.

Так я подкючаюсь к SMSC(понятно, что все параметры подключения выдуманы):


($smpp,$err) = Net::SMPP->new_transmitter(

"192.168.100.100",

port=>"9999 9",

system_id =>"System_Id",

password => "System_Password",

system_type=>"System_Type"

) or die;

print"Connect-transmitter. Status=",$err->{status},"*";


Подключение проходит нормально!

Дальше отсылаю тестовую смс(параметры опять выдуманы):


$resp = $smpp_t->submit_sm(

source_addr_ton => 0x01,

source_addr_npi => 0x00,

source_addr => "9999 9",

dest_addr_ton => 0x01,

dest_addr_npi => 0x01,

destination_addr => "1234 5678 9",

data_coding => 0x04,

short_message=> "tstmsg",

esm_class => 0x00,

);


Смс успешно доходит! Так вот.. Суть проблемы в следубщем: как проверить с помощью Net::SMPP доставку этого сообщения?

Пишу, как описано в документации к Net:SMMP на CPAN http://search.cpan.org/~sampo/Net-SMPP-1.10/SMPP.pm


$resp_pdu = $smpp->query_sm(message_id => $msg_id) or die;

die "Response indicated error: " . $resp_pdu->explain_status()

if $resp_pdu->status;


При таком кодепрограмма вылетает на самой первой строке с сообщением Can"t call method "query_sm" on an undefined value! Смотрел в Watch, что находится в message_id => $msg_id... Там массив с 2 элементами: тип scalar со значением message_id и 2 элемент null! Я уже не знаю, как делать! Все методы перепробовал! А к тому же при тесте программы всё время приходится слать смс, а это денег стоит! Кто-нибудь проверял доставку сообщения? Как это сделать? Очень нужна помощь!

Заранее спасибо!
Сообщ. #902623
13.08.2006 2:22
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 14.10.2006 22:15
Сообщ.: 2, Visits: 8
Всё, спасибо, предыдущая проблема отпала! Но зато теперь такая встала...

Вот отрывок теста моей программы...

#!/usr/bin/perl


use Net::SMPP;


sender();


print "Press to continue...";

;


sub sender

{

($smpp_tr,$err) = Net::SMPP->new_transmitter(

"server.ru",

port=>"2222",

system_id =>'login',

password => 'password',

) or die;

print"Connect-transmitter. Status=",$err->{status},"*";



$resp = $smpp_tr->submit_sm(

source_addr_ton => 0x01,

source_addr_npi => 0x00,

source_addr => '99999',

dest_addr_ton => 0x01,

dest_addr_npi => 0x01,

destination_addr => '123456789',

data_coding => 0x04,

short_message=> 'tstmsg ',

esm_class => 0x00,

) or die;



$msg_id = $resp->{message_id};


$resp = $smpp_tr->query_sm(message_id => $msg_id) or die;

die "Response indicated error: " . $resp->explain_status()

if $resp->status;


$resp = $smpp_tr->unbind();

}


Всё работает верно вплоть до строки проверки досатвки $resp = $smpp_tr->query_sm(message_id => $msg_id) or die;

На ней прога виснет! Сидел думал много часов, но ничего не помогало! Потом просто догадался снифером посмотреть, а что собственно программа шлёт? И вот на что наткнулся(запросы по протоколу SMPP по порядку):

SMPP Bind_transmitter

SMPP Bind_transmitter - resp: "OK"

SMPP Submit_sm

SMPP Submit_sm - resp: "OK"

Здесь, как видно, всё ок! А вот дальше...

SMPP Query_sm

SMPP Generic_nack: "Invalid command ID"(!!!) Как такое возможно??? Ведь даже снифер показывает, что идёт запрос SMPP Query_sm! Может кто знает, в чём дело? Да кстати в запросе SMPP Query_sm в поле Operation(что и есть command ID) стоит Query_sm(0x00000003)! Кто-нибудь знает, у query_sm такой command_id или нет?
Сообщ. #902632
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 5:42