﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Веб-программирование / Perl  / Вопрос по модулю Net::SMPP / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://www.relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Fri, 05 Sep 2008 18:28:00 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Вопрос по модулю Net::SMPP</title><link>http://www.relib.com/forums/Topic902623-18-1.aspx</link><description>Всё, спасибо, предыдущая проблема отпала! Но зато теперь такая встала...&lt;br&gt;&lt;br&gt;Вот отрывок теста моей программы...&lt;br&gt;&lt;br&gt;#!/usr/bin/perl&lt;br&gt;&lt;br&gt;&lt;br&gt;use Net::SMPP;&lt;br&gt;&lt;br&gt;&lt;br&gt;sender();&lt;br&gt;&lt;br&gt;&lt;br&gt;print "Press  to continue...";&lt;br&gt;&lt;br&gt;;&lt;br&gt;&lt;br&gt;&lt;br&gt;sub sender&lt;br&gt;&lt;br&gt;{&lt;br&gt;&lt;br&gt;($smpp_tr,$err) = Net::SMPP-&gt;new_transmitter(&lt;br&gt;&lt;br&gt;"server.ru",&lt;br&gt;&lt;br&gt;port=&gt;"2222",&lt;br&gt;&lt;br&gt;system_id =&gt;'login',&lt;br&gt;&lt;br&gt;password =&gt; 'password',&lt;br&gt;&lt;br&gt;) or die;&lt;br&gt;&lt;br&gt;print"Connect-transmitter. Status=",$err-&gt;{status},"*";&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;$resp = $smpp_tr-&gt;submit_sm(&lt;br&gt;&lt;br&gt;source_addr_ton =&gt; 0x01,&lt;br&gt;&lt;br&gt;source_addr_npi =&gt; 0x00,&lt;br&gt;&lt;br&gt;source_addr =&gt; '99999',&lt;br&gt;&lt;br&gt;dest_addr_ton =&gt; 0x01,&lt;br&gt;&lt;br&gt;dest_addr_npi =&gt; 0x01,&lt;br&gt;&lt;br&gt;destination_addr =&gt; '123456789',&lt;br&gt;&lt;br&gt;data_coding =&gt; 0x04,&lt;br&gt;&lt;br&gt;short_message=&gt; 'tstmsg ',&lt;br&gt;&lt;br&gt;esm_class =&gt; 0x00,&lt;br&gt;&lt;br&gt;) or die;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;$msg_id = $resp-&gt;{message_id};&lt;br&gt;&lt;br&gt;&lt;br&gt;$resp = $smpp_tr-&gt;query_sm(message_id =&gt; $msg_id) or die;&lt;br&gt;&lt;br&gt;die "Response indicated error: " . $resp-&gt;explain_status()&lt;br&gt;&lt;br&gt;if $resp-&gt;status;&lt;br&gt;&lt;br&gt;&lt;br&gt;$resp = $smpp_tr-&gt;unbind();&lt;br&gt;&lt;br&gt;}&lt;br&gt;&lt;br&gt;&lt;br&gt;Всё работает верно вплоть до строки проверки досатвки $resp = $smpp_tr-&gt;query_sm(message_id =&gt; $msg_id) or die;&lt;br&gt;&lt;br&gt;На ней прога виснет! Сидел думал много часов, но ничего не помогало! Потом просто догадался снифером посмотреть, а что собственно программа шлёт? И вот на что наткнулся(запросы по протоколу SMPP по порядку):&lt;br&gt;&lt;br&gt;SMPP Bind_transmitter&lt;br&gt;&lt;br&gt;SMPP Bind_transmitter - resp: "OK"&lt;br&gt;&lt;br&gt;SMPP Submit_sm&lt;br&gt;&lt;br&gt;SMPP Submit_sm - resp: "OK"&lt;br&gt;&lt;br&gt;Здесь, как видно, всё ок! А вот дальше...&lt;br&gt;&lt;br&gt;SMPP Query_sm&lt;br&gt;&lt;br&gt;SMPP Generic_nack: "Invalid command ID"(!!!) Как такое возможно??? Ведь даже снифер показывает, что идёт запрос SMPP Query_sm! Может кто знает, в чём дело? Да кстати в запросе SMPP Query_sm в поле Operation(что и есть command ID) стоит Query_sm(0x00000003)! Кто-нибудь знает, у query_sm такой command_id или нет?</description><pubDate>Sun, 13 Aug 2006 02:22:34 GMT</pubDate><dc:creator>gammaray</dc:creator></item><item><title>Вопрос по модулю Net::SMPP</title><link>http://www.relib.com/forums/Topic902623-18-1.aspx</link><description>Всем привет! Есть здесь люди, которые знакомы с модулем Net::SMPP для Perl?&lt;br&gt;&lt;br&gt;Есть пара вопросов по этому модулю... Вообщем нужно написать программу SMPP-клиент, который будет слать смс, проверять их доставку, выводить статистику в файл и т.д.&lt;br&gt;&lt;br&gt;Так я подкючаюсь к SMSC(понятно, что все параметры подключения выдуманы):&lt;br&gt;&lt;br&gt;&lt;br&gt;($smpp,$err) = Net::SMPP-&gt;new_transmitter(&lt;br&gt;&lt;br&gt;"192.168.100.100",&lt;br&gt;&lt;br&gt;port=&gt;"9999 9",&lt;br&gt;&lt;br&gt;system_id =&gt;"System_Id",&lt;br&gt;&lt;br&gt;password =&gt; "System_Password",&lt;br&gt;&lt;br&gt;system_type=&gt;"System_Type"&lt;br&gt;&lt;br&gt;) or die;&lt;br&gt;&lt;br&gt;print"Connect-transmitter. Status=",$err-&gt;{status},"*"; &lt;br&gt;&lt;br&gt;&lt;br&gt;Подключение проходит нормально!&lt;br&gt;&lt;br&gt;Дальше отсылаю тестовую смс(параметры опять выдуманы):&lt;br&gt;&lt;br&gt;&lt;br&gt;$resp = $smpp_t-&gt;submit_sm(&lt;br&gt;&lt;br&gt;source_addr_ton =&gt; 0x01,&lt;br&gt;&lt;br&gt;source_addr_npi =&gt; 0x00,&lt;br&gt;&lt;br&gt;source_addr =&gt; "9999 9",&lt;br&gt;&lt;br&gt;dest_addr_ton =&gt; 0x01,&lt;br&gt;&lt;br&gt;dest_addr_npi =&gt; 0x01,&lt;br&gt;&lt;br&gt;destination_addr =&gt; "1234 5678 9",&lt;br&gt;&lt;br&gt;data_coding =&gt; 0x04,&lt;br&gt;&lt;br&gt;short_message=&gt; "tstmsg",&lt;br&gt;&lt;br&gt;esm_class =&gt; 0x00,&lt;br&gt;&lt;br&gt;); &lt;br&gt;&lt;br&gt;&lt;br&gt;Смс успешно доходит! Так вот.. Суть проблемы в следубщем: как проверить с помощью Net::SMPP доставку этого сообщения?&lt;br&gt;&lt;br&gt;Пишу, как описано в документации к Net:SMMP на CPAN http://search.cpan.org/~sampo/Net-SMPP-1.10/SMPP.pm&lt;br&gt;&lt;br&gt;&lt;br&gt;$resp_pdu = $smpp-&gt;query_sm(message_id =&gt; $msg_id) or die;&lt;br&gt;&lt;br&gt;die "Response indicated error: " . $resp_pdu-&gt;explain_status()&lt;br&gt;&lt;br&gt;if $resp_pdu-&gt;status;&lt;br&gt;&lt;br&gt;&lt;br&gt;При таком кодепрограмма вылетает на самой первой строке с сообщением Can"t call method "query_sm" on an undefined value! Смотрел в Watch, что находится в message_id =&gt; $msg_id... Там массив с 2 элементами: тип scalar со значением message_id и 2 элемент null! Я уже не знаю, как делать! Все методы перепробовал! А к тому же при тесте программы всё время приходится слать смс, а это денег стоит! Кто-нибудь проверял доставку сообщения? Как это сделать? Очень нужна помощь!&lt;br&gt;&lt;br&gt;Заранее спасибо!</description><pubDate>Sat, 12 Aug 2006 15:10:32 GMT</pubDate><dc:creator>gammaray</dc:creator></item></channel></rss>