...
Maven users will need to add the following dependency to their pom.xml
for this component:
Code Block |
---|
|
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-sip</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
|
...
The URI scheme for a sip endpoint is as follows:
Code Block |
---|
sip://johndoe@localhost:99999[?options]
sips://johndoe@localhost:99999/[?options]
|
...
The SIP Component offers an extensive set of configuration options & capability to create custom stateful headers needed to propagate state via the SIP protocol.
Div |
---|
class | confluenceTableSmall |
---|
|
Wiki Markup |
---|
{div:class=confluenceTableSmall}
|| Name || Default Value || Description ||
| {{stackName}} | {{Name | Default Value | Description |
---|
stackName
|
}} | |
| {{transport}} | {{tcp}} | Setting for choice of transport potocol. Valid choices are "tcp" or "udp". |
| {{fromUser}} | | Username of the message originator. *Mandatory setting unless a registry based custom FromHeader is specified.* |
| {{fromHost}} | | Hostname of the message originator. *Mandatory setting unless a registry based FromHeader is specified* |
| {{fromPort}} | | Port of the message originator. *Mandatory setting unless a registry based FromHeader is specified* |
| {{toUser}} | | Username of the message receiver. *Mandatory setting unless a registry based custom ToHeader is specified.* |
| {{toHost}} | | Hostname of the message receiver. *Mandatory setting unless a registry based ToHeader is specified* |
| {{toPort}} | | Portname of the message receiver. *Mandatory setting unless a registry based ToHeader is specified* |
| {{maxforwards}} | 0 | the number of intermediaries that may forward the message to the message receiver. *Optional setting. May alternatively be set using as registry based MaxForwardsHeader* |
| {{eventId}} | | Setting for a String based event Id. *Mandatory setting unless a registry based FromHeader is specified* |
| {{eventHeaderName}} | | Setting for a String based event Id. *Mandatory setting unless a registry based FromHeader is specified* |
| {{maxMessageSize}} | {{1048576}} | Setting for maximum allowed Message size in bytes. |
| {{cacheConnections}} | {{false}} | Should connections be cached by the SipStack to reduce cost of connection creation. This is useful if the connection is used for long running conversations. |
| {{consumer}} | {{false}} | This setting is used to determine whether the kind of header (FromHeader,ToHeader etc) that needs to be created for this endpoint|
| {{automaticDialogSupport}} | {{off}} | Setting to specify whether every communication should be associated with a dialog. |
| {{contentType}} | {{text}} | Setting for contentType can be set to any valid MimeType. |
| {{contentSubType}} | {{xml}} | Setting for contentSubType can be set to any valid MimeSubType. |
| {{receiveTimeoutMillis}} | {{10000}} | Setting for specifying amount of time to wait for a Response and/or Acknowledgement can be received from another SIP stack |
| {{useRouterForAllUris}} | {{false}} | This setting is used when requests are sent to the Presence Agent via a proxy. |
| {{msgExpiration}} | {{3600}} | The amount of time a message received at an endpoint is considered valid |
| {{presenceAgent}} | {{false}} | This setting is used to distingish between a Presence Agent & a consumer. This is due to the fact that the SIP Camel component ships with a basic Presence Agent (for testing purposes only). Consumers have to set this flag to true. |
{div} | transport
| tcp
| Setting for choice of transport potocol. Valid choices are "tcp" or "udp". | fromUser
| | Username of the message originator. Mandatory setting unless a registry based custom FromHeader is specified. | fromHost
| | Hostname of the message originator. Mandatory setting unless a registry based FromHeader is specified | fromPort
| | Port of the message originator. Mandatory setting unless a registry based FromHeader is specified | toUser
| | Username of the message receiver. Mandatory setting unless a registry based custom ToHeader is specified. | toHost
| | Hostname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | toPort
| | Portname of the message receiver. Mandatory setting unless a registry based ToHeader is specified | maxforwards
| 0 | the number of intermediaries that may forward the message to the message receiver. Optional setting. May alternatively be set using as registry based MaxForwardsHeader | eventId
| | Setting for a String based event Id. Mandatory setting unless a registry based FromHeader is specified | eventHeaderName
| | Setting for a String based event Id. Mandatory setting unless a registry based FromHeader is specified | maxMessageSize
| 1048576
| Setting for maximum allowed Message size in bytes. | cacheConnections
| false
| Should connections be cached by the SipStack to reduce cost of connection creation. This is useful if the connection is used for long running conversations. | consumer
| false
| This setting is used to determine whether the kind of header (FromHeader,ToHeader etc) that needs to be created for this endpoint | contentType
| text
| Setting for contentType can be set to any valid MimeType. | contentSubType
| xml
| Setting for contentSubType can be set to any valid MimeSubType. | receiveTimeoutMillis
| 10000
| Setting for specifying amount of time to wait for a Response and/or Acknowledgement can be received from another SIP stack | useRouterForAllUris
| false
| This setting is used when requests are sent to the Presence Agent via a proxy. | msgExpiration
| 3600
| The amount of time a message received at an endpoint is considered valid | presenceAgent
| false
| This setting is used to distingish between a Presence Agent & a consumer. This is due to the fact that the SIP Camel component ships with a basic Presence Agent (for testing purposes only). Consumers have to set this flag to true. |
|
Registry based Options
SIP requires a number of headers to be sent/received as part of a request. These SIP header can be enlisted in the Registry, such as in the Spring XML file.
The values that could be passed in, are the following:
Div |
---|
class | confluenceTableSmall |
---|
|
Name | Description |
---|
fromHeader
| a custom Header object containing message originator settings. Must implement the type |
|
Wiki Markup |
---|
{div:class=confluenceTableSmall}
|| Name || Description ||
| {{fromHeader}} | a custom Header object containing message originator settings. Must implement the type javax.sip.header.FromHeader |
|
| {{toHeader}} | a custom Header object containing message receiver settings. Must implement the type | toHeader
| a custom Header object containing message receiver settings. Must implement the type javax.sip.header.ToHeader |
|
| {{viaHeaders}} | List of custom Header objects of the type | viaHeaders
| List of custom Header objects of the type javax.sip.header.ViaHeader. |
|
| {{contentTypeHeader}} | a custom Header object containing message content details. Must implement the type | contentTypeHeader
| a custom Header object containing message content details. Must implement the type javax.sip.header.ContentTypeHeader |
|
| {{callIdHeader}} | a custom Header object containing call details. Must implement the type | callIdHeader
| a custom Header object containing call details. Must implement the type javax.sip.header.CallIdHeader |
|
| {{maxForwardsHeader}} | a custom Header object containing details on maximum proxy forwards. This header places a limit on the viaHeaders possible. Must implement the type | maxForwardsHeader
| a custom Header object containing details on maximum proxy forwards. This header places a limit on the viaHeaders possible. Must implement the type javax.sip.header.MaxForwardsHeader |
|
| {{eventHeader}} | a custom Header object containing event details. Must implement the type | eventHeader
| a custom Header object containing event details. Must implement the type javax.sip.header.EventHeader |
|
| {{contactHeader}} | an optional custom Header object containing verbose contact details | contactHeader
| an optional custom Header object containing verbose contact details (email, |
javax.sip.header.ContactHeader |
|
| {{expiresHeader}} | a custom Header object containing message expiration details. Must implement the type | expiresHeader
| a custom Header object containing message expiration details. Must implement the type javax.sip.header.ExpiresHeader |
|
| {{extensionHeader}} | a custom Header object containing | extensionHeader
| a custom Header object containing user/application |
javax.sip.header.ExtensionHeader |
|
{div} |
Sending Messages to/from a SIP endpoint
...
- using a SIP Stack named client
- using a registry based eventHeader called evtHdrName
- using a registry based eventId called evtId
- from a SIP Stack with Listener set up as user2@localhost:3534
- The Event being published is EVENT_A
- A Mandatory Header called REQUEST_METHOD is set to Request.Publish thereby setting up the endpoint as a Event publisher"
Code Block |
---|
producerTemplate.sendBodyAndHeader(
"sip://agent@localhost:5152?stackName=client&eventHeaderName=evtHdrName&eventId=evtid&fromUser=user2&fromHost=localhost&fromPort=3534",
"EVENT_A",
"REQUEST_METHOD",
Request.PUBLISH);
|
...
- using a SIP Stack named Subscriber
- registering with a Presence Agent user called agent@localhost:5152
- using a registry based eventHeader called evtHdrName. The evtHdrName contains the Event which is se to "Event_A"
- using a registry based eventId called evtId
Code Block |
---|
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
// Create PresenceAgent
from("sip://agent@localhost:5152?stackName=PresenceAgent&presenceAgent=true&eventHeaderName=evtHdrName&eventId=evtid")
.to("mock:neverland");
// Create Sip Consumer(Event Subscriber)
from("sip://johndoe@localhost:5154?stackName=Subscriber&toUser=agent&toHost=localhost&toPort=5152&eventHeaderName=evtHdrName&eventId=evtid")
.to("log:ReceivedEvent?level=DEBUG")
.to("mock:notification");
}
};
}
|
...