---
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    funktion.fabric8.io/kind: Connector
  name: sip
data:
  deployment.yml: |
    ---
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      labels:
        funktion.fabric8.io/kind: Subscription
        connector: sip
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            funktion.fabric8.io/kind: Subscription
            connector: sip
        spec:
          containers:
          - image: funktion/connector-sip:${project.version}
            name: connector
  schema.yml: |
    ---
    component:
      kind: component
      scheme: sip
      alternativeSchemes: sip,sips
      syntax: sip:uri
      title: SIP
      description: To send and receive messages using the SIP protocol (used in telco and mobile).
      label: mobile
      deprecated: false
      async: false
      javaType: org.apache.camel.component.sip.SipComponent
      groupId: org.apache.camel
      artifactId: camel-sip
      version: 2.18.3
    componentProperties: {}
    properties:
      uri:
        kind: path
        group: common
        required: true
        type: string
        javaType: java.net.URI
        deprecated: false
        secret: false
        description: 'URI of the SIP server to connect to (the username and password can
          be included such as: john:secretmyserver:9999)'
        order: 0
      cacheConnections:
        kind: parameter
        group: common
        label: common
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: false
        description: 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.
        order: 1
      contentSubType:
        kind: parameter
        group: common
        label: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        defaultValue: plain
        description: Setting for contentSubType can be set to any valid MimeSubType.
        order: 2
      contentType:
        kind: parameter
        group: common
        label: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        defaultValue: text
        description: Setting for contentType can be set to any valid MimeType.
        order: 3
      eventHeaderName:
        kind: parameter
        group: common
        label: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Setting for a String based event type.
        order: 4
      eventId:
        kind: parameter
        group: common
        label: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Setting for a String based event Id. Mandatory setting unless a registry based FromHeader is specified
        order: 5
      fromHost:
        kind: parameter
        group: common
        label: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Hostname of the message originator. Mandatory setting unless a registry based FromHeader is specified
        order: 6
      fromPort:
        kind: parameter
        group: common
        label: common
        type: integer
        javaType: int
        deprecated: false
        secret: false
        description: Port of the message originator. Mandatory setting unless a registry based FromHeader is specified
        order: 7
      fromUser:
        kind: parameter
        group: common
        label: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Username of the message originator. Mandatory setting unless a registry based custom FromHeader is specified.
        order: 8
      msgExpiration:
        kind: parameter
        group: common
        label: common
        type: integer
        javaType: int
        deprecated: false
        secret: false
        defaultValue: "3600"
        description: The amount of time a message received at an endpoint is considered valid
        order: 9
      receiveTimeoutMillis:
        kind: parameter
        group: common
        label: common
        type: integer
        javaType: long
        deprecated: false
        secret: false
        defaultValue: "10000"
        description: Setting for specifying amount of time to wait for a Response and/or Acknowledgement can be received from another SIP stack
        order: 10
      stackName:
        kind: parameter
        group: common
        label: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        defaultValue: NAME_NOT_SET
        description: Name of the SIP Stack instance associated with an SIP Endpoint.
        order: 11
      toHost:
        kind: parameter
        group: common
        label: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Hostname of the message receiver. Mandatory setting unless a registry based ToHeader is specified
        order: 12
      toPort:
        kind: parameter
        group: common
        label: common
        type: integer
        javaType: int
        deprecated: false
        secret: false
        description: Portname of the message receiver. Mandatory setting unless a registry based ToHeader is specified
        order: 13
      toUser:
        kind: parameter
        group: common
        label: common
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Username of the message receiver. Mandatory setting unless a registry based custom ToHeader is specified.
        order: 14
      transport:
        kind: parameter
        group: common
        label: common
        type: string
        javaType: java.lang.String
        enum:
        - tcp
        - udp
        deprecated: false
        secret: false
        defaultValue: tcp
        description: Setting for choice of transport protocol. Valid choices are tcp or udp.
        order: 15
      bridgeErrorHandler:
        kind: parameter
        group: consumer
        label: consumer
        type: boolean
        javaType: boolean
        optionalPrefix: consumer.
        deprecated: false
        secret: false
        defaultValue: false
        description: Allows for bridging the consumer to the Camel routing Error Handler which mean any exceptions occurred while the consumer is trying to pickup incoming messages or the likes will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions that will be logged at WARN/ERROR level and ignored.
        order: 16
      consumer:
        kind: parameter
        group: consumer
        label: consumer
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: false
        description: This setting is used to determine whether the kind of header (FromHeaderToHeader etc) that needs to be created for this endpoint
        order: 17
      presenceAgent:
        kind: parameter
        group: consumer
        label: consumer
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: false
        description: This setting is used to distinguish 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.
        order: 18
      exceptionHandler:
        kind: parameter
        group: consumer (advanced)
        label: consumer,advanced
        type: object
        javaType: org.apache.camel.spi.ExceptionHandler
        optionalPrefix: consumer.
        deprecated: false
        secret: false
        description: To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this options is not in use. By default the consumer will deal with exceptions that will be logged at WARN/ERROR level and ignored.
        order: 19
      exchangePattern:
        kind: parameter
        group: consumer (advanced)
        label: consumer,advanced
        type: string
        javaType: org.apache.camel.ExchangePattern
        enum:
        - InOnly
        - RobustInOnly
        - InOut
        - InOptionalOut
        - OutOnly
        - RobustOutOnly
        - OutIn
        - OutOptionalIn
        deprecated: false
        secret: false
        description: Sets the exchange pattern when the consumer creates an exchange.
        order: 20
      addressFactory:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: javax.sip.address.AddressFactory
        deprecated: false
        secret: false
        description: To use a custom AddressFactory
        order: 21
      callIdHeader:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: javax.sip.header.CallIdHeader
        deprecated: false
        secret: false
        description: A custom Header object containing call details. Must implement the type javax.sip.header.CallIdHeader
        order: 22
      contactHeader:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: javax.sip.header.ContactHeader
        deprecated: false
        secret: false
        description: An optional custom Header object containing verbose contact details (email phone number etc). Must implement the type javax.sip.header.ContactHeader
        order: 23
      contentTypeHeader:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: javax.sip.header.ContentTypeHeader
        deprecated: false
        secret: false
        description: A custom Header object containing message content details. Must implement the type javax.sip.header.ContentTypeHeader
        order: 24
      eventHeader:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: javax.sip.header.EventHeader
        deprecated: false
        secret: false
        description: A custom Header object containing event details. Must implement the type javax.sip.header.EventHeader
        order: 25
      expiresHeader:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: javax.sip.header.ExpiresHeader
        deprecated: false
        secret: false
        description: A custom Header object containing message expiration details. Must implement the type javax.sip.header.ExpiresHeader
        order: 26
      extensionHeader:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: javax.sip.header.ExtensionHeader
        deprecated: false
        secret: false
        description: A custom Header object containing user/application specific details. Must implement the type javax.sip.header.ExtensionHeader
        order: 27
      fromHeader:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: javax.sip.header.FromHeader
        deprecated: false
        secret: false
        description: A custom Header object containing message originator settings. Must implement the type javax.sip.header.FromHeader
        order: 28
      headerFactory:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: javax.sip.header.HeaderFactory
        deprecated: false
        secret: false
        description: To use a custom HeaderFactory
        order: 29
      listeningPoint:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: javax.sip.ListeningPoint
        deprecated: false
        secret: false
        description: To use a custom ListeningPoint implementation
        order: 30
      maxForwardsHeader:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: javax.sip.header.MaxForwardsHeader
        deprecated: false
        secret: false
        description: 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
        order: 31
      maxMessageSize:
        kind: parameter
        group: advanced
        label: advanced
        type: integer
        javaType: int
        deprecated: false
        secret: false
        defaultValue: "1048576"
        description: Setting for maximum allowed Message size in bytes.
        order: 32
      messageFactory:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: javax.sip.message.MessageFactory
        deprecated: false
        secret: false
        description: To use a custom MessageFactory
        order: 33
      sipFactory:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: javax.sip.SipFactory
        deprecated: false
        secret: false
        description: To use a custom SipFactory to create the SipStack to be used
        order: 34
      sipStack:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: javax.sip.SipStack
        deprecated: false
        secret: false
        description: To use a custom SipStack
        order: 35
      sipUri:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: javax.sip.address.SipURI
        deprecated: false
        secret: false
        description: To use a custom SipURI. If none configured then the SipUri fallback to use the options toUser toHost:toPort
        order: 36
      synchronous:
        kind: parameter
        group: advanced
        label: advanced
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: false
        description: Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
        order: 37
      toHeader:
        kind: parameter
        group: advanced
        label: advanced
        type: object
        javaType: javax.sip.header.ToHeader
        deprecated: false
        secret: false
        description: A custom Header object containing message receiver settings. Must implement the type javax.sip.header.ToHeader
        order: 38
      viaHeaders:
        kind: parameter
        group: advanced
        label: advanced
        type: array
        javaType: java.util.List<javax.sip.header.ViaHeader>
        deprecated: false
        secret: false
        description: List of custom Header objects of the type javax.sip.header.ViaHeader. Each ViaHeader containing a proxy address for request forwarding. (Note this header is automatically updated by each proxy when the request arrives at its listener)
        order: 39
      implementationDebugLogFile:
        kind: parameter
        group: logging
        label: logging
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Name of client debug log file to use for logging
        order: 40
      implementationServerLogFile:
        kind: parameter
        group: logging
        label: logging
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Name of server log file to use for logging
        order: 41
      implementationTraceLevel:
        kind: parameter
        group: logging
        label: logging
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        defaultValue: "0"
        description: Logging level for tracing
        order: 42
      maxForwards:
        kind: parameter
        group: proxy
        label: proxy
        type: integer
        javaType: int
        deprecated: false
        secret: false
        description: Number of maximum proxy forwards
        order: 43
      useRouterForAllUris:
        kind: parameter
        group: proxy
        label: proxy
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: false
        description: This setting is used when requests are sent to the Presence Agent via a proxy.
        order: 44
  documentation.adoc: "[[Sip-SIPComponent]]\nSIP Component\n~~~~~~~~~~~~~\n\n*Available\
    \ as of Camel 2.5*\n\nThe *sip* component in Camel is a communication component,\
    \ based on the\nJain SIP implementation (available under the JCP license).\n\n\
    Session Initiation Protocol (SIP) is an IETF-defined signaling protocol,\nwidely\
    \ used for controlling multimedia communication sessions such as\nvoice and video\
    \ calls over Internet Protocol (IP).The SIP protocol is an\nApplication Layer\
    \ protocol designed to be independent of the underlying\ntransport layer; it can\
    \ run on Transmission Control Protocol (TCP), User\nDatagram Protocol (UDP) or\
    \ Stream Control Transmission Protocol (SCTP).\n\nThe Jain SIP implementation\
    \ supports TCP and UDP only.\n\nThe Camel SIP component *only* supports the SIP\
    \ Publish and Subscribe\ncapability as described in the\nhttp://www.ietf.org/rfc/rfc3903.txt[RFC3903\
    \ - Session Initiation\nProtocol (SIP) Extension for Event]\n\nThis camel component\
    \ supports both producer and consumer endpoints.\n\nCamel SIP Producers (Event\
    \ Publishers) and SIP Consumers (Event\nSubscribers) communicate event & state\
    \ information to each other using\nan intermediary entity called a SIP Presence\
    \ Agent (a stateful brokering\nentity).\n\nFor SIP based communication, a SIP\
    \ Stack with a listener *must* be\ninstantiated on both the SIP Producer and Consumer\
    \ (using separate ports\nif using localhost). This is necessary in order to support\
    \ the\nhandshakes & acknowledgements exchanged between the SIP Stacks during\n\
    communication.\n\nMaven users will need to add the following dependency to their\
    \ `pom.xml`\nfor this component:\n\n[source,xml]\n------------------------------------------------------------\n\
    <dependency>\n    <groupId>org.apache.camel</groupId>\n    <artifactId>camel-sip</artifactId>\n\
    \    <version>x.x.x</version>\n    <!-- use the same version as your Camel core\
    \ version -->\n</dependency>\n------------------------------------------------------------\n\
    \n[[Sip-URIformat]]\nURI format\n^^^^^^^^^^\n\nThe URI scheme for a sip endpoint\
    \ is as follows:\n\n[source,java]\n-----------------------------------------\n\
    sip://johndoe@localhost:99999[?options]\nsips://johndoe@localhost:99999/[?options]\n\
    -----------------------------------------\n\nThis component supports producer\
    \ and consumer endpoints for both TCP and\nUDP.\n\nYou can append query options\
    \ to the URI in the following format,\n`?option=value&option=value&...`\n\n[[Sip-Options]]\n\
    Options\n^^^^^^^\n\nThe SIP Component offers an extensive set of configuration\
    \ options &\ncapability to create custom stateful headers needed to propagate\
    \ state\nvia the SIP protocol.\n\n\n// component options: START\nThe SIP component\
    \ has no options.\n// component options: END\n\n\n\n// endpoint options: START\n\
    The SIP component supports 45 endpoint options which are listed below:\n\n{% raw\
    \ %}\n[width=\"100%\",cols=\"2,1,1m,1m,5\",options=\"header\"]\n|=======================================================================\n\
    | Name | Group | Default | Java Type | Description\n| uri | common |  | URI |\
    \ *Required* URI of the SIP server to connect to (the username and password can\
    \ be included such as: john:secretmyserver:9999)\n| cacheConnections | common\
    \ | false | boolean | 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.\n| contentSubType | common | plain | String | Setting for contentSubType\
    \ can be set to any valid MimeSubType.\n| contentType | common | text | String\
    \ | Setting for contentType can be set to any valid MimeType.\n| eventHeaderName\
    \ | common |  | String | Setting for a String based event type.\n| eventId | common\
    \ |  | String | Setting for a String based event Id. Mandatory setting unless\
    \ a registry based FromHeader is specified\n| fromHost | common |  | String |\
    \ Hostname of the message originator. Mandatory setting unless a registry based\
    \ FromHeader is specified\n| fromPort | common |  | int | Port of the message\
    \ originator. Mandatory setting unless a registry based FromHeader is specified\n\
    | fromUser | common |  | String | Username of the message originator. Mandatory\
    \ setting unless a registry based custom FromHeader is specified.\n| msgExpiration\
    \ | common | 3600 | int | The amount of time a message received at an endpoint\
    \ is considered valid\n| receiveTimeoutMillis | common | 10000 | long | Setting\
    \ for specifying amount of time to wait for a Response and/or Acknowledgement\
    \ can be received from another SIP stack\n| stackName | common | NAME_NOT_SET\
    \ | String | Name of the SIP Stack instance associated with an SIP Endpoint.\n\
    | toHost | common |  | String | Hostname of the message receiver. Mandatory setting\
    \ unless a registry based ToHeader is specified\n| toPort | common |  | int |\
    \ Portname of the message receiver. Mandatory setting unless a registry based\
    \ ToHeader is specified\n| toUser | common |  | String | Username of the message\
    \ receiver. Mandatory setting unless a registry based custom ToHeader is specified.\n\
    | transport | common | tcp | String | Setting for choice of transport protocol.\
    \ Valid choices are tcp or udp.\n| bridgeErrorHandler | consumer | false | boolean\
    \ | Allows for bridging the consumer to the Camel routing Error Handler which\
    \ mean any exceptions occurred while the consumer is trying to pickup incoming\
    \ messages or the likes will now be processed as a message and handled by the\
    \ routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler\
    \ to deal with exceptions that will be logged at WARN/ERROR level and ignored.\n\
    | consumer | consumer | false | boolean | This setting is used to determine whether\
    \ the kind of header (FromHeaderToHeader etc) that needs to be created for this\
    \ endpoint\n| presenceAgent | consumer | false | boolean | This setting is used\
    \ to distinguish 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.\n| exceptionHandler\
    \ | consumer (advanced) |  | ExceptionHandler | To let the consumer use a custom\
    \ ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this\
    \ options is not in use. By default the consumer will deal with exceptions that\
    \ will be logged at WARN/ERROR level and ignored.\n| exchangePattern | consumer\
    \ (advanced) |  | ExchangePattern | Sets the exchange pattern when the consumer\
    \ creates an exchange.\n| addressFactory | advanced |  | AddressFactory | To use\
    \ a custom AddressFactory\n| callIdHeader | advanced |  | CallIdHeader | A custom\
    \ Header object containing call details. Must implement the type javax.sip.header.CallIdHeader\n\
    | contactHeader | advanced |  | ContactHeader | An optional custom Header object\
    \ containing verbose contact details (email phone number etc). Must implement\
    \ the type javax.sip.header.ContactHeader\n| contentTypeHeader | advanced |  |\
    \ ContentTypeHeader | A custom Header object containing message content details.\
    \ Must implement the type javax.sip.header.ContentTypeHeader\n| eventHeader |\
    \ advanced |  | EventHeader | A custom Header object containing event details.\
    \ Must implement the type javax.sip.header.EventHeader\n| expiresHeader | advanced\
    \ |  | ExpiresHeader | A custom Header object containing message expiration details.\
    \ Must implement the type javax.sip.header.ExpiresHeader\n| extensionHeader |\
    \ advanced |  | ExtensionHeader | A custom Header object containing user/application\
    \ specific details. Must implement the type javax.sip.header.ExtensionHeader\n\
    | fromHeader | advanced |  | FromHeader | A custom Header object containing message\
    \ originator settings. Must implement the type javax.sip.header.FromHeader\n|\
    \ headerFactory | advanced |  | HeaderFactory | To use a custom HeaderFactory\n\
    | listeningPoint | advanced |  | ListeningPoint | To use a custom ListeningPoint\
    \ implementation\n| maxForwardsHeader | advanced |  | 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\n\
    | maxMessageSize | advanced | 1048576 | int | Setting for maximum allowed Message\
    \ size in bytes.\n| messageFactory | advanced |  | MessageFactory | To use a custom\
    \ MessageFactory\n| sipFactory | advanced |  | SipFactory | To use a custom SipFactory\
    \ to create the SipStack to be used\n| sipStack | advanced |  | SipStack | To\
    \ use a custom SipStack\n| sipUri | advanced |  | SipURI | To use a custom SipURI.\
    \ If none configured then the SipUri fallback to use the options toUser toHost:toPort\n\
    | synchronous | advanced | false | boolean | Sets whether synchronous processing\
    \ should be strictly used or Camel is allowed to use asynchronous processing (if\
    \ supported).\n| toHeader | advanced |  | ToHeader | A custom Header object containing\
    \ message receiver settings. Must implement the type javax.sip.header.ToHeader\n\
    | viaHeaders | advanced |  | List | List of custom Header objects of the type\
    \ javax.sip.header.ViaHeader. Each ViaHeader containing a proxy address for request\
    \ forwarding. (Note this header is automatically updated by each proxy when the\
    \ request arrives at its listener)\n| implementationDebugLogFile | logging | \
    \ | String | Name of client debug log file to use for logging\n| implementationServerLogFile\
    \ | logging |  | String | Name of server log file to use for logging\n| implementationTraceLevel\
    \ | logging | 0 | String | Logging level for tracing\n| maxForwards | proxy |\
    \  | int | Number of maximum proxy forwards\n| useRouterForAllUris | proxy | false\
    \ | boolean | This setting is used when requests are sent to the Presence Agent\
    \ via a proxy.\n|=======================================================================\n\
    {% endraw %}\n// endpoint options: END\n\n[[Sip-SendingMessagestofromaSIPendpoint]]\n\
    Sending Messages to/from a SIP endpoint\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\
    \n[[Sip-CreatingaCamelSIPPublisher]]\nCreating a Camel SIP Publisher\n++++++++++++++++++++++++++++++\n\
    \nIn the example below, a SIP Publisher is created to send SIP Event\npublications\
    \ to  +\n a user \"agent@localhost:5152\". This is the address of the SIP Presence\n\
    Agent which acts as a broker between the SIP Publisher and Subscriber\n\n* using\
    \ a SIP Stack named client\n* using a registry based eventHeader called evtHdrName\n\
    * using a registry based eventId called evtId\n* from a SIP Stack with Listener\
    \ set up as user2@localhost:3534\n* The Event being published is EVENT_A\n* A\
    \ Mandatory Header called REQUEST_METHOD is set to Request.Publish\nthereby setting\
    \ up the endpoint as a Event publisher\"\n\n[source,java]\n----------------------------------------------------------------------------------------------------------------------------------------------\n\
    producerTemplate.sendBodyAndHeader(  \n    \"sip://agent@localhost:5152?stackName=client&eventHeaderName=evtHdrName&eventId=evtid&fromUser=user2&fromHost=localhost&fromPort=3534\"\
    ,   \n    \"EVENT_A\",  \n    \"REQUEST_METHOD\",   \n    Request.PUBLISH);  \n\
    ----------------------------------------------------------------------------------------------------------------------------------------------\n\
    \n[[Sip-CreatingaCamelSIPSubscriber]]\nCreating a Camel SIP Subscriber\n+++++++++++++++++++++++++++++++\n\
    \nIn the example below, a SIP Subscriber is created to receive SIP Event\npublications\
    \ sent to  +\n a user \"johndoe@localhost:5154\"\n\n* using a SIP Stack named\
    \ Subscriber\n* registering with a Presence Agent user called agent@localhost:5152\n\
    * using a registry based eventHeader called evtHdrName. The evtHdrName\ncontains\
    \ the Event which is se to \"Event_A\"\n* using a registry based eventId called\
    \ evtId\n\n[source,java]\n----------------------------------------------------------------------------------------------------------------------------------------------------------\n\
    @Override  \nprotected RouteBuilder createRouteBuilder() throws Exception {  \n\
    \    return new RouteBuilder() {  \n        @Override  \n        public void configure()\
    \ throws Exception {    \n            // Create PresenceAgent  \n            from(\"\
    sip://agent@localhost:5152?stackName=PresenceAgent&presenceAgent=true&eventHeaderName=evtHdrName&eventId=evtid\"\
    )  \n                .to(\"mock:neverland\");  \n                  \n        \
    \    // Create Sip Consumer(Event Subscriber)  \n            from(\"sip://johndoe@localhost:5154?stackName=Subscriber&toUser=agent&toHost=localhost&toPort=5152&eventHeaderName=evtHdrName&eventId=evtid\"\
    )  \n                .to(\"log:ReceivedEvent?level=DEBUG\")  \n              \
    \  .to(\"mock:notification\");  \n                  \n        }  \n    };  \n\
    }  \n----------------------------------------------------------------------------------------------------------------------------------------------------------\n\
    \n*The Camel SIP component also ships with a Presence Agent that is meant\nto\
    \ be used for Testing and Demo purposes only.* An example of\ninstantiating a\
    \ Presence Agent is given above.\n\nNote that the Presence Agent is set up as\
    \ a user agent@localhost:5152\nand is capable of communicating with both Publisher\
    \ as well as\nSubscriber. It has a separate SIP stackName distinct from Publisher\
    \ as\nwell as Subscriber. While it is set up as a Camel Consumer, it does not\n\
    actually send any messages along the route to the endpoint\n\"mock:neverland\"\
    .\n"
