SMPP Lua Agent
Introduction
The SMPPLuaAgent is an asynchronous helper for Lua scripts running within the LogicApp. It is used for sending out SMPP client requests.
- The SMPP Agent sends outbound SMPP requests. It is part of the core N2SVCD framework.
- The SMPP Service handles inbound SMPP requests. It is part of the separate N2TTG product.
The SMPPLuaAgent communicates with one or more instances of the SMPPApp which can be used to communicate with one or more external SMPP entities.
The SMPPLuaAgent communicates with the SMPPApp using the SMPP-C-… messages.
SMPP Agent API methods are accessed via the “n2.n2svcd.smpp_agent” module:
local smpp_agent = require "n2.n2svcd.smpp_agent"
Configuring SMPPLuaAgent
The SMPPLuaAgent is configured within a LogicApp.
<?xml version="1.0" encoding="utf-8"?>
<n2svcd>
...
<applications>
...
<application name="Logic" module="LogicApp">
<include>
<lib>../apps/logic/lib</lib>
</include>
<parameters>
...
<parameter name="default_smpp_app_name" value="SMPP-CLIENT"/>
</parameters>
<config>
<services>
...
</services>
<agents>
<agent module="SMPPApp::SMPPLuaAgent" libs="../apps/smpp/lib"/>
</agents>
</config>
</application>
...
</application>
...
</n2svcd>
Under normal installation, the following agent
attributes apply:
Parameter Name | Type | XML Type | Description |
---|---|---|---|
module
|
SMPPApp::SMPPLuaAgent
|
Attribute | [Required] The module name containing the Lua Agent code. |
libs
|
../apps/smpp/lib
|
Element |
Location of the module for SMPPLuaAgent.
|
In addition, the SMPPLuaAgent must be configured with the name of the SMPPApp with which
it will communicate. This is configured within the parameters
of the containing
LogicApp
.
Parameter Name | Type | XML Type | Description |
---|---|---|---|
parameters
|
Array | Element |
Array of name = value Parameters for this Application instance.
|
.default_smpp_app_name
|
String | Attribute | Default name for the SMPPApp with which SMPPLuaAgent will communicate. |
.smpp_app_name_
|
String | Attribute |
Use this format when SMPPLuaAgent will communicate with more than one SMPPApp .(Default = SMPPLuaAgent uses only the default route/SMPP end-point). |
The SMPPLuaAgent API
All methods may raise a Lua Error in the case of exception, including:
- Invalid input parameters supplied by Lua script.
- Unexpected results structure returned from SMPPApp.
- Processing error occurred at SMPPApp.
- Timeout occurred at SMPPApp.
The SMPPLuaAgent API can be loaded as follows.
local smpp_agent = require "n2.n2svcd.smpp_agent"
.request_response [Asynchronous]
Send a new SMPP message to the network via the same SMPP App that processed the initially-received message.
The Lua service logic will suspend until the request is acknowledged by the far-end.
The request_response
method takes the following parameters.
Parameter | Type | Description |
---|---|---|
pdu
|
String |
The SMPP message type to send. Must be either deliver_sm or submit_sm .
|
fields
|
Object |
The fields to send for the message. The possible fields are as shown in the
fields parameter of the SMPP-C-REQUEST message.
|
This method returns a single parameter as a Lua table containing the contents of the received SMPP-C-RESPONSE message.
[Fragment] Example (Submit SM):
...
smpp_agent.request_response ("submit_sm", { source_addr = "123", destination_addr = "641234567" })
...
.submit and .deliver [Asynchronous]
Sends a new SMPP submit_sm
or deliver_sm
message to the network as per the send
method.
The submit
and deliver
methods take the following parameters.
Parameter | Type | Description |
---|---|---|
source_addr
|
String | Address of the SME from which the message originated. |
destination_addr
|
Object | Address of the SME from which the message originated. |
short_message_text
|
String | The non-encoded message text. This will be automatically encoded when the message is constructed. |
This method has the same response as the request_response
method.
[Fragment] Example (Submit, Deliver):
...
smpp_agent.submit ("123", "641234567", "Hello, world!")
smpp_agent.deliver ("641234567", "123", "Hello, world!")
...