ActiveXperts
SMS & MMS Toolkit


 Product Overview

 Supported Protocols:
 
 How to use

 Online Samples

 Download (.exe)

 Brochure (.pdf)

 Manual (.htm)

 Release Notes


Support

 Knowledge Base

 Forum

 Contact Support


Purchase

 Licensing

 Pricing

 Order now


Providers

 SMPP Providers

 MMS Providers

 TAP/UCP Providers

 SNPP Providers


Related documents

 Case studies

 SMS Documents

 GSM Network Codes

 TAPI Documents

 About Mobile
 Communications


 AT Commands

 RFC's


  Download ActiveXperts SMS and MMS Toolkit 5.1  (6804 KB - .exe file)
  Download Manual  (623 KB - .htm file)


SMS Delivery Reports using GSM Modems


Like most cell phones, GSM modems are able to check the delivery of a SMS message using delivery reports.
If this option has been turned on, you will receive a delivery report for every message that was sent with the 'delivery report' flag turned on.
This delivery report contains a message status, delivery time and an optional network specific error code.

This message is only received when the message was delivered or has been failed.
You do not receive a delivery report when the message is still enroute.

When a delivery report is received, it is stored in the modems internal memory, or on the SIM card.
Where the report is stored depends on the device used. WaveCom and Multitech devices use a dedicated storage for status reports.

The following storages are supported by most GSM phones and modems:

Name Description
SM Memory on the SIM card
ME The device's memory
MT Combined storage (SIM and device memory)
SR Status reports memory, dedicated memory in the device, used by WaveCom

Because these memories normally can hold just a few messages, it is recommended to remove these messages after receive.
The ActiveXperts SMS and MMS toolkit has built in support for requesting and processing delivery reports.

To request a delivery report for a message, you have to set the 'RequestDeliveryStatus' property of the 'SmsMessage' object to 'True'.
The SMS Component will then set the 'TP-SRR' bit in the SMS-SUBMIT PDU when a message is submitted.

Before you can receive delivery reports, you need to specify the storage used for delivery reports using the 'Storage' property of the 'GsmOut' object.
Please refer to the manual of the GSM modem for details on what storage to use. If you are not sure, use 'asREPORTSSTORAGE_MEMORY',
if you are using a WaveCom or Multitech modem, please use 'asSTORAGE_REPORT'.

If you select the incorrect storage, you will not receive any reports !

The following values are supported:

asSTORAGE_ALL Autodetect all storages supported by this device
asSTORAGE_SIM Use SIM Memory for status reports
asSTORAGE_MEMORY Use Device Memory for status reports
asSTORAGE_ANY Use SIM and device memory for status reports
asSTORAGE_REPORTS Use special Reports memory of the device for all status reports. Only advanced GSM modems have such a Reports memory


Upon success or failure, a delivery report will be sent back to the GSM modem.
The delivery report will be delivered to the GSM modem as a SMS-STATUS-REPORT PDU.

Please note that not all providers support this feature, but most of them do. Most providers do not charge extra for status reports.

The delivery report contains a status field (TP-ST) which can hold one of the following values:

Value Description
0x00 Short message delivered successfully
0x01 Forwarded, but status unknown
0x02 Replaced
0x20 Congestion, still trying
0x21 Recipient busy, still trying
0x22 No response recipient, still trying
0x23 Service rejected, still trying
0x24 QOS not available, still trying
0x25 Recipient error, still trying
0x40 RPC Error
0x41 Incompatible destination
0x42 Connection rejected
0x43 Not obtainable
0x44 QOS not available
0x45 No internetworking available
0x46 Message expired
0x47 Message deleted by sender
0x48 Message deleted by SMSC
0x49 Does not exist


The most common values return are 0x00 (success) or 0x46 (expired, for instance when a phone has been turned off for a few days).
The SMS and MMS Toolkit translates these status codes into more readable status descriptions (same as in SMPP):

Status Number Status Explanation
0 SCHEDULED The message is scheduled for later sending.
1 ENROUTE The message is enroute.
2 DELIVERED The message was successfully delivered.
3 EXPIRED The SMSC was unable to deliver the message in a specified amount of time.
For instance when the phone was turned off.
4 DELETED The message was deleted.
5 UNDELIVERABLE The SMS was unable to deliver the message.
For instance, when the number does not exist.
6 ACCEPTED The SMS was accepted and will be send.
7 UNKNOWN Unknown error occured.
8 REJECTED The message was rejected.
The provider could have blocked phonenumbers in this range.
9 SKIPPED The message was skipped.


To Query the status of a message, you need to know the message reference of the sent message.
After sending a messages, this reference is stored in the 'MessageReference' property.
This is a 8-bit number (0-255). Please not that when you are sending a lot of messages, this number can be a duplicate.
You do not have to set this property if you want to query the last message sent.

When you call the 'QueryStatus' function, the SMS component will open the selected storage,
reads all new delivery reports and deletes them. Other messages in the selected storage will not be deleted.

Delivery reports for other messages are also cached in the internal memory of the SMS component.

If a delivery report for the specified message reference is found, a SmsDeliveryStatus object is returned.
The 'StatusCompletedTime' and 'StatusCompletedTimeSeconds' properties are set to the SMSC discharge time (TP-DT), this means the time the message was delivered,
or the time the SMSC detects an error and stops retrying.

The following VBScript code sample demonstrates how to use delivery reports with the SMS and MMS Toolkit:

Option Explicit

Dim objSmsProtocol
Dim objSmsMessage
Dim objSmsStatus 
Dim objConstants

Dim strReference

Set objSmsProtocol = CreateObject ( "ActiveXperts.SmsProtocolGsm" )
Set objSmsMessage  = CreateObject ( "ActiveXperts.SmsMessage"     )
Set objConstants   = CreateObject ( "ActiveXperts.SmsConstants"   )

' Set Logfile
objSmsProtocol.LogFile  = "c:\SmsLog.txt"

' Set Device
objSmsProtocol.Device   = "COM1"

' Set recipient
objSmsMessage.Recipient = "+31647134225" 

' Set message text
objSmsMessage.Data      = "SMS Message with delivery report request"

' Request status report
objSmsMessage.RequestDeliveryReport = TRUE

' Send the message 
strReference = objSmsProtocol.Send ( objSmsMessage )		 

' Show the result
If( objSmsProtocol.LastError <> 0 ) Then
    WScript.Echo "Failed to send message, error: " & objSmsProtocol.LastError & " (" &_
	              & objSmsProtocol.GetErrorDescription( objSmsProtocol.LastError ) & ")"
    WScript.Echo "To view the trace file, open " & objSmsProtocol.LogFile & "."
    WScript.Quit
Else
    WScript.Echo "Message successfully submitted" & vbCrlf & vbCrLf & "Message Reference = " & strReference 
End If

WScript.Sleep ( 30000 ) ' Wait some seconds to allow the SMS to get processed and delivered.

' Query the message 
WScript.Echo "Query the message, this can take some seconds..."

Set objSmsStatus = objSmsProtocol.QueryStatus ( strReference )			 

' Show the result
If( objSmsProtocol.LastError <> 0 ) Then
    WScript.Echo "Failed to query message, error: " & objSmsProtocol.LastError & " (" &_
	             & objSmsProtocol.GetErrorDescription( objGsmOut.LastError ) & ")"
    WScript.Echo "To view the trace file, open " & objSmsProtocol.LogFile & "."
    WScript.Quit
Else
    WScript.Echo "Message successfully queried"
    WScript.Echo
    WScript.Echo "Status = " & objSmsStatus.StatusDescription 
    WScript.Echo "Time   = " & objSmsStatus.StatusCompletedTime
End If





The ActiveXperts SMS and MMS Toolkit is a SMS development component (SDK). This control can be used by any Windows development platform, including Visual Basic .NET, Visual CSharp .NET, ASP .NET (VB,CS), ASP, Visual Basic, Visual Basic for Applications (VBA), Visual Studio/Visual C++, Borland Delphi and C++ Builder, PHP, ColdFusion, HTML, VBScript and any other ActiveX/COM compliant platform. The SMS and MMS Toolkit is an ActiveXperts Software B.V. Product.

Copyright ©1999-2007 ActiveXperts Software. All rights reserved.