atefsaeed2010 / datacard

Automatically exported from code.google.com/p/datacard
Other
0 stars 1 forks source link

DatacardSendSMS Delivery Report request #68

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Connect to manager
backup-mirror datacard-read-only # telnet 127.0.0.1 5038
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Asterisk Call Manager/1.1
Action: Login
UserName: dexter
Secret: l33tP4ssw0rd
Events: on

Response: Success
Message: Authentication accepted

Event: FullyBooted
Privilege: system,all
Timestamp: 1299751476.743407
SequenceNumber: 2
File: manager.c
Line: 2936
Func: action_login
Status: Fully Booted

2. Send a message without delivery report request
Action: DatacardSendSMS
Device: datacard2
Number: 40760xxxyyy
Message: hello world
Validity: 1440
Report: yes

Response: Success
Message: [datacard2] SMS queued for send
SMSID: 0xd76c10

Event: DatacardSMSStatus
Privilege: call,all
Timestamp: 1299751562.102499
SequenceNumber: 5
File: manager.c
Line: 221
Func: manager_event_sent
Device: datacard2
SMSID: 0xd76c10
Status: Sent

3. Send a message with delivery report request
Action: DatacardSendSMS
Device: datacard2
Number: 40760xxxyyy
Message: hello world
Validity: 1440
Report: yes

Response: Success
Message: [datacard2] SMS queued for send
SMSID: 0xd76c10

Event: DatacardSMSStatus
Privilege: call,all
Timestamp: 1299751605.922242
SequenceNumber: 8
File: manager.c
Line: 221
Func: manager_event_sent
Device: datacard2
SMSID: 0xd76c10
Status: Sent

What is the expected output? What do you see instead?
I don't know .. something (an event maybe) to show when the user received it ?

What version of the product are you using? On what operating system?
Gentoo X86_64, chan_datacard r194, asterisk 1.8.3

Please provide any additional information below.

would be nice to have this example (how to use the manager apps) on the wiki!

Original issue reported on code.google.com by dex...@d3xt3r01.tk on 10 Mar 2011 at 10:22

GoogleCodeExporter commented 9 years ago
Also tried with:

Report: True
and
Report: 1

Same thing. What am I doing wrong ?

Original comment by dex...@d3xt3r01.tk on 10 Mar 2011 at 10:45

GoogleCodeExporter commented 9 years ago
did you check if the PDU sent has bit delivery on?

Original comment by pag...@gmail.com on 10 Mar 2011 at 3:38

GoogleCodeExporter commented 9 years ago
how can I see what pdu does it send ?

Original comment by dex...@d3xt3r01.tk on 10 Mar 2011 at 3:42

GoogleCodeExporter commented 9 years ago
backup-mirror*CLI> [2011-03-10 17:53:48] DEBUG[13513]: at_queue.c194 at_write: 
[datacard3] [0031000B910467905092F40000A90BE8329BFD06DDDF723619^Z]

So it seems it does, how/where do I see the delivery report ?

Original comment by dex...@d3xt3r01.tk on 10 Mar 2011 at 3:58

GoogleCodeExporter commented 9 years ago
whats show
'manager show commands' 
and 
'manager show command DatacardSendSMS' 
?

Original comment by bg_...@mail.ru on 10 Mar 2011 at 4:31

GoogleCodeExporter commented 9 years ago
so .. now support for delivery report ? 

backup-mirror*CLI> manager show commands
  Action           Privilege        Synopsis
  ------           ---------        --------
  WaitEvent        <none>           Wait for an event to occur.
  QueueReset       <none>           Reset queue statistics.
  QueueReload      <none>           Reload a queue, queues, or any sub-section of a queue o
  QueueRule        <none>           Queue Rules.
  QueuePenalty     agent,all        Set the penalty for a queue member.
  QueueLog         agent,all        Adds custom entry in queue_log.
  QueuePause       agent,all        Makes a queue member temporarily unavailable.
  QueueRemove      agent,all        Remove interface from queue.
  QueueAdd         agent,all        Add interface to queue.
  QueueSummary     <none>           Show queue summary.
  QueueStatus      <none>           Show queue status.
  Queues           <none>           Queues.
  MuteAudio        system,all       Mute an audio stream
  VoicemailUsersL  call,reporting,  List All Voicemail User Information.
  DatacardReload   system,config,r  Reload a module configuration.
  DatacardRemove   system,config,r  Remove a datacard.
  DatacardStart    system,config,r  Start a datacard.
  DatacardStop     system,config,r  Stop a datacard.
  DatacardRestart  system,config,r  Restart a datacard.
  DatacardReset    system,config,r  Reset a datacard.
  DatacardSetCCWA  system,config,r  Enable/Disabled Call-Waiting on a datacard.
  DatacardSendSMS  system,config,r  Send a sms message.
  DatacardSendUSS  system,config,r  Send a ussd command to the datacard.
  DatacardShowDev  system,config,r  List Datacard devices
  MixMonitorMute   <none>           Mute / unMute a Mixmonitor recording.
  PlayDTMF         call,all         Play DTMF signal on a specific channel.
  IAXregistry      system,reportin  Show IAX registrations.
  IAXnetstats      system,reportin  Show IAX Netstats.
  IAXpeerlist      system,reportin  List IAX Peers.
  IAXpeers         system,reportin  List IAX peers.
  AgentLogoff      agent,all        Sets an agent as no longer logged in.
  Agents           agent,all        Lists agents and their status.
  LocalOptimizeAw  system,call,all  Optimize away a local channel when possible.
  SIPnotify        system,all       Send a SIP notify.
  SIPshowregistry  system,reportin  Show SIP registrations (text format).
  SIPqualifypeer   system,reportin  Qualify SIP peers.
  SIPshowpeer      system,reportin  show SIP peer (text format).
  SIPpeers         system,reportin  List SIP peers (text format).
  AGI              agi,all          Add an AGI command to execute by Async AGI.
  JabberSend       system,all       Sends a message to a Jabber Client.
  UnpauseMonitor   call,all         Unpause monitoring of a channel.
  PauseMonitor     call,all         Pause monitoring of a channel.
  ChangeMonitor    call,all         Change monitoring filename of a channel.
  StopMonitor      call,all         Stop monitoring a channel.
  Monitor          call,all         Monitor a channel.
  DBDelTree        system,all       Delete DB Tree.
  DBDel            system,all       Delete DB entry.
  DBPut            system,all       Put DB entry.
  DBGet            system,reportin  Get DB Entry.
  Bridge           call,all         Bridge two channels already in the PBX.
  Park             call,all         Park a channel.
  ParkedCalls      <none>           List parked calls.
  ShowDialPlan     config,reportin  Show dialplan contexts and extensions
  AOCMessage       aoc,all          Generate an Advice of Charge message on a channel.
  ModuleCheck      system,all       Check if module is loaded.
  ModuleLoad       system,all       Module management.
  CoreShowChannel  system,reportin  List currently active channels.
  Reload           system,config,a  Send a reload event.
  CoreStatus       system,reportin  Show PBX core status variables.
  CoreSettings     system,reportin  Show PBX core settings (version etc).
  UserEvent        user,all         Send an arbitrary event.
  UpdateConfig     config,all       Update basic configuration.
  SendText         call,all         Send text message to channel.
  ListCommands     <none>           List available manager commands.
  MailboxCount     call,reporting,  Check Mailbox Message Count.
  MailboxStatus    call,reporting,  Check mailbox.
  AbsoluteTimeout  system,call,all  Set absolute timeout.
  ExtensionState   call,reporting,  Check Extension Status.
  Command          command,all      Execute Asterisk CLI Command.
  Originate        originate,all    Originate a call.
  Atxfer           call,all         Attended transfer.
  Redirect         call,all         Redirect (transfer) a call.
  ListCategories   config,all       List categories in configuration file.
  CreateConfig     config,all       Creates an empty file in the configuration directory.
  Status           system,call,rep  List channel status.
  GetConfigJSON    system,config,a  Retrieve configuration (JSON format).
  GetConfig        system,config,a  Retrieve configuration.
  Getvar           call,reporting,  Gets a channel variable.
  Setvar           call,all         Set a channel variable.
  Ping             <none>           Keepalive command.
  Hangup           system,call,all  Hangup channel.
  Challenge        <none>           Generate Challenge for MD5 Auth.
  Login            <none>           Login Manager.
  Logoff           <none>           Logoff Manager.
  Events           <none>           Control Event Flow.
  DataGet          <none>           Retrieve the data api tree.

backup-mirror*CLI> manager show command DatacardSendSMS
Action: DatacardSendSMS
Synopsis: Send a sms message.
Privilege: system,config,reporting,all
Description: Send a sms message from a datacard.

Variables: (Names marked with * are required)
        ActionID: <id>          Action ID for this transaction. Will be returned.
        *Device:  <device>      The datacard to which the sms be send.
        *Number:  <number>      The phone number to which the sms will be send.
        *Message: <message>     The sms message that will be send.

Original comment by dex...@d3xt3r01.tk on 10 Mar 2011 at 4:35

GoogleCodeExporter commented 9 years ago
where you find 

Validity:
and 
Report: 

paraments?

Original comment by bg_...@mail.ru on 10 Mar 2011 at 4:43

GoogleCodeExporter commented 9 years ago
manager.c @ Line: 168

static int manager_send_sms (struct mansession* s, const struct message* m)
{
        const char*     device  = astman_get_header (m, "Device");
        const char*     number  = astman_get_header (m, "Number");
        const char*     message = astman_get_header (m, "Message");
        const char*     validity= astman_get_header (m, "Validity");
        const char*     report  = astman_get_header (m, "Report");

Original comment by dex...@d3xt3r01.tk on 10 Mar 2011 at 4:45

GoogleCodeExporter commented 9 years ago
if it's not documented, it doesn't mean it's not in the source code .. I can 
see it calling sms_send with "report" set .. 

        if (ast_strlen_zero (device))
        {
                astman_send_error (s, m, "Device not specified");
                return 0;
        }

        if (ast_strlen_zero (number))
        {
                astman_send_error (s, m, "Number not specified");
                return 0;
        }

        if (ast_strlen_zero (message))
        {
                astman_send_error (s, m, "Message not specified");
                return 0;
        }

        msg = send_sms(device, number, message, validity, report, &status, &msgid);

..  and so on .. 

So, I don't get it .. doesn't the modem support it ? If I manually send a PDU 
with SRR ... 

Original comment by dex...@d3xt3r01.tk on 10 Mar 2011 at 4:53

GoogleCodeExporter commented 9 years ago
no way to send raw PDU.
Modem send PDU as-is unmodified to SC.

Original comment by bg_...@mail.ru on 10 Mar 2011 at 6:18

GoogleCodeExporter commented 9 years ago
Well the thing is that it seems the "delivery report request" bit is set on ... 
what happens with the report ?

Original comment by dex...@d3xt3r01.tk on 10 Mar 2011 at 7:18

GoogleCodeExporter commented 9 years ago
i think report not shown to chan_datacard 

Original comment by bg_...@mail.ru on 11 Mar 2011 at 5:44

GoogleCodeExporter commented 9 years ago
So it's a "hardware issue" ? The datacard itself ( firmware maybe ) doesn't 
present the delivery reports it receives ? I don't get it ...

Original comment by dex...@d3xt3r01.tk on 11 Mar 2011 at 6:34

GoogleCodeExporter commented 9 years ago
we need check this

Original comment by bg_...@mail.ru on 13 Mar 2011 at 10:26

GoogleCodeExporter commented 9 years ago
Ok, more debugging/testing got me to these results....

I got a serial port monitor ( software ) and tried to see what the mobile 
partner does when checking the box "reques delivery report" .. nothing special 
really ! the pdu is generated just as ours would ..

mobile partner does an AT+CSCA? to find out the smsc first to integrate it in 
the pdu

the delivery report is a simple message that has the delivery report bit set 
on... with some info ..

now .. the way I see it .. datacard should be like this
- when trying to send a message -
when sending the message it should implement the smsc number in the pdu
then set the srr bit on ( which it does I think .. )
then .. the reply (number) from +CMGS is a reference ... ( which should be 
attached to the queue number ) 
the delivery report tells us what happens with that message ! and should pop up 
an event "message delivered to final recipient" when received ... 

I know it's alot of work but .. it would be the most complete thing ever .. 
this + those sms bugs .. :D

Original comment by dex...@d3xt3r01.tk on 18 Mar 2011 at 4:00