How can we help?

AxMmServer.MessageDB


In C#, VB.Net, C++ and other compiled languages the namespace for most classes is AXMMCFGLib instead of AxMmServer. For interpreted languages like VBScript, JavaScript or Powershell it is AxMmServer.

Property Type Read/Write Description
Version String Read Version number of the SMS Server
Build String Read Build number of the SMS Server
Module String Read Module name of the SMS Server API module
LastError number Read Completion code of the last called function
AdoConnection object Read The ADO connection to the server database
AdoArchiveConnection object Read The ADO connection to the archive database.

Method Description
GetErrorDescription Get the description of a given error
ResetConnection Reset the connection to the server or archive database
Create Create a new message object
Load Load a message from the server or archive database
Save Saves a new message object to the server database
Delete Delete messages from the server database
Execute Execute an SQL statement in the server database
Count Count messages in the Server database
FindFirstMessage Return the first message that matches the filter
FindNextMessage Return the next message that matches the filter
StartChangeListening Start listening for notifications
StopChangeListening Stop listening for notifications
NotifyStatusUpdate Notify the server that a message status was updated
NotifyNonStatusUpdate Notify the server about a trivial message update
HasStatusUpdate Check if there has been a message status update
HasNonStatusUpdate Check if there has been a trivial message update
GetStatusDescription Look-up the friendly description of the given message status
GetTriggerStatusDescription Look-up the friendly description of the given trigger status
GetDirectionDescription Look-up the friendly description of the given message direction
GetAckStatusDescription Look-up the friendly description of the given ack status

Version property

Return the version number of the SMS Server

Example:

Set objMessageDB = CreateObject("AxMmServer.MessageDB")
WScript.Echo "SMS Server Version " & objMessageDB.Version & "; Build " & _
  objMessageDB.Build & "; Module " & objMessageDB.Module
...

Build property

Return the build number of the SMS Server.

Example:

Set objMessageDB = CreateObject("AxMmServer.MessageDB")
WScript.Echo "SMS Server Version " & objMessageDB.Version & "; Build " & _
  objMessageDB.Build & "; Module " & objMessageDB.Module
...

Module property

Return the module name of the SMS Server API module.

Example:

Set objMessageDB = CreateObject("AxMmServer.MessageDB")
WScript.Echo "SMS Server Version " & objMessageDB.Version & "; Build " & _
  objMessageDB.Build & "; Module " & objMessageDB.Module
...

LastError property

Completion code of the last called function. To find the error description of a given error code, go to the online error codes codes page.

Example:

Set objMessageDB = CreateObject( "AxMmServer.MessageDB" ) 
Set objConstants = CreateObject( "AxMmServer.Constants" ) 

objMessageDB.CheckReadAccess 
WScript.Echo "CheckReadAccess, result: " &  objMessageDB.LastError

...

AdoConnection property

Returns the ADO connection to the server database in the current state that it is in.

To be sure the ADO connection is opened use ResetConnection before accessing this property.

Example:

Set objMessageDB = CreateObject( "AxMmServer.MessageDB" ) 
Set objConstants = CreateObject( "AxMmServer.Constants" ) 

objMessageDB.ResetConnection
WScript.Echo "Open, result: " &  objMessageDB.LastError
Set objAdoCon = objMessageDB.AdoConnection

Set objRs = objAdoCon.Execute("...")

...

AdoArchiveConnection property

Returns the ADO connection to the archive database in the current state that it is in.

To be sure the ADO connection is opened use ResetConnection before accessing this property.

Example:

Set objMessageDB = CreateObject( "AxMmServer.MessageDB" ) 
Set objConstants = CreateObject( "AxMmServer.Constants" ) 

objMessageDB.ResetConnection objConstants.FLAG_RESET_ARCHIVEDATABASE
WScript.Echo "Open, result: " & objMessageDB.LastError
Set objAdoCon = objMessageDB.AdoArchiveConnection

Set objRs = objAdoCon.Execute("...")

...

GetErrorDescription method

GetErrorDescription provides the error description of a given error code.

Parameters:

  • The error code

Return value:

The error string.

Example:

Set objMessageDB = CreateObject("AxMmServer.MessageDB") 
Set objConstants = CreateObject("AxMmServer.Constants") 

Set objMessage = objMessageDB.Create("SMS")
WScript.Echo "Create, result: " & _
    objMessageDB.GetErrorDescription(objMessageDB.LastError)
  

ResetConnection method

Normally an instance of the MessageDB object will automatically connect to the server or archive database as required. Call this method if there is some database connection error. For instance, if the connection to the database was shortly interrupted. After calling the method, if ‘LastError’ is set to 0 the connection to the database should be ready for use.

Parameters:

Flags (Number, optional; default: 0) – Options to use. Find the flags here.

Return value:

none

Example:

Set objMessageDB = CreateObject("AxMmServer.MessageDB") 
Set objConstants = CreateObject("AxMmServer.Constants") 

objMessageDB.ResetConnection
WScript.Echo "ResetConnection, result: " & _
    objMessageDb.GetErrorDescription(objMessageDB.LastError)

Create method

Create a new message object of the given message type. The message is only created in the server database after calling Save.

The following message types are always available:

  • SMS – To create an SMS message
  • EMAIL – To create an E-mail message
  • FILE – To create a file message
  • SMPPSERVERBIND – To create an SMPP Server bind message

Parameters:

Message type (String) – The type of message to create

Return value:

none

Example:

Set objMessageDB = CreateObject("AxMmServer.MessageDB") 
Set objConstants = CreateObject("AxMmServer.Constants") 

Set objMessage = objMessageDB.Create("SMS")
WScript.Echo "Create, result: " &  objMessageDB.LastError   
If objMessageDB.LastError <> 0 Then
  WScript.Quit
End If

objMessage.ToAddress = "+31612345678
objMessage.Body = "Hello, World"

objMessageDB.Save objMessage
WScript.Echo "Save, result: " & objMessageDB.LastError   
  

Load method

Load a message from the Server database.

Parameters:

Message ID (Number) – Record ID of the message in the server database
Flags (Number, optional; default: 0) – Options to use. Find the flags here.

Return value:

A new Message object.

Example:

Set objMessageDB = CreateObject( "AxMmServer.MessageDB" ) 
Set objConstants = CreateObject( "AxMmServer.Constants" ) 

Set objMessage = objMessageDB.Load(5)                  ' Load Message with Message ID 5
WScript.Echo "Load, result: " & objMessageDB.LastError
If objMessageDB.LastError <> 0  Then
  WScript.Quit
End If  

WScript.Echo "Message successfully loaded, ID: " & objMessage.ID

Save method

Saves a new message object to the server database.
If the message was originally created new records will be inserted into the server database.
If the message was originally loaded the existing message will be updated.
Change this behavior by using the optional flags parameter.

Parameters:

Message object – The message to save
Flags (Number, optional; default: 0) – Options to use. Find the flags here

Return value:

none

Example:

Set objMessageDB = CreateObject("AxMmServer.MessageDB") 
Set objConstants = CreateObject("AxMmServer.Constants") 

Set objMessage = objMessageDB.Create("SMS")
WScript.Echo "Create, result: " &  objMessageDB.LastError   
If objMessageDB.LastError <> 0 Then
  WScript.Quit
End If

objMessage.ToAddress = "+31612345678
objMessage.Body = "Hello, World"

objMessageDB.Save objMessage
WScript.Echo "Save, result: " & objMessageDB.LastError   
  

Delete method

Delete messages from the server database that match a given message type and filter.
The filter needs to be SQL and an expression that could go after ‘SELECT * FROM Messages WHERE <filter>’
To delete all message the filter should be ‘1=1’.

Parameters:

Type (String) – The message type. Leave empty to delete any message that matches the filter
Filter (String) – A message filter. Cannot be empty

Return value:

Always 0.

Example:

Set objMessageDB = CreateObject( "AxMmServer.MessageDB" ) 
Set objConstants = CreateObject( "AxMmServer.Constants" ) 

objMessageDB.Delete("", "ID > 46 And ID < 49" )               ' Delete Message with ID=47 or ID=48
WScript.Echo "Delete, result: " & objMessageDB.LastError

Execute method

Execute an SQL statement in the server database.

Parameters:

SQL Statement (String)

Return value:

Number of records affected.

Example:

Set objMessageDB = CreateObject( "AxMmServer.MessageDB" ) 
Set objConstants = CreateObject( "AxMmServer.Constants" ) 

' Resend all messages in the database
objMessageDB.Execute "UPDATE Messages SET MessageStatus='SCHEDULED', ScheduledTime=SYSDATETIME()"
WScript.Echo "Execute, result: " & objMessageDB.LastError

Count method

Count the number of messages in the Server database. You can apply a filter. When an empty string is passed as filter, all messages are counted. The filter needs to be SQL and an expression that could go after ‘SELECT * FROM Messages WHERE <filter>’

Parameters:

Type (String) – The message type. Leave empty to count any message that matches the filter
Filter (String) – A message filter. Pass an empty string to count all messages.

Return value:

Number of messages.

Example:

Set objMessageDB = CreateObject( "AxMmServer.MessageDB" ) 
Set objConstants = CreateObject( "AxMmServer.Constants" ) 

' Count all messages in the database with direction Outgoing and status sent 
strFilter = "DirectionID='" & objConstants.MESSAGEDIRECTION_IN & "' AND " & _
            "StatusID='" & objConstants.MESSAGESTATUS_SENT & "'"
numRecords = objMessageDB.Count("", strFilter)               ' Count the records
WScript.Echo "Count, result: " &  objMessageDB.LastError   
If objMessageDB.LastError <> 0 Then
   WScript.Quit
End If

WScript.Echo "Number of messages: " &  numRecords

FindFirstMessage method

Find messages in the server database that match the filter. When an empty string is passed as filter, all messages are selected. The filter can be formatted as an SQL ‘WHERE’ clause.

Parameters :

Type (String) – The message type. Leave empty to count any message that matches the filter
Filter (String) – A message filter. Pass an empty string to find all messages
Order (String, Optional) – Indicates how the results are sorted. Examples: “FromAddress”, “FromAddress ASC”, “ID ASC, FromAddress DESC”
Top (Number, Optional) – Set a limit to the number of records in the result
Flags (Number, Optional; Default: 0) – Options to use. Find the flags here

Return value:

A new Message object.

Example:

Set objMessageDB = CreateObject( "AxMmServer.MessageDB" ) 
Set objConstants = CreateObject( "AxMmServer.Constants" ) 

' Find all messages
' Start with the first message that matches the qualification
Set objMessage = objMessageDB.FindFirstMessage("SMS", "")
While( objMessageDB.LastError = 0 ) 
  WScript.Echo "Message found: " & objMessage.ID
  WScript.Echo "  Sender: "    & objMessage.FromAddress
  WScript.Echo "  Recipient: " & objMessage.ToAddress
  ' Find next message
  Set objMessage = objMessageDB.FindNextMessage()        
WEnd  

' Find all outgoing messages sorted on Status (Ascending)
WScript.Echo vbCrLf
Set objMessage = objMessageDB.FindFirstMessage("SMS", "DirectionID = '" & _
                 objConstants.MESSAGEDIRECTION_OUT & "'", "Status ASC" )
While( objMessageDB.LastError = 0 ) 
  WScript.Echo "Message found: " & objMessage.ID
  WScript.Echo "  Sender: "    & objMessage.FromAddress
  WScript.Echo "  Recipient: " & objMessage.ToAddress
  Set objMessage   = objMessageDB.FindNextMessage()  
WEnd

FindNextMessage method

Find next message in the server database. This function should be used together with FindFirstMessage.

Parameters:

None

Return value:

A new Message object.

Example:

 Set objMessageDB = CreateObject( "AxMmServer.MessageDB" ) 
Set objConstants = CreateObject( "AxMmServer.Constants" ) 

' Find all messages
' Start with the first message that matches the qualification
Set objMessage = objMessageDB.FindFirstMessage( "" )     
While( objMessageDB.LastError = 0 ) 
  WScript.Echo "Message found: " & objMessage.ID
  WScript.Echo "  Sender: "    & objMessage.FromAddress
  WScript.Echo "  Recipient: " & objMessage.ToAddress
  ' Find next message
  Set objMessage = objMessageDB.FindNextMessage()        
WEnd  

' Find all outgoing messages sorted on Status (Ascending)
WScript.Echo vbCrLf
Set objMessage = objMessageDB.FindFirstMessage( "DirectionID = '" & _
                 objConstants.MESSAGEDIRECTION_OUT & "'", "Status ASC" )
While( objMessageDB.LastError = 0 ) 
  WScript.Echo "Message found: " & objMessage.ID
  WScript.Echo "  Sender: "    & objMessage.FromAddress
  WScript.Echo "  Recipient: " & objMessage.ToAddress
  Set objMessage   = objMessageDB.FindNextMessage()  
WEnd

StartChangeListening method

Start listening to message related notifications.

Use this when your application should be notified of changes in the messages tables. For instance, when implementing a custom channel or when implementing stand-alone processing. This method should not be used when implementing a trigger script or a web interface.

Without parameter this will listen to general changes to the message table such as inserting or modifying records. When a channel parameter is used it will only listen for changes relating to messages for that specific channel.

Parameters:

Channel ID (String, Optional) – Listen to changes related to a specific channel

Return value:

None.

Example:

Set objMessageDB = CreateObject( "AxMmServer.MessageDB" ) 

objMessageDB.StartChangeListening
If objMessageDB.LastError <> 0 Then
    WScript.Echo "Error: " & objMessageDB.GetErrorDescription(objMessageDB.LastError)
    WScript.Quit 1
End If

Do While True
    If objMessageDB.HasStatusUpdate Then 
        WScript.Echo "A message status was updated"
        Exit Do
    End If
    
    WScrip.Sleep 1
Loop

objMessageDB.StopChangeListening

StopChangeListening method

Stop listening for message related notifications.

Parameters:

None

Return value:

None

Example:

Set objMessageDB = CreateObject( "AxMmServer.MessageDB" ) 

objMessageDB.StartChangeListening
If objMessageDB.LastError <> 0 Then
    WScript.Echo "Error: " & objMessageDB.GetErrorDescription(objMessageDB.LastError)
    WScript.Quit 1
End If

Do While True
    If objMessageDB.HasStatusUpdate Then 
        WScript.Echo "A message status was updated"
        Exit Do
    End If
    
    WScrip.Sleep 1
Loop

objMessageDB.StopChangeListening

NotifyStatusUpdate method

Send out a notification to the server that a message status was updated. The server will forward this notification to any other listeners.

This notification will trigger the immediate processing of any new or updated messages. It can be used for anything that introduces new messages to the server database or updates the status of existing message in the server database.

This method should not be called from a trigger script.

Parameters:

Channel ID (String, Optional) – The status change was related to a specific channel

Return value:

None

Example:

Set objMessageDB = CreateObject( "AxMmServer.MessageDB" ) 

Set objSms = objMessageDB.Create("SMS")
objSms.ToAddress = "+3112345678"
objSms.Body = "Send this out right away!"

objMessageDB.Save objSms
If objMessageDB.LastError <> 0
    WScript.Echo "Error: " & objMessageDB.GetErrorDescription(objMessageDB.LastError)
    WScript.Quit 1
End If

objMessageDB.NotifyStatusUpdate

NotifyNonStatusUpdate method

Send out a notification to the server that a message was updated. The server will forward this notification to any other listeners.

This notification will cause the SMS Server Manager to reload the current message view but will not cause a message to be sent or updated.

This method should not be called from a trigger script.

Parameters:

None

Return value:

None

Example:

Set objMessageDB = CreateObject( "AxMmServer.MessageDB" ) 

objMessageDB.Delete "ID = 100"
If objMessageDB.LastError <> 0
    WScript.Echo "Error: " & objMessageDB.GetErrorDescription(objMessageDB.LastError)
    WScript.Quit 1
End If

objMessageDB.NotifyNonStatusUpdate

HasStatusUpdate method

Check to see if there has been a status update since the last check.

This method requires StartChangeListening to be called first.

Parameters:

None

Return value:

None

Example:

Set objMessageDB = CreateObject( "AxMmServer.MessageDB" ) 

objMessageDB.StartChangeListening
If objMessageDB.LastError <> 0 Then
    WScript.Echo "Error: " & objMessageDB.GetErrorDescription(objMessageDB.LastError)
    WScript.Quit 1
End If

Do While True
    If objMessageDB.HasStatusUpdate Then 
        WScript.Echo "A message status was updated"
        Exit Do
    End If
    
    WScrip.Sleep 1
Loop

objMessageDB.StopChangeListening

HasNonStatusUpdate method

Check to see if there has been a trivial message update. A message update is trivial if the update does not require the message to be processed or sent.

This method requires StartChangeListening to be called first.

Parameters:

None

Return value:

None

Example:

Set objMessageDB = CreateObject( "AxMmServer.MessageDB" ) 

objMessageDB.StartChangeListening
If objMessageDB.LastError <> 0 Then
    WScript.Echo "Error: " & objMessageDB.GetErrorDescription(objMessageDB.LastError)
    WScript.Quit 1
End If

Do While True
    If objMessageDB.HasStatusUpdate Or _ 
       objMessageDB.HasNonStatusUpdate Then 
        WScript.Echo "There was a change in the message database"
        Exit Do
    End If
    
    WScrip.Sleep 1
Loop

objMessageDB.StopChangeListening

GetStatusDescription method

Returns the friendly description of the given StatusID.

Parameters:

A numeric code.

Return value:

The description string.

Example:

Set objMessageDB = CreateObject( "AxMmServer.MessageDB" )
Set objConstants = CreateObject( "AxMmServer.Constants" ) 
  
' Find first message that matches the qualification
Set objMessage   = objMessageDB.FindFirstMessage("", "" )     
If( objMessageDB.LastError = 0 ) Then
  WScript.Echo "Messgage ID: " & objMessage.ID
  WScript.Echo "Direction ID: " & objMessage.DirectionID
  WScript.Echo "Direction string: " & _
        objMessageDB.GetDirectionDescription( objMessage.DirectionID )
  WScript.Echo "StatusID: " & objMessage.StatusID
  WScript.Echo "Status string: " & objMessageDB.GetStatusDescription( objMessage.StatusID )
  WScript.Echo "TriggerStatusID: " & objMessage.TriggerStatusID
  WScript.Echo "Trigger status string: " & _
        objMessageDB.GetTriggerStatusDescription( objMessage.TriggerStatusID )
  WScript.Echo "AckStatusID: " & objMessage.AckStatusID
  WScript.Echo "Ack status string: " & _
        objMessageDB.GetAckStatusDescription( objMessage.AckStatusID )
End If

GetTriggerStatusDescription method

Returns the friendly description of the given TriggerStatusID`.

Parameters:

A numeric code.

Return value:

The description string.

Example:

Set objMessageDB = CreateObject( "AxMmServer.MessageDB" )
Set objConstants = CreateObject( "AxMmServer.Constants" ) 
  
' Find first message that matches the qualification
Set objMessage   = objMessageDB.FindFirstMessage("", "" )     
If( objMessageDB.LastError = 0 ) Then
  WScript.Echo "Messgage ID: " & objMessage.ID
  WScript.Echo "Direction ID: " & objMessage.DirectionID
  WScript.Echo "Direction string: " & _
        objMessageDB.GetDirectionDescription( objMessage.DirectionID )
  WScript.Echo "StatusID: " & objMessage.StatusID
  WScript.Echo "Status string: " & objMessageDB.GetStatusDescription( objMessage.StatusID )
  WScript.Echo "TriggerStatusID: " & objMessage.TriggerStatusID
  WScript.Echo "Trigger status string: " & _
        objMessageDB.GetTriggerStatusDescription( objMessage.TriggerStatusID )
  WScript.Echo "AckStatusID: " & objMessage.AckStatusID
  WScript.Echo "Ack status string: " & _
        objMessageDB.GetAckStatusDescription( objMessage.AckStatusID )
End If

GetDirectionDescription method

Returns the friendly description of the given DirectionID.

Parameters:

A numeric code.

Return value:

The description string.

Example:

Set objMessageDB = CreateObject( "AxMmServer.MessageDB" )
Set objConstants = CreateObject( "AxMmServer.Constants" ) 
  
' Find first message that matches the qualification
Set objMessage   = objMessageDB.FindFirstMessage("", "" )     
If( objMessageDB.LastError = 0 ) Then
  WScript.Echo "Messgage ID: " & objMessage.ID
  WScript.Echo "Direction ID: " & objMessage.DirectionID
  WScript.Echo "Direction string: " & _
        objMessageDB.GetDirectionDescription( objMessage.DirectionID )
  WScript.Echo "StatusID: " & objMessage.StatusID
  WScript.Echo "Status string: " & objMessageDB.GetStatusDescription( objMessage.StatusID )
  WScript.Echo "TriggerStatusID: " & objMessage.TriggerStatusID
  WScript.Echo "Trigger status string: " & _
        objMessageDB.GetTriggerStatusDescription( objMessage.TriggerStatusID )
  WScript.Echo "AckStatusID: " & objMessage.AckStatusID
  WScript.Echo "Ack status string: " & _
        objMessageDB.GetAckStatusDescription( objMessage.AckStatusID )
End If

GetAckStatusDescription method

Returns the friendly description of the given AckStatusID.

Parameters:

A numeric code.

Return value:

The description string.

Example:

Set objMessageDB = CreateObject( "AxMmServer.MessageDB" )
Set objConstants = CreateObject( "AxMmServer.Constants" ) 
  
' Find first message that matches the qualification
Set objMessage   = objMessageDB.FindFirstMessage("", "" )     
If( objMessageDB.LastError = 0 ) Then
  WScript.Echo "Messgage ID: " & objMessage.ID
  WScript.Echo "Direction ID: " & objMessage.DirectionID
  WScript.Echo "Direction string: " & _
        objMessageDB.GetDirectionDescription( objMessage.DirectionID )
  WScript.Echo "StatusID: " & objMessage.StatusID
  WScript.Echo "Status string: " & objMessageDB.GetStatusDescription( objMessage.StatusID )
  WScript.Echo "TriggerStatusID: " & objMessage.TriggerStatusID
  WScript.Echo "Trigger status string: " & _
        objMessageDB.GetTriggerStatusDescription( objMessage.TriggerStatusID )
  WScript.Echo "AckStatusID: " & objMessage.AckStatusID
  WScript.Echo "Ack status string: " & _
        objMessageDB.GetAckStatusDescription( objMessage.AckStatusID )
End If